Good Ener­max sup­port in Ger­many

The pow­er sup­ply of my serv­er at home failed at the end of last month. As I was busy with ren­o­va­tion at home, it took me a while to check if it is real­ly the PSU or some­thing else. When I was sure about the failed piece, I have sent the PSU to the RMA address the Ener­max sup­port gave me (the PSU has a 5 year war­ran­ty, and I have it since one year). Due to hol­i­days it took a while to get the repaired unit back, but I want to say thank you to the Ener­max sup­port:

  • Thank you for hand writ­ten respons­es, I did not get obvi­ous auto­mat­ic respons­es or canned respons­es (well, maybe they did some copy&paste for the RMA address and such, but each mail had at least a part which was not com­ing from copy&paste).
  • Thank you for get­ting back to me with­in a rea­son­able time.
  • Thank you for polite­ly answer­ing all my sup­port requests.
  • Thank you for being hon­est in your com­mu­ni­ca­tion (slow han­dling of the repair due to peo­ple being in hol­i­day, not because of miss­ing pieces from sup­pli­ers or oth­er excus­es out­side Ener­max).

This is how the sup­port shall be, unfor­tu­nate­ly this is not always the case, but at least here it was. Thank you!

Send to Kin­dle

Algo­rithm to detect repo-copies in CVS

FreeB­SD is on its way to move from CVS to SVN  for the ver­sion con­trol sys­tem for the Ports Col­lec­tion. The deci­sion was made to keep the com­plete his­to­ry, so the com­plete CVS repos­i­to­ry has to be con­vert­ed to SVN.

As CVS has no way to record a copy or move of files inside the repos­i­to­ry, we copied the CVS files inside the repos­i­to­ry in case we want­ed to copy or move a file (the so called “repocopy”). While this allows to see the full his­to­ry of a file, the draw­back is that you do not real­ly know when a file was copied/moved if you are not strict at record­ing this info after doing a copy. Guess what, we where not.

Now with the move to SVN which has a build-in way for copies/moves, it would be nice if we could record this info. In an inter­nal dis­cus­sion some­one told its not pos­si­ble to detect a repocopy reli­ably.

Well, I thought oth­er­wise and an hour lat­er my mail went out how to detect one. The longest time was need­ed to write how to do it, not to come up with a solu­tion. I do not know if some­one picked up this algo­rithm and imple­ment­ed some­thing for the cvs2svn con­vert­er, but I decid­ed to pub­lish the algo­rithm here if some­one needs a sim­i­lar func­tion­al­i­ty some­where else. Note, the fol­low­ing is tai­lored to the struc­ture of the Ports Col­lec­tion. This allows to speed up some things (no need to do all steps on all files). If you want to use this in a gener­ic repos­i­to­ry where the struc­ture is not as reg­u­lar as in our Ports Col­lec­tion, you have to run this algo­rithm on all files.

It also detects com­mits where mul­ti­ple files where com­mit­ted at once in one com­mit (sweep­ing com­mits).

Prepa­ra­tion

  • check only category/name/Make­file
  • gen­er­ate a hash of each commitlog+committer
  • if you are memory-limited use ha/sh/ed/dirs/cvs-rev and store path­name in the list cvs-rev (path­name = “category-name”) as stor­age
  • store the hash also in pathname/cvs-rev

If you have only one item in ha/sh/ed/dirs/cvs-rev in the end, there was no repocopy and no sweep­ing com­mit, you can delete this ha/sh/ed/dirs/cvs-rev.

If you have more than … let’s say … 10 (sub­ject to tun­ing) path­names in ha/sh/ed/dirs/cvs-rev you found a sweep­ing com­mit and you can delete the ha/sh/ed/dirs/cvs-rev.

The meat

The remain­ing ha/sh/ed/dirs/cvs-rev are prob­a­bly repocopies. Take one ha/sh/ed/dirs/cvs-rev and for each path­name (there may be more than 2 path­names) in there have a look at pathname/. Take the first cvs-rev of each and check if they have the same hash. Con­tin­ue with the next rev-number for each until you found a cvs-rev which does not con­tain the same hash. If the num­ber of cvs-revs since the begin­ning is >= … let’s say … 3 (sub­ject to tun­ing), you have a can­di­date for a repocopy. If it is >=  … 10 (sub­ject to tun­ing), you have a very good indi­ca­tor for a repocopy. You have to pro­ceed until you have only one path­name left.

You may detect mul­ti­ple repocopies like A->B->C->D or A->B + A->D + A->C here.

Write out the repocopy can­di­date to a list and delete the ha/sh/ed/dirs/cvs-rev for each cvs-rev in a detect­ed sequence.

This finds repocopy can­di­dates for category/name/Makefile. To detect the cor­rect repocopy-date (there are maybe cas­es where anoth­er file was changed after the Make­file but before the repocopy), you now have to look at all the files for a giv­en repocopy-pair and check if there is a match­ing com­mit after the Makefile-commit-date. If you want to be 100% sure, you com­pare the com­plete commit-history of all files for a giv­en repocopy-pair.

Send to Kin­dle

Android Wish­list: The EMail-App

Things I do not like with Android, and what I would expect instead.

The EMail-App

 This is about the nor­mal EMail App on a stock Android 3.1, not about GMail. The con­nec­tion is via IMAP.

  • By default the most recent EMail is on top. If I switch to oldest-first order, the old­est EMail is shown when enter­ing a fold­er. I want to see the most recent one. If I let the most-recent order, I see direct­ly the newest mes­sages, but when I read the old­est unread mes­sage and delete it, the more old mes­sage is dis­played, instead of the more recent one. KMail is doing this bet­ter (it is able to go “up” instead of only “down” to go to the more recent mes­sage when the most recent mail is sort­ed on top), but in KMail I can not select mul­ti­ple mes­sages as easy as with the nor­mal EMail App (it seems I have to long-tap on a mail and then tell to select the EMail, and just then I can just quick­ly tab on the very small area on the left of the sub­ject to select more EMails).
  • Select­ing mes­sages could also be improved. When I select sev­er­al mes­sages, and then – by acci­dent – enter a mes­sage and want to go back, the first “go back” uns­e­lects all mes­sages and the sec­ond “go back” goes back to the folder-view. I would like to go back direct­ly to the folder-view, instead of uns­e­lect­ing all mes­sages.
  • The folder-view itself is also not nice. I have a lot of fold­ers. IMAP sub­fold­ers are sep­a­rat­ed by a dot, e.g. FreeB­SD.arch and FreeB­SD.mul­ti­me­dia are the sub­fold­ers arch and mul­ti­me­dia in the fold­er FreeB­SD. Each desk­top EMail pro­gram I used so far was intel­li­gent enough to cre­ate a folder-hierarchy out of this, with the pos­si­bil­i­ty to col­lapse the dis­play of all sub­fold­ers of FreeB­SD (I have a lot there, not only those 2) into one entry. If I want to field some­thing in my hier­ar­chi­cal fold­er struc­ture, I have to scroll a long list of fold­ers, instead of just (auto-)opening (dur­ing drag&drop) the cor­rect hier­ar­chy.
  • I do not find an option to tell that the App shall have a look at more than the default inbox to look for new mes­sages. If I want to know if there is a new mes­sage in one of the oth­er fold­ers, I must have a look into the folder(s).
  • It looks like I can only pro­duce TOFU-replies, I have not found a way to do a prop­er interleaved-style reply.
  • The error mes­sages when set­ting up an out­go­ing (and I assume incom­ing) serv­er are too brief for my taste. As a default it is OK, but there should be an option to enable more verbose/technical error mes­sages for those which are able to under­stand them.
  • It does not option­al­ly save send mails to a spe­cif­ic (con­fig­urable) fold­er.
  • It does not allow to cryp­to­cal­ly sign mes­sages (at the moment I do not real­ly care if it is via S/MIME or via PGP).
  • I also would like to tab with two fin­gers, and the text in-between is select­ed (not only in the EMail-App).
Send to Kin­dle

VDR ports docs

After a quick dis­cus­sion with nox@ I made a copy&paste of his “VDR is com­mit­ted now”-mail into the FreeB­SD wiki. I also re-styled some small parts of it to fit bet­ter into the wiki. It is not per­fect, but already usable. Now inter­est­ed peo­ple can go and improve the docs there.

Thanks to Juer­gen for all his work in this area!

Send to Kin­dle

Con­vert­ing from Couri­er IMAP to dove­cot is easy

I have used Couri­er IMAP at home since a long time. As I want to update a dove­cot 1.2 set­up to dove­cot 2.x, I decid­ed to first have a look at dove­cot 2.x at home.

Switch­ing from Couri­er IMAP to dove­cot is real­ly easy. I just con­fig­ured the cor­rect path to the maildir, set­up a pass­db/userdb, and it was work­ing.

The impor­tant part was the cor­rect trans­fer of the pass­words. I used already an userdb in Couri­er IMAP with MD5 pass­words. For each user it has imappw=XXX with XXX sim­i­lar to $1$abc.

This can be con­vert­ed into a dove­cot passdb/userdb line very eas­i­ly:

username:{MD5-CRYPT}$1$abc::UID:GID::HOMEDIR::userdb_mail=maildir:~/path/to/maildir

The cor­re­spond­ing passdb/userdb set­tings for dove­cot are:

passdb {
   args = scheme=MD5-CRYPT username_format=%u /usr/local/etc/dovecot/dovecot.pws
   driver = passwd-file
}
userdb {
   args = username_format=%u /usr/local/etc/dovecot/dovecot.pws
   driver = passwd-file
}

Com­pared to when I had a look the last time, dove­cot is also able to use OTP as an authen­ti­ca­tion mech­a­nism now. Unfor­tu­nate­ly I did not find any doc­u­men­ta­tion how to configure/use it.

Send to Kin­dle