Simple Libravatar service

So, since recently bugs.debian.org has started using libravatar avatars. Not yet the federated service, but that’s supposedly in the works. But for that, one of course need to run each own service. Which I wanted to do. In a simple way.

So I did it.

_avatars._tcp.pusling.com. 43200 IN SRV 10 10 80 static.pusling.com.

and in my root dir for that one I have source/ and avatar/

$ ls
avatar source

In source, I have default.png which I’m serving and a series of avatars for various email addresses

$ ls source/
debian@pusling.com default.png

and then I have a simple script to generate the right file names:

#! /bin/sh

(cd avatar;
ls | while read file ; do [ -L $file ] && rm $file ; done
)
for i in source/*@* ; do ln -s ../$i avatar/$(echo -n $(basename $i) | sha256sum | sed ‘s/-//’) ; done
for i in source/*@* ; do ln -s ../$i avatar/$(echo -n $(basename $i) | md5sum | sed ‘s/-//’) ; done

and the last piece of magic to get everything to work:

$ cat avatar/.htaccess
ErrorDocument 404 “/source/default.png”
ForceType image/png

<Files “index.html”>
ForceType text/html
</Files>

and a set of index.html files created with ‘touch’.

So there you go. A simple libravatar service, ignoring some pieces of the spec, but it should be good enough for most people. I might save my rants about the libravatar spec for another day. But it involves implementing a complete redirecting service and scaling of images.

When will debian.org and kde.org start providing avatar services?

Posted in debian, english, kde, opensourcedays, Pocket projects

Nogen fra NemId?

Er der nogen fra NemId der læser med her? Jeg kan ikke få jeres supportformular til at virke. Og jeg kan ikke få jeres applet til at virke når jeg skal logge ind på skat.dk.

Tilgengæld har jeg noget i .xsession-errors der sikkert vil glæde jer.

java.util.zip.ZipException: error in opening zip file
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.(ZipFile.java:131)
at java.util.jar.JarFile.(JarFile.java:150)
at java.util.jar.JarFile.(JarFile.java:101)
at net.sourceforge.jnlp.tools.JarSigner.verifyJar(JarSigner.java:287)
at net.sourceforge.jnlp.tools.JarSigner.verifyJars(JarSigner.java:247)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.verifyJars(JNLPClassLoader.java:902)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.initializeResources(JNLPClassLoader.java:390)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.(JNLPClassLoader.java:168)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:249)
at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:575)
at net.sourceforge.jnlp.Launcher.getApplet(Launcher.java:548)
at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:729)
java.util.zip.ZipException: error in opening zip file
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.(ZipFile.java:131)
at java.util.jar.JarFile.(JarFile.java:150)
at java.util.jar.JarFile.(JarFile.java:101)
at net.sourceforge.jnlp.tools.JarSigner.verifyJar(JarSigner.java:287)
at net.sourceforge.jnlp.tools.JarSigner.verifyJars(JarSigner.java:247)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.verifyJars(JNLPClassLoader.java:902)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.initializeResources(JNLPClassLoader.java:390)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.(JNLPClassLoader.java:168)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:249)
at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:575)
at net.sourceforge.jnlp.Launcher.getApplet(Launcher.java:548)
at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:729)
net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: Could not initialize applet.
at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:604)
at net.sourceforge.jnlp.Launcher.getApplet(Launcher.java:548)
at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:729)
Caused by: net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: A fatal error occurred while trying to verify jars.
at net.sourceforge.jnlp.runtime.JNLPClassLoader.initializeResources(JNLPClassLoader.java:396)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.(JNLPClassLoader.java:168)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:249)
at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:575)
... 2 more
Caused by:
net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: A fatal error occurred while trying to verify jars.
at net.sourceforge.jnlp.runtime.JNLPClassLoader.initializeResources(JNLPClassLoader.java:396)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.(JNLPClassLoader.java:168)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:249)
at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:575)
at net.sourceforge.jnlp.Launcher.getApplet(Launcher.java:548)
at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:729)
java.lang.NullPointerException
at net.sourceforge.jnlp.NetxPanel.runLoader(NetxPanel.java:99)
at sun.applet.AppletPanel.run(AppletPanel.java:380)
at java.lang.Thread.run(Thread.java:636)
java.lang.NullPointerException
at sun.applet.AppletPanel.run(AppletPanel.java:430)
at java.lang.Thread.run(Thread.java:636)
java.lang.Exception: Applet initialization timeout
at sun.applet.PluginAppletViewer.handleMessage(PluginAppletViewer.java:637)
at sun.applet.PluginStreamHandler.handleMessage(PluginStreamHandler.java:270)
at sun.applet.PluginMessageHandlerWorker.run(PluginMessageHandlerWorker.java:82)
java.lang.RuntimeException: Failed to handle message: handle 71305979 for instance 1
at sun.applet.PluginAppletViewer.handleMessage(PluginAppletViewer.java:660)
at sun.applet.PluginStreamHandler.handleMessage(PluginStreamHandler.java:270)
at sun.applet.PluginMessageHandlerWorker.run(PluginMessageHandlerWorker.java:82)
Caused by: java.lang.Exception: Applet initialization timeout
at sun.applet.PluginAppletViewer.handleMessage(PluginAppletViewer.java:637)
... 2 more

Gad vide hvad der foregår?

ps.: NemId virker fint når jeg skal i banken.

Posted in danish

Fake Akrobat browser plugin

So. for some reason, the danish tax authorities (Skat) has started requiring Adobe Acrobat for being able to see pdf files to work around a bug with handling of temporary files on Windows8 and shared computers and such.

Luckily there is a couple of easy workarounds. Like modifying the Javascript to check things at runtime using some browser specific addons. Or just do it like I did and write a actual browserplugin. I cheated and used QtBrowserPlugin. Then my actual code was a couple of lines. Want to check it out? Look here: http://quickgit.kde.org/?p=scratch%2Fsune%2Ffakeacrobat.git. It just does enough to ensure the test succeeds. Work in: iceweasel and arora. For some reason, it doesn’t work in konqueror/webkit nor in konqueror/khtml.

Posted in english, kde, Pocket projects

Kontact / PIM sprinting

So, a couple of days ago, I came home tired after a intense weekend of learning Akonadi and hacking on KDEPIM.

At each meal, we attended 12 people, but it wasn’t the same people every time. And a couple of people participated remotely.

Several people, including me, got their feet wet in kdepim & akonadi code. Talks about the future with Qt 6 and Qt 7 and Akonadi 3 were also held in the corners.

Hopefully, others will tell more closely about what they did, including fixing kmail memory usage to not grow until all headers of all emails was in memory and improving the address completion job to help filling in to/cc/bcc fields.

Personally, I started off several times with the same issue. Not doing several synchronous calls from KMail to Akonadi during message writing and sending. On my way, I cleaned up some code and started over a couple of times. And the code is still a work in progress on my laptop. But the most important synchronous call is in that WIP patch now actually asynchronous \o/. There is still work to do on that area though and I hope to get around polishing it and finishing it this month somehow. I currently have function names like ‘second_half_of_generateCryptoMessages‘ and ‘this_function_should_be_renamed‘.

And next up will Andras Mantia hopefully blog about his accomplishments. And poke some other person for a blog post.

Oh. and if you like developers taking a weekend or so out of their busy schedule to meet up for hacking, please consider supporting KDE by Joining the game

Posted in english, kde

Playing with webstuff

So, the other day, I wrote a blog post asking people to make sure their private hacks become published somehow. So in the sprit of that, I should also publish my recent hacks.

I have been toying around as a web dude and created two nice pieces of oldschool webby software.

So. Time to introductions:

Dodoma is a simple online note taking application. I have created a boring homepage for it on http://sune.vuorela.dk/dodoma and I have a screenshot here:
Screenshot of webapp

Kadaka is a simple rss reader showing the five newest items from various rss feeds. Has special support for youtube channels.
I have created a boring homepage for it on http://sune.vuorela.dk/kadaka and I have a screenshot here:
Screenshot of kadaka

Have fun with those two apps. Patches always welcome.

Some of you might wonder “where does he get those crazy names from”. Well. One of them I found on a map. Thats actually a way I name quite many of my projects. Even those that don’t even leave my harddrive. And the other one actually also is on a map, but I saw it on a frequently used bus in Tallin, Estonia.

And. I am considering naming my next fancy projects after some of the cool words found on the join the game member page. If you want to be part of that, feel free to Join the game!

Posted in danish, english, kde

Boat to akademy?

I’m planning on taking the Tallink Silja boat from Stockholm to Tallin to get to (and from) Akademy. It is a all-night boat with restaurants, bars and almost whatever you would like. The boat leaves shortly before dinner and arrives shortly after breakfast and it is full of great fun.

Last time (Akademy 2010 in Tampere), Inge, Ryan, Chani, Martin and me were on such a boat and it was a nice experience.

Anyone up for such a experience this year ?

You hopefully know how to reach me

Posted in english, kde

Vote verifications

In KDE e.V. (which is to KDE what SPI is to Debian, Jenkins and others) there is some times a need to vote. For example about accepting new members. Mostly about accepting new members. With the new vote system (ballot.kde.org), voters need to do a bit more to check their votes afterwards. basically

  • Take username
  • Your own secret
  • The vote token

and sha256 it in the right order with the right separator chars and so on.

All sha256 sums are published together with where the vote was, so voters can verify that they are counted correctly.

After failing to construct a couple of times on the command line, I decided to write a small GUI app to help me instead.

There it is. Nice. Simple. Effective.

Sources available. http://quickgit.kde.org/?p=scratch%2Fsune%2Fkrapyl.git&a=summary – have fun, and remember to verify your votes.

Posted in english, kde, Pocket projects

Am I online? Network status aware apps II

So. Recently I blogged about Network status aware apps, and some time later, I got asked by a developer “How do I see if I’m online if I’m not using network manager?” and I replied with some dbus commands and he shook his head in despair. So, I ended up writing a small plasma widget targetting developers and very powerusers that can tell you the current state of the network and offers to add yet another ‘manual’ datapoint to the network status.

So. In line with another blog post of mine about getting the small utilities we all write and just let stay in a drawer (or somewhere in ~ on a local computer), I’m announcing it’s existance. That application became famous and even mentioned in Linux Weekly News, but I don’t expect that here. But anyways, here it is: http://quickgit.kde.org/?p=scratch/sune/networkstatus.git.

And a picture of it, it is not pretty but well, it’s a tool mostly for developers, not for end users.

Have fun, and I hope to see more of these small projects from various people.

Posted in english, kde, Pocket projects

Those small nice tools we all write

Many of us out there writes small tools to just solve a simple task that you need. Here, I will present a tool I needed last night.

I have a small job doing a wordpress site for some people, and I needed a image with the site title in a font matching some specific criteria (like a double story lowercase A and a small serif on lowercase L, while in general being a Sans Serif type).

So what I needed was a application that let me write a word or a phrase, and see it written with all available fonts on the system.

So, it took a little more than a effective hour and 120 lines of code to come up with this:

Click to see image

And if anyone cares, I have pushed the sources to git.kde.org.

I’m sure many of you also have various such small apps. Let’s see them. That’s also you Eike and your svgtoy app :)

Another thing I learned from this app is that the ukij fonts targetted the Uyghyr language actually is very interesting also for western europeans.

Posted in english, kde, Pocket projects

Missing tools for people looking for jobs

I have mentioned it before in some blog posts that I’m out looking for a job. In my job searching process, there is a couple of nice tools that I am missing. Maybe if I describe one of them, someone will say that it already exists over there -> or something.

Tool 1. Tracking of data related to a job application.
For each such application I send I have a set of data, some pieces only for some applications:

  • Contact data for company
  • The open position I’m applying for on the web
  • The web form I submitted a application thru
  • The email I used to submit my application
  • Further emailing with the company
  • Further chat logs (jabber or irc) with the company
  • My jotting down during or after a (phone) interview
  • Other data I’ve gathered about the company

I would like one simple way of browsing all this information for a given position.

Does this exist? preferably something that can interact with Konqueror, KMail, KAddressbook, KJots, Kopete and irssi on a remote machine.

Tool 2: Tracking of tasks with states

There is – at least – the following steps in a job searching process:

  • Interesting company found
  • Initial contact
  • More information sent
  • Phone interview
  • First interview
  • Second interview
  • First draft contract
  • Signed contract

A job application might go thru some or all of these steps or even more steps, and from each step it can end prematurely with a ‘rejection’.

Here, I’m missing a tool to track my applications and in which state they are currently in. My first thought here is a bug tracking system, but I’m wondering if there is something nicer. Currently I’m tracking it manually in a KJots notebook.

Comments are open. And no, I haven’t yet found a job.

Posted in english, kde