Mail clients

November 30th, 2011

We all use them. We all suffer under their inflexibilities and bugs. Some use them more some use them less. For those of us who use them for more than one or two emails a day a very important feature are filters.

However, there are some problems regarding those filters or more specifically, how those are created and where they are saved and executed.
Different MTA support different mail filter script formats on the server side. One of them more popular varieties are maildrop filter scripts. Those are very practical if you have static set of filters you need for your mail. Since these are saved and executed on the server you have your mail sorted for you in every client you use to connect to your account. These are like fire and forget rockets, you write them once and never touch them again.

So far so good, but every time you subscribe to a new mailing list you have to go back into you serverscript write new regular expressions to filter them. While this has worked just fine for a couple of decades now, maybe it is about time to improve this workflow.

Then there are the client side filters. Nearly every mailclient has some sort of filters or rules to sort mails. Quite similar to the possibilities we have on the serverside one can create filters based on the different fields in the mailheader. Of course if you only have one mailclient which you use, this is just fine and you won't understand my frustration at all. But as soon as you use one additional client like your phone or you computer at work, the limits of clientside filtering become obvious: they are client side. You either have to recreate your every filter on the second client or just wait till you get to your 'base' client again to have some order in your mailbox.

Enter sieve and managesieve: a possibility to manage server side scripts from client. Sounds promising, doesn't it? Well, one would hope you were able to create server side filters with sieve as easy as client side ones. Just click on the mail and create a filter based on some header field. Unfortunately that's not how ot works. You can edit the filters from you client alright, but all you get to do that is a lousy textfield???
At least on the server you can have syntax highlighting!

There are a couple of approaches to improve the whole mail business. For example I think google mail does a pretty good job. They even got rid of folders alltogether. Instead you just have tags. Mails can have multiple tags and aditionally to the usual header fields you can create filters based on these tags. And google mail actually tries to figure out which mails are important to you and puts them at the top of your inbox. There's a big negative to google mail though: you are not in control over your emails any more.

And I don't think this goes far enough with regards to the technology we have at our dispose today.

Even with the usage of buzzword technologies like NLP, automatic topic maps, etc there are many things that could be improved.
I would like to be able to define a folder where mailinglists should go to. New mailinglists should automatically be put into a new subfolder in there.
True, I could write that with maildrop scripts, but I shouldn't have to do that. The mailprogram/server should be able to do that for me. Same goes for people. When starting a conversation your mailclient should ask you after the x-th mail
'hey, would you like me to put mails from your new contact $joe into its own folder?'
That's not asking too much, is it?

With today's technologies it would be easy to sort your mails into folders/tag them based on the topic.[1,2,3]
You could tell your mailclient to show your all conversations you with Robert about your travel plans. Or something like ‘give me all emails from last years' X-Mas planning

As it stands today, email clients didn't evolve at all in the last 15 years! When I used The Bat! in 1996 it could do everything mailclients can do today. Sure we have nice themes now, but apart from that: nothing has changed :/

So what are we going to do about that? Lets create (yet another) mailclient!

Relevant RFCs:
RFC 5322
RFC 2045-RFC 2049
RFC 822 (1982) and RFC 2822 (2001)

[1] Email classification and summarization: A machine learning approach
by: Taiwo Ayodele, Rinat Khusainov, David Ndzi. In IET Conference on Wireless, Mobile and Sensor Networks, 2007. (CCWMSN07). IET Conference on (2007), pp. 805-808.  Key: citeulike:5637492
[2]Email Filtering: Machine Learning Techniques and an Implementation for the UNIX Pine Mail System by: Yu H. Chang   Key: citeulike:1379460
[3]Combining linguistic and machine learning techniques for email summarization
by: Smaranda Muresan, Evelyne Tzoukermann, Judith L. Klavans
In ConLL '01: Proceedings of the 2001 workshop on Computational Natural Language Learning (2001), pp. 1-8.
doi:10.3115/1117822.1117837
Key: citeulike:1422784

hostname not found

October 27th, 2011

If you get hostname not found errors in your runscripts or otherwise and you are running archlinux testing.
Be sure to have inetutils installed.

mysql complaining about embedded useflag

June 4th, 2011

!!! One of the following packages is required to complete your request:
- dev-db/mysql-5.1.56 (Change USE: -embedded)
- virtual/mysql-5.1 (Change USE: +embedded)
(dependency required by "virtual/mysql-5.1" [installed])
(dependency required by "dev-db/mysql-5.1.56" [ebuild])
(dependency required by "dev-db/mysql" [argument])

solved by:

root:/etc/portage/use.mask$ emerge virtual/mysql

* IMPORTANT: 2 news items need reading for repository 'gentoo'.
* Use eselect news to read news items.

Calculating dependencies... done!

>>> Verifying ebuild manifests

>>> Emerging (1 of 1) virtual/mysql-5.1
* Package: virtual/mysql-5.1
* Repository: gentoo
* Maintainer: mysql-bugs@gentoo.org
* USE: amd64 consolekit elibc_glibc embedded kernel_linux multilib policykit userland_GNU
* FEATURES: sandbox
>>> Unpacking source...
>>> Source unpacked in /var/tmp/portage/virtual/mysql-5.1/work
>>> Preparing source in /var/tmp/portage/virtual/mysql-5.1/work ...
>>> Source prepared.
>>> Configuring source in /var/tmp/portage/virtual/mysql-5.1/work ...
>>> Source configured.
>>> Compiling source in /var/tmp/portage/virtual/mysql-5.1/work ...
>>> Source compiled.
>>> Test phase [not enabled]: virtual/mysql-5.1

>>> Install mysql-5.1 into /var/tmp/portage/virtual/mysql-5.1/image/ category virtual
>>> Completed installing mysql-5.1 into /var/tmp/portage/virtual/mysql-5.1/image/

>>> Installing (1 of 1) virtual/mysql-5.1

>>> Recording virtual/mysql in "world" favorites file...
>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.

* GNU info directory index is up-to-date.

* IMPORTANT: 2 news items need reading for repository 'gentoo'.
* Use eselect news to read news items.

root:/etc/portage/use.mask$

Failed to emerge dev-lang/python-2.7.1

January 4th, 2011


[..]
checking whether we are using the GNU C compiler... yes
checking whether x86_64-pc-linux-gnu-gcc accepts -g... yes
checking for x86_64-pc-linux-gnu-gcc option to accept ISO C89... none needed
checking for --with-cxx-main=... no
configure: error: cannot run /bin/sh ./config.sub

Make sure you have >=autogen-5.11.3
Bug #347095

emerge autogen dev-lang/python
-> works

Stundenplan in Latex

October 7th, 2009

Seit meinem letzten Stundenplan in Latex ist nun doch einige Zeit vergangen. Inzwischen dachte ich, sollte es doch ein paar schoenere geben und siehe da, es gibt etwas neues. Das ist schon eine etwas schoenere Loesung als die letzte, man definiert eine timetable-Umgebung in Latex, braucht also kein perl oder anderes mehr:


\documentclass[a4paper,10pt]{report}

% Definitions
\usepackage{lscape}
\usepackage[height=25cm]{geometry}
\usepackage{timetable}

\begin{document}
\thispagestyle{empty}
\begin{landscape}
\printheading{Time table $6^\mathsf{th}$ Semester}

% Define the layout of your time tables
\setslotsize{2.8cm}{0.3cm}
\setslotcount{5}{36}
\settopheight{4}
\settextframe{0.8mm}

% Define event types
% type r g b t_r t_g t_b
\defineevent{corelecture}{0.0} {0.28}{1.0} {1.0}{1.0}{1.0}
\defineevent{seminar} {1.0} {0.4} {0.2} {1.0}{1.0}{1.0}
\defineevent{work} {0.21}{0.5} {0.16}{1.0}{1.0}{1.0}

% Start the time table
\begin{timetable}
\hours{9}{15}{1}
\englishdays{1}

% x start end name lecturer location type
\event 1 {1415} {1600} {Data Networks Lecture} {Druschel} {E1{\tiny 3} 002} {corelecture}
\event 1 {1615} {1800} {Tutorial SysArch} {Gwosdek} {E1{\tiny 3} SR014} {work}
\event 2 {0915} {1100} {Embedded Systems Lecture} {Finkbeiner} {E1{\tiny 3} 003} {corelecture}
\event 2 {1115} {1300} {Differential Equations in IPCV Lecture} {Weickert} {E1{\tiny 3} 001} {corelecture}
\event 2 {1415} {1600} {Office Hour SysArch} {Gwosdek} {E1{\tiny 1} HaDePra} {work}
\event 3 {1415} {1600} {Data Networks Lecture} {Druschel} {E1{\tiny 3} 002} {corelecture}
\event 3 {1615} {1800} {Numerical Algorithms in Image Analysis} {Bruhn, Weickert} {E1{\tiny 1} 3.06} {seminar}
\event 4 {0915} {1100} {Embedded Systems Lecture} {Finkbeiner} {E1{\tiny 3} 003} {corelecture}
\event 4 {1115} {1300} {Tutorial SysArch} {Gwosdek} {E1{\tiny 3} SR014} {work}
\event 5 {1000} {1100} {Bremser Meeting SysArch} {SysArch United} {E1{\tiny 3}} {work}
\event 5 {1115} {1300} {Differential Equations in IPCV Lecture} {Weickert} {E1{\tiny 3} 001} {corelecture}
\end{timetable}
\end{landscape}
\end{document}

Das Endergebniss sieht dann so aus: example.

Bootsplash themes gallery

September 22nd, 2009

I was installing a new kernel and wanted a bootsplash theme. So I installed the splash themes packages:
emerge media-gfx/bootsplash-themes media-gfx/splash-themes-gentoo media-gfx/splash-themes-livecd

But then I dearly missed an overview of all the themes to choose one. I found no splash-theme selector or anything, so it seemed I had to do it myself. Fortunately the themes are fairly ordered and nicely named, one can easily create a little gallery of those:

mkdir /tmp/pics
cd /tmp/pics
for i in `find /etc/splash |grep -i 1024x768 |grep -i cfg| sed -e 's/\.\///g'|xargs cat |grep -i pic=|awk -F= '{print $2}'`; do cp $i /tmp/pics/${i//\//_} ; done
rename '_etc_splash_' '' *
rename '_images' '' *

The last two lines are just to create a little bit nicer names. Now you have a gallery of the silent and verbose images of each theme (that has an 1024x768 cfg) in /tmp/pics. Have fun selecting your favorite theme.

Here is the output gallery:

Distribution Madness

September 16th, 2009

Over the past 48hours I've gone through 3 different installations of distributions. I've started with an Ubuntu 64bit. Sadly the jaunty jackalope has only really old stuff in it. Mainly the old subversion version was a no go, as I need to work on my diploma thesis which I manage in a SVN-repository. The svn from jaunty told me it was too old. After an upgrade of the whole system to karmic (dev version I know... it's all my own fault now) just to get to a state where I can actually work with my system it worked for a while. Yesterday the update-manager bugged me again, wanted to do some 300 packages again. Fine with me. BUT after that the kernel wouldn't start no more. It seemed the splash screen was broken. After removing the relevant part from the grub config I could boot. Without the nice splashscreen... but whatever. After unlocking my encrypted discs everything was fine. At least it seemed that way. I could login, so far so good, but as soon as I tried to start a terminal -> could not start child process... in addition to that the network didn't work. Great. *annoyed*

Next step: Linux Mint. Mint is a derivate of Ubuntu and has some nice guitools to administrate your box. So I installed the x64 version. Looks nicer than ubuntu (imho). But still old software. (Firefox 3.0 ?!?!). After updating and googling for the dev release. Helena and karmic back in the sources.list. Some 1000 packages later, the update fails at xserver-xorg. Ah well. No worries, it's the dev-version so who am I to complain.

Tried to get some work done: installed GWT as eclipse plugin. Oh wonder what, it doesn't work with native 64bit java. So far I didn't have an problems with eclipse and 64bit java for some time. Ok, after installing and setting up a 32bit jvm for this project, GWT seemed to work. Beside the integrated browser (mozilla). That one needed some old libs (libstdc++5) which, of course, aren't available anymore in karmic/helena....

Ok, start over. Next try 32bit Mint 7. Additionally to upgrading to helena/karmic straight, I had to use the linux-server kernel, or otherwise I could only use 3.3 GB of my 8Gigs of ram :/ ..
So now I'm sitting here with a 32Bit Mint7. So far so good. Nearly everything works (the volume/track controls on my keyboard are broken again, those worked in ubuntu flawlessly)
Just the updates are failing again everywhere:
Errors were encountered while processing:
acpid
acpi-support
gnome-system-tools
xserver-xorg
inxi

Oh my. I just hope some day, one can have a current linux installation that simply works and has packages which are not from the stone age...
I just wonder how a user who just switched from MacOSX or Windows to linux should cope with such problems ...

Seems I'm going back to Gentoo. I'll have to do much more by myself, but at least it works then...

Phoronix Test Suite on Ubuntu

September 13th, 2009

After installing the Phoronix Test Suite on Ubuntu (9.10 Karmic Koala on AMD64) I tried to start the GUI.
Unfortunately there was an error:
kazamatzuri@maya:~$ phoronix-test-suite gui

The PHP GTK module must be loaded for the GUI.
This module can be found @ http://gtk.php.net/

After googling a bit, I found the fastes solution to be:

  1. Get the php-gtk package: http://www.phoronix-test-suite.com/misc/php5-gtk2_2.0.1-0_amd64.deb
  2. install it with sudo dpkg -i php5-gtk2_2.0.1-0_amd64.deb
  3. get your php to load the extension: sudo echo "extension=php_gtk2.so" > /etc/php5/conf.d/gtk.ini

There you go, now it works (at least for me;))

Failed to emerge media-gfx/hugin-0.7.0-r1

May 17th, 2009

-- Found Exiv2 release >= 0.12
-- Found Exiv2: /usr/lib64/libexiv2.so
-- Boost was not found. Set the Boost_INCLUDE_DIR cmake cache entry to the directory containing the boost include files. E.g
/usr/local/include/boost-1_33_1 or c:\boost\include\boost-1_33_1
CMake Error at CMakeLists.txt:150 (MESSAGE):
boost thread library not found. If it is installed with a

unrecognized suffix, specify it with -DBoost_LIB_SUFFIX=

-- Configuring incomplete, errors occurred!
*
* ERROR: media-gfx/hugin-0.7.0-r1 failed.
* Call stack:
* ebuild.sh, line 49: Called src_configure
* environment, line 2981: Called cmake-utils_src_configure
* environment, line 844: Called die
* The specific snippet of code:
* cmake ${cmakeargs} "${CMAKE_USE_DIR}" || die "cmake failed";
* The die message:
* cmake failed
*
* If you need support, post the topmost build error, and the call stack if relevant.
* A complete build log is located at '/var/tmp/portage/media-gfx/hugin-0.7.0-r1/temp/build.log'.
* The ebuild environment file is located at '/var/tmp/portage/media-gfx/hugin-0.7.0-r1/temp/environment'.
*

>>> Failed to emerge media-gfx/hugin-0.7.0-r1, Log file:

just reemerge boost:

emerge boost

and it compiles just fine...

Netcaching launched

May 10th, 2009

Do you know Geocaching? There are many types of Geocaches out there, but there is another wast landscape on this planet, no one has used to plant caches yet: THE INTERNET.

That's what netcaching is all about. Hide netcaches, eg strings like 3bHxpKIxmiApweD5HCdD somewhere in the internet. Some hint guide you to the location of the netcache. The possibilities of hiding netcaches are virtually endless:

  • You have a blog/homepage/facebook profile/etc...? Hide something there (htmlsource,alt-tags...)!
  • Hide something in comments on other pages....
  • Create a video and embed cache somewhere in it
  • Remember the tutorial with the metadata-netcache? There's flicker....
  • Not only images can have metadata....
  • Hidden services in tor....
  • Hide a netcache in the guestbook of a geocache *GG*
  • Google earth markers....
  • ......

The nice thing about netcaches is, you can not only use them for 'classic' netcaches, but also to create quizzes like that one.
Right now there aren't that many netcaches yet, but this is expected to change ;) .

If you'd create some caches now, chances are that your caches get very much visits as every new user starts somewhere to solve caches.
Oh, and each time one of your caches gets solved you get some points (as you do for creating the cache in the first place).

Have fun! Oh and if you find bugs or have a feature request, don't hesitate to let me know!