tags/kdeStyXman's globhttp://grulicueva.homelinux.net/~mdione/glob//tags/kde/StyXman's globikiwiki2009-04-08T04:27:04Zpycamp-2009http://grulicueva.homelinux.net/~mdione/glob//posts/pycamp-2009/2009-04-08T04:27:04Z2009-04-08T04:27:04Z
<p>Acaba de terminar la edición 2009 de pyCamp. Esta vez vinieron
cerca de 40 personas, lo cual hizo que hubiera más proyectos dando
vueltas y mas gente en los proyectos. Fueron 4 días fantásticos
llenos de ideas, código, reuniones, juegos, algo de alcohol y mucho
mas. A diferencia del año pasado, esta vez vienieron algunos
audaces con familia, no sé cómo les habrá ido.</p>
<p>Este año estuve mucho mas enganchado. El primer día hicimos un
schedule cuasi definitivo y en el momento se me ocurrió hacer cosas
con Fuse y Python. Cuando tocó el slot, di una charla de cómo
funciona Fuse y algunas puntas de cómo implementar file systems con
él. Al final del evento yo había terminado el wrapper que venía
haciendo hace unas semanas (ok, ok, falta <code>statvfs</code>) y
<a href="http://perrito666.com.ar">perrito</a> se hizo un
filesystem para acceder los iPod. Lucio me hizo prometer ver cómo
combinar Fuse async con Twisted. También le estuve explicando
<code>ctypes</code> al Polako, con lo que creo que terminé de
entender el módulo y me ayudó a entender algunas cosas que había
hecho para el wrapper.</p>
<p>También estuve en el diseño y (re)implementación del bot de irc.
En apenas 2 días y medio ya tenemos el core y unos cuantos plugins,
y hay varios desarrolladores haciendo mas. Sólo faltan implementar
pedezos de infraestructura, sobre todo la parte de bases de datos,
pero me veo metiendo un par de plugins mas y ponerla en producción
muy muy pronto (en relaidad perrito le va a dar hosting). También
fue una oportunidad para (re)aprender Twisted, y enterarse de cosas
como que <a href=
"http://twistedmatrix.com/projects/core/documentation/howto/gendefer.html#auto2">
no podés hacer asincrónico un proceso sincrónico</a>, y de aprender
de boca de Guillo cómo usar <code>bzr</code> para laburar entre los
6 u 8 que metíamos código.</p>
<p>También estuve renegando los dos primeros días con el applet de
batería de KDE4. Terminé encontrando (un bug en
Solid)[https://bugs.kde.org/show_bug.cgi?id=187600] y aprendiendo
detalles sobre Hal, D-Bus, algunos bastante oscuros y bizarros. Al
mismo tiempo estuve viendo cómo se comportan los algoritmos de
recarga de batería y de estimación de los tiempos de descarga y de
descarga. Resulta que cuando está terminando de cargar se empieza a
estirar el tiempo y los últimos 5 minutos pueden termiar siendo
20.</p>
<p>Estuvo genial poder conocer más gente y de volver a ver algunas
caras conocidas (hace rato que no estaba en un evento de alguna
comunidad). Entre los nuevos encontré a gente de <a href=
"http://kde.org.ar">Kde-ar</a> como Leo u otros jugando con PyQt.
Me encantó volver a sentir que programaba, ver unos proyectos
arrancar y otros continuar a velocidades de la hostia, con features
apareciendo como hongos y bugs desapareciendo como... bueno, no es
una buena fecha para hablar de desapariciones :|</p>
<p>El último sprint estuvo genial; monitoreen la lista y/o el canal
para enterarse de los resultados ;-)</p>
<p><a href="http://grulicueva.homelinux.net/~mdione/glob//tags/kde/../python/">python</a> <a href="http://grulicueva.homelinux.net/~mdione/glob//tags/kde/../twisted/">twisted</a> <a href="http://grulicueva.homelinux.net/~mdione/glob//tags/kde/../bazaar/">bazaar</a> <a href="http://grulicueva.homelinux.net/~mdione/glob//tags/kde/../pyar/">pyar</a> <span class="selflink">kde</span></p>
man-and-batteryhttp://grulicueva.homelinux.net/~mdione/glob//posts/man-and-battery/2009-03-23T20:41:16Z2009-03-23T20:41:16Z
<p>When I arrived to pyCamp (I'm at <a href=
"http://www.python.com.ar/moin/PyCamp/2009">pyCamp</a>!) I was
fighting with a battery applet bug. When the battery is almost full
the applet got 'confused' and thought the battery just finished
charging, and if it where showing the remaining time, it switched
to charge percentage, which actually showed that it wasn't fully
charged, but somewhere near 96% or so (this is wrong assuming the
battery can fully charge up to 100%, as my 6 month old Dell
battery). The problem was really that my code was checking if the
remaining time were 0 or not. So I started from there down.</p>
<p>Down was it indeed. Seems like from time to time, when the
bettry is filling up, one can't ask hal about the remaining time.
Using <code>qdbus</code> to ask <code>hal</code> directly we get
this answer:</p>
<pre>
<code>Error: org.freedesktop.Hal.NoSuchProperty
No property battery.remaining_time on device
</code>
</pre>
<p>This situation is not stable; sometimes I get the value I want.
Not only that, when the battery is full, the values get horrobly
wrong. Here's some samples (values are seconds since epoch and
remaining time in seconds):</p>
<pre>
<code>1237677446 1134
1237677746 261
1237677806 235
1237677866 313
1237677927 190
# at some moment in this gap the battery is fully charged
1237678167 188836
1237678227 152509
1237678287 112581
</code>
</pre>
<p>So I changed the algorithm to a more correct one; that is, ask
if the battery is charging or discharging or none of those (in that
case the battery is full) and show the time or the percentage
accordingly. This works, except that it doesn't.</p>
<p>The problem has shifted to another place. Now I don't get the
signal when <code>is_chaging</code> goes false. With <code>lshal
-m</code> I can see the event:</p>
<pre>
<code>11:48:46.823: computer_power_supply_battery_BAT0 property battery.rechargeable.is_charging = false
</code>
</pre>
<p>but I keep getting <code>"Charging"</code> from this code:</p>
<pre>
<code>battery_data.value()["State"].toString()
</code>
</pre>
<p>where <code>battery</code> is a powermanagement data engine.
Interesting enough, if I close the applet and load it again (as
anyone debugging plasmoids, I'm using <code>plasmoidviewer</code>),
that line returns the correct value of <code>"NoCharge"</code>,
which is what's spected.</p>
<p>I will try to file a bug against the data engine, or maybe
Solid, and wait for the fix before comitting the fix to this
bug.</p>
<hr />
<p>Update: it ended being <a href=
"https://bugs.kde.org/show_bug.cgi?id=187600">a bug in Solid</a>,
after all. I posted a fix.</p>
<p><span class="selflink">kde</span></p>
kde-cba-primera-reunionhttp://grulicueva.homelinux.net/~mdione/glob//posts/kde-cba-primera-reunion/2009-03-06T04:03:43Z2009-03-06T03:45:30Z
<p>No somos muchos en Córdoba. Tal vez uno 10, tal vez menos. Pero
tenemos un objetivo común: hacer KDE, y hacerlo una mejor
plataforma para nosotros, y para todo el mundo. Este objetivo tan
amplio incluye desde desarrollar aplicaciones o simples features,
arreglar bugs, hasta reportarlos, difundir un poco su potencia y
<em>lindura</em> (no me pidan redacción a esta hora de la
noche).</p>
<p>Por eso nos juntamos esta noche a tomar unas cervezas y ver en
qué parte de este objetivo quiere estar cada uno, y hasta dónde
cree llegar hoy día y
<em>slogan-de-una-empresa-gigantesca-de-software</em>. <a href=
"http://grulicueva.homelinux.net/~mdione/gallerpy/index.py/pictures/kde-ar/M01CBA/IMG_5571.JPG">
Estuvimos</a> Emanuel <em>emanuel</em> Sartori, Franco
<em>frapell</em> Pellegrini, Manuel <em>elpreto</em> Ramírez y yo.
Tomamos unos cafecitos, comimos unos tostaditos y charlamos.</p>
<p>Cosas concretas aún no tenemos; somos pocos, y si bien eso
parece simplificar la organización, hace que sea difícil que
pensemos en exactamente lo mismo. Lo que sí sabemos que ésta no es
la última reunión, y que en las siguientes vamos a estar viendo de
hacer lo que cada uno quiere aprovechando lo que el otro sabe. Esto
puede parecer poco, pero la idea es fortalecernos con el
tiempo.</p>
<p>Aún no hay fecha fija; queremos que sea la semana que viene,
pero empiezan las clases y eso significa cambios de horarios para
muchos. Ya avisaremos con anticipación en <a href=
"https://listas.usla.org.ar/cgi-bin/mailman/listinfo/kde-ar">la
lista kde-ar</a>.</p>
<p><span class="selflink">kde</span> <a href="http://grulicueva.homelinux.net/~mdione/glob//tags/kde/../kde-ar/">kde-ar</a></p>
compilando-kde4http://grulicueva.homelinux.net/~mdione/glob//posts/compilando-kde4/2009-03-06T04:03:34Z2009-02-16T18:59:25Z
<p><a href=
"http://listas.usla.org.ar/pipermail/kde-ar/2009-February/000146.html">
Estoy organizado un code jam en Córdoba</a> y <a href=
"http://perezmeyer.blogspot.com/">Lisandro</a> <a href=
"http://listas.usla.org.ar/pipermail/kde-ar/2009-February/000149.html">
está organizando una en Bahía Blanca</a>. La idea es que nos
juntemos a laburar un poco en KDE, aprendiendo y haciendo o
features o cerrando bugs o lo que sea. En función de eso estaría
piola que cada uno ya lleve un kde trunk compiladito, al menos la
parte que les interese. Este post apunta a explicar cómo hacerlo.
Casi toda la info la saqué en su momento de <a href=
"http://techbase.kde.org/Getting_Started">techbase</a> y/o
preguntando en IRC, listas de correo y hasta en DebConf.</p>
<p>Veamos cómo se organiza el código de KDE. Éste reside en un
repositorio subversion que tiene dos formas de acceso: uno
autenticado por ssh para los desarrolladores que tienen cuenta y
uno anónimo que es de sólo lectura. Los que ya tienen cuenta ya
deberían saber usarlo y hasta cómo compilar, así que para ellos
este post no sirve. Cuando mencioné a trunk en el párrafo anterior
me refería a la rama principal de este repo.</p>
<p>A su vez el código está diseminado en distintos módulos:
kdesupport, kdelibs, kdepimlibs, kdebase, etc. Estos módulos y
otras porciones de código que andan dando vueltas están en un
árbol:</p>
<pre>
<code>anonsvn.kde.org/home/kde/
+ branches
| + ...
+ tags
| + ...
+ trunk
+ extragear
| + ...
+ kdereview
| + ...
+ playground
| + ...
+ kdesupport
| + ...
+ qt-copy
+ KDE
+ kdebase
+ kdegraphics
+ kdelibs
+ kdemultimedia
+ kdenetwork
+ kdepim
+ kdepimlibs
+ ...
</code>
</pre>
<p><a href="http://websvn.kde.org/">Pueden ver este mismo árbol por
web</a>. La rama <code>KDE</code> es la que tiene el código de los
distintos módulos de KDE. <code>kdesupport</code> contiene un
montón de software que no es de KDE, pero que es necesario para
correrlo. Allí van a encontrar las versiones adecuadas de los
mismos, y por lo general es muy aconsejable compilarlo.
<code>qt-copy</code> es una copia del código de Qt a su última
versión, con el agregado de varios parches. <code>kdereview</code>
son proyectos que están siendo considerados para la inclusión en
KDE. <code>playground</code> está llenos de proyectos a medias o
casi completos, pero que no tienen pinta de estar listos para
revisión. Los nuevos proyectos normalmente nacen y/o crecen allí.
Sin embargo, mucho de lo que hay ahí funciona. Por último,
<code>extragear</code> contiene aplicaciones KDE que no se ajustan
al ciclo de desarrollo de KDE (actualemnte, un release menor cada 6
meses). En este directorio podemos encontrar aplicaciones grosas
como el <code>amarok</code>, el <code>k3b</code> o el
<code>digikam</code>.</p>
<p>Una instalación mínima de KDE consta de los módulos
<code>qt-copy</code>, <code>kdesupport</code>,
<code>kdelibs</code>, <code>kdepimlibs</code> y
<code>kdebase</code>. Compilarlos uno por uno es un garrón, por lo
que vamos a usar <a href=
"http://kdesvn-build.kde.org/">kdesvn-build</a>, un script que lo
automatiza todo. Pero antes, las dependencias.</p>
<p>Por un lado necesitamos las herramientas de configuración y de
compiloación. Éstas son <code>cmake</code> y <code>g++</code> (en
realidad es cualquier compilador de C++, pero para hacerla fácil me
voy a limitar a <code>g++</code>. También me voy a limitar a
distros basadas en Debian, como *buntu, sólo porque es lo que más
conozco.). El <code>cmake</code> de Debian Sid es el 2.6.0 y desde
hace un rato KDE necesita el 2.6.2 [ <strong>Update: 2.6.2 acaba de
entrar en Sid</strong> ], así que capaz haya que bajar y compilar
ése también. Si lo hacen, les aconsejo que corran el
<code>configure</code> con la opción
<code>--prefix=/usr/local</code> o mejor, apuntando a algún lado de
su propio home. En mi caso, instalé todo en
<code>~/local/soft/kde4</code>.</p>
<p>Luego están las dependencias de cada módulo per se. La siguiente
es una tabla que he ido creando con el tiempo y que trata de ser
tan completa como pude, pero seguro se me ha escapado más de un
paquete. Los nombres corresponden a los de los paquetes en Debian
Sid, y que deben ser muy similares a los de los *buntu. En cada
módulo encontramos dos grupos de dependencias: las estrictamente
necesarias, sin las cuales el módulo no compila, seguido de una
línea en blanco, seguida por otra lista con las dependencias
opcionales. Estas dependencias hacen que el módulo ofrezca más
funcionalidad. Yo puse las que me interesan; después veremos cómo
ver qué otras son posibles.</p>
<pre>
<code>cmake:
~~~~~~
libncurses5-dev
qt-copy:
~~~~~~~~
libssl-dev
libpng12-dev
zlib1g-dev
libsqlite3-dev
libxinerama-dev
libdbus-1-dev
libjpeg62-dev
libsm-dev
kdesupport:
~~~~~~~~~~~
cmake
mysql
libclucene-dev
doxygen
dotty
librdf0-dev
libbz2-dev
libxml2-dev
libexiv2-dev
libgstreamer0.10-dev
libgstreamer-plugins-base0.10-dev
libgl1-mesa-dev
libgamin-dev
sun-java6-jdk
kdelibs:
~~~~~~~~
libsm-dev
libpcre3-dev
libgif-dev
libxrender-dev
libglu1-mesa-dev
libopenexr-dev
libenchant-dev
libgamin-dev
kdepimlibs
~~~~~~~~~~
libical-dev
libgpg-error-dev
libgpgme11-dev
libboost-dev
libsasl2-dev
kdebase
~~~~~~~
libfontconfig1-dev
libxt-dev
libsensors4-dev
libxklavier12-dev
libusb-1.0-0-dev
libxcomposite-dev
libxdamage-dev
libxtst-dev
libusb++-dev
libasound2-dev
libxss-dev
libxft-dev
libxkbfile-dev
kdemultimedia
~~~~~~~~~~~~~
libvorbis-dev
libcdparanoia0-dev
libxine-dev
kdegraphics
~~~~~~~~~~~
liblcms1-dev
libgphoto2-2-dev
libxxf86vm-dev
libimlib2-dev
kdepim
~~~~~~
libopensync0-dev
libpisock-dev
extragear
~~~~~~~~~
libjasper-dev
kdenetwork
~~~~~~~~~~
libavahi-compat-libdnssd-dev
</code>
</pre>
<p>Muchas, eh? Y éstos son sólo algunos de los módulos.</p>
<p>Ah! Antes de que nos mandemos a compilar, tenemos que preparar
tres cosas: un directorio donde van a ir las fuentes, otro donde
vamos a compilar y otro donde lo vamos a instalar. Yo personalmente
prefiero mantener todo a nivel de usuario, por lo que las fuentes
las pongo en <code>~/src/system/kde4</code>, compilo en
<code>build</code> dentro de ese directorio y lo instalo en
<code>~/local/soft/kde4</code>. El primero en realidad puede ser
cualquier directorio, realmente no es relevante, salvo por el
espacio que ocupa. Las fuentes de cada módulo (en MiB):</p>
<pre>
<code>316 extragear[*]
549 kdebase
42 kdegraphics
185 kdelibs
18 kdemultimedia
106 kdenetwork
156 kdepim
41 kdepimlibs
10 kdereview
160 kdesupport
81 playground[*]
570 qt-copy
</code>
</pre>
<p>Los marcados con [*] no están completos, sino que elegí algunas
cosas que me interesaban. Los directorios donde compilamos, también
en MiB:</p>
<pre>
<code>2146 build/extragear
1152 build/kdebase
253 build/kdegraphics
971 build/kdelibs
99 build/kdemultimedia
570 build/kdenetwork
1045 build/kdepim
194 build/kdepimlibs
33 build/kdereview
623 build/kdesupport
264 build/playground
1441 build/qt-copy
</code>
</pre>
<p>El último directorio sí me parece relevante; si no les gusta
instalarlo en su home, les aconsejo que lo hagan en
<code>/opt</code> o al menos en <code>/usr/local</code>, de forma
de no destruir lo que haya instalado sus sistemas.</p>
<p>Ok, suficiente introducción, vamos a los bifes. Bajamos
<code>kdesvn-build</code> en el directorio de compilación, lo
descomprimimos y lo configuramos. La configuración pasa por darle
algunos detalles de qué, cómo y dónde compilar e instalar. Pueden
tomar del <code>kdesvn-buildrc-sample</code> que viene incluido o
tomar <a href=
"http://grulicueva.homelinux.net/~mdione/kde4/kdesvn-buildrc">del
que estoy usando yo</a>. Revísenlo bien; la mayoría del trabajo es
configurar la sección <code>global</code>, que es la que está al
principio del archivo; está bastante comentada. Vean en particular
<code>source-dir</code>, <code>build-dir</code>,
<code>kdedir</code> (donde va a ser instalado), <code>qtdir</code>
(donde vamos a instalar <code>qt-copy</code>; yo lo puse en el
mismo directorio que todo kde4), <code>svn-server</code> (ojo que
mi copia apunta al servicio autenticado, pero tiene el anónimo
comentado), <code>cmake-options</code>, y lo que mas o menos les
pinte. Ponemos este archivo en <code>~/.kdesvn-buildrc</code> y ya
casi estamos.</p>
<p>Otra cosa que hay que hacer es poner todo un conjunto de
variables de entorno a tono. Yo robé mucho de <a href=
"http://techbase.kde.org/Getting_Started/Increased_Productivity_in_KDE4_with_Scripts/.bashrc">
un script en techbase</a>. A diferencia de todos los tutoriales en
techbase, en vez de crear todo un usuario para hacer toda la bola,
yo simplemente puse todas esas variables en <a href=
"http://grulicueva.homelinux.net/~mdione/kde4/environ.sh">un
script</a> que podía cargar a piaccere. Allí tambié puse que el
directorio donde KDE4 va a guardar la configuración es
<code>.kde4-dev</code>, así no me pisa la configuración de KDE3.
también péguenle una revisada así pega con lo que tienen puesto en
otros lados.</p>
<p>Bueno, ya estamos listos. Levantamos las variables de entorno y
lanzamos el script de compilación:</p>
<pre>
<code>$ source environ.sh
$ ./kdesvn-build-1.7.1/kdesvn-build --reconfigure --verbose --color
</code>
</pre>
<p>¡Eso es todo! El script saca los módulos unos a uno de svn; a
medida que los tiene bajado los va compilando e instalando en
paralelo. La primera vez tarda muchisimo, sobre todo si
configuraron muchos módulos. Recomiendo compilar primero lo mínimo
indispensable, dejarlo compilado de noche, y luego ir compilando de
a pedacitos.</p>
<p>El script va dejando en <code>log/latest</code> logs de la
compilación de cada módulo. Allí podemos encontrar la salida del
proceso de configuración, donde veremos qué dependencias encontró y
cuáles faltan. Si hay errores deja un <code>error.log</code> con la
falla.</p>
<p>Para ejecutar la bestia, la cosa no se complica mucho mas. Yo no
sé bien cómo hacer para que me lo tome el DM de turno (KDM, GDM, el
que sea), por lo que lo lanzo a mano desde una terminal de
texto:</p>
<pre>
<code>$ source ~/src/system/kde4/environ.sh
$ xinit /home/mdione/local/soft/kde4/bin/startkde
</code>
</pre>
<p>También podemos lanzarlo en un Xephir, que es como un X dentro
de X. Eso sí, no le pidan OpenGL (necdesario para los efectos de
escritorio). Abrimos un <code>konsole</code> o la terminal que
prefieran y:</p>
<pre>
<code>$ Xephyr :1 -screen 1280x800 -ac -extension GLX
$ export DISPLAY=:1
$ ~/local/soft/kde4/bin/startkde
</code>
</pre>
<p>Una forma truchísima mal es entrar en una sesión failsafe
(*buntu le llama 'Terminal a prueba de fallos' últimamente). Esto
nos da un X pelado con una <code>xterm</code> y ni siquiera un
Window Manager. En la terminal entramos levantamos el entorno y
lanzamos KDE4:</p>
<pre>
<code>$ source ~/src/system/kde4/environ.sh
$ ~/local/soft/kde4/bin/startkde
</code>
</pre>
<p>Voilá. Sólo asegúrensé no cerrar nunca esa xterm, sino se les
cierra todo sin preguntar nada.</p>
<p>Un detalle es que el sistema queda solamente en inglés. Ya me
voy a sentar a ver cómo meter los módulos de traducción al
español.</p>
<p>Ok, ya estoy cansadísimo y esto es larguísimo. Cualquier duda la
seguimos en el thread en <a href=
"http://listas.usla.org.ar/pipermail/kde-ar/">kde-ar</a> y lo vamos
puliendo.</p>
<p><span class="selflink">kde</span></p>
kde-developerhttp://grulicueva.homelinux.net/~mdione/glob//posts/kde-developer/2009-01-22T04:24:04Z2009-01-22T03:40:39Z
<p>Back in the days when the company I worked for announced that it
would completely shut down in less than 2 months, I felt somewhat
free. You see, around that time I was already thinking about what I
wanted to be my professional future and that didn't match what I
was doing. As I said <a href=
"http://grulicueva.homelinux.net/~mdione/glob/posts/adios-except/">in
a previous post</a>, I really liked that company, so deciding what
to do was really hard. So when the shutdown was announced there was
no other option: I had to pursue my dreams.</p>
<p>What drems were those? To work in free software. Not only with
free software, as I already did in that job (I was the sysadmin),
but coding, creating, fixing, twisting free software. Which prject?
KDE, of course. It's one of the most influencing free software for
me, one of the ones I most admire, and one of the ones I most
closely followed since I knew it (I think the only other one is
Debian).</p>
<p>I followed the KDE1.x series upgrading from on version to
another of Mandriva, and when KDE2.x started appearing in CVS I
already was riding Debian. Compiling KDE once a week was a
trademark of mine in my local free software group, everybody knew
me for being a KDE fan and all. Later came KDE3.x and I kept
compiling, until it was so mature that it didn't gave me the kicks
anymore. Also I was already getting some serious works, so I
couldn't afford to loose my desktop because I had a compile error
or everything just crashed (not that it happened very often, I just
couldn't risk it), like the problem I had just before giving a
presentation about KDE more than 5 years ago.</p>
<p>And almost never in all those years (8, maybe? no, a little over
9 years! I made my firt post to [kde-devel] in Nov 1999!) I added a
single line of code. I remember hacking a couple of features in
KDE2.something, and even mentioned them in [kde-devel], but never
pushed them enough, I guess. Until last month.</p>
<p>I joined <code>#kde-devel</code>, just to hang around, on
November 2008. On the 8th, DanielW mentioned he had problem with a
EINTR error. He though it was Soprano, but after 40 minutes of
digging I found the culprit, and 3 more hours until I was really
sure and developed a solution, which was not very clean, and 2 more
hours of hacking until I was pleased with the patch and DanielW
said it was fixed. Later, in the next day, DanielW and me decided
to file the patch. On Nov 10th he added the patch to the
<code>patches</code> dir in <code>qt-copy</code> and my first ever
contibution to KDE, and no less that fixing QT! I just couldn't
stop doing backflips in my office (well, not actually doing them,
I'm not in that good shape, just felt like it)!</p>
<p>Unluckly that patch lacked a <code>return</code> somewhere, so
the next day half of the KDE developers were left with no DNS
resolution (or any network, for that matter). aseigo found that my
patch was the culprit and disabled it, so all the happyness I still
had about that patch turned into embarrasment. Later that day I
wrote a much better patch that not only fixed that, but also
refactored some code.</p>
<p>Fortunately that didn't make me dissapear. I kept helping here
and there, specially in Plasma, more specifically in those
plasmoids I already used and that already were nagging me to fix
this or code that feature. Sebastian Kügler help me twice with my
patches, once for the digital clock, making it properly draw the
date and/or timezone bellow in horizontal panels, and once for the
battery plasmoid, making it show the remaining time until either
the battery runs out or the battery gets fully recharged, depending
on the AC was plugged or not; the latter was a feature I though
of.</p>
<p>So, what happened is that he told me to apply for a svn account,
which I almost promptly did (there was a hiatus forced by my
vacations; not that I missed hacking :) and today I completed
hopping all the hops and got my new shiny svn account. I spent the
rest of the evening compiling KDE4 again and writing this post.</p>
<p>Why did I wrtite it? Not only because I'm really proud of it,
but because I wanted to stress two things: that the KDE community
is really welcoming when you express your intentions to help, and
that getting involved into it is really simple: you just need to
want it to happen and to actually start doing it. The latter was
something I never realized until I made it happen.</p>
<p>But this is just the begining. As I said before I would really
like to get paid to help in KDE. The job offer I was eyeing has
just been covered, but there will be plenty of opportunities, and
I'm still a newbie. Now I'll just keep helping in whatever I like
to, and let's see what the future brings. And sebas, I really
appreciate your help.</p>
<p><span class="selflink">kde</span></p>