In her blogpost Mapping what I’m learning, Sacha Chua ponders about using mapping to get an overview of what she is learning and of what she knows. She already captures knowledge in sketches, blogposts and Evernote notes. For her,

Mapping is about organizing topics so that I can see the relationships, find the gaps, and keep moving forward.

This post is a reminder for me that I do not capture enough of my knowledge. I have a private wiki (as recommended in „Pragmatic Thinking and learning„) but I rarely use it. It is also a reminder that „text“ is just one option to capture knowledge. There are more graphical options like topic maps and mind maps. They tend to let you use both of your brain hemispheres whereas „text-only“ is „left hemisphere“ heavy. I try to use mind maps more these days.

Sacha mentions „How to read a book“ by Adler and van Doren. It’s looks interesting and there appears to be an online full-text „pre-view“ on Google Books. A pointer to get more out of books.

In the comment section there is a reference to IBIS (Issue based Information System) which basically is about recording issues (questions), positions (ideas) and arguments in order to preserve important decision making processes in addition to recording just the results. The overview mentions IBIS as a tool to capture design rationale. I think I read about it several years ago. It might even have been a paper about  Questions, Options and Criteria (QOC). So this is a pointer from personal knowledge management to organizational knowlege management.

So thanks for the nice post. It got me thinking.

5 Common misconception about meditation: Biggest take away for me: Meditation is not about creating a blank mind but to „setting time aside to guide your mind“.

4 Important Things About Mindfulness You Didn’t Realize: how to handle your negative emotions mindfully

The Big Chill-Out: How Meditation Can Help With Everything: reminder that meditation is about becoming familiar with your mind. and it can change your gene expressions.

Was eigentlich schon in einer ZDF-Doku bekannt wurde, hat ein jetzt ans Licht der Öffentlichkeit gekommenes Gutachten bestätigt: durch viele Änderungen seitens des Auftraggebers ohne gleichzeitige Verlängerung der Laufzeit („scope creep„) Ich sehe hier auch Versagen seitens des Projektmanagements.

BER Hauptpier
Berihert, BER Hauptpier, CC BY-SA 3.0
Die Kündigung des Generalplaners pg bbi im Mai 2012 kann ich zwar verstehen; mir kommt dabei aber auch Brook’s Law in den Sinn:

Wenn man mehr Leute in ein verspätetes (Software-)Projekt steckt, verspätet es sich noch mehr.

Wobei man hier ja zunächst nicht mehr Leute reingesteckt hat, sondern erst mal alle abgezogen und dann, weil man das Know-how doch braucht, peu-à-peu wieder (teurer!) eingekauft. Das verlängert die Laufzeit vermutlich noch weiter als „mehr Leute reinstecken“.

Veröffentlicht in Medien | Markiert mit

Ich habe auf meiner Homepage eine kleine HTML-Seite / „Web-App“ wiederentdeckt. Sie soll „Doubletten“ (Plagiate, doppelter Content ect.) eines vorgegeben Textes im Internet finden.

Das geht ganz einfach: auf der Doublettenfinder Seite einfach den Vorgabe-Text in die Textbox kopieren und auf „prüfen“ klicken. Dann werden bestimmte Wörter aus dem Text ausgewählt (die Anzahl kann in der Drop-Down-Box eingestellt werden) und eine Google-Suche wird vorgenommen. Die „exakt“-Checkbox bestimmt, ob alle Suchbegriffe in den Treffern vorkommen sollen. In meinem Experimenten ist es meist besser, sie aktiviert zu lassen, wenn jedoch kein oder kein gewünchster Treffer angezeigt wird, dann mal deaktiviert probieren.

Der dahinter liegende Algorithmus zur Auswahl ist einfach: es sortiert die in der Textbox enthaltenen Wörter nach ihrer Häufigkeit und Wortlänge. Dann werden die seltesten, längsten Wörter ausgewählt und als Suchbegriff ausgewählt. Die Idee ist, dass diese dann spezifische Fachbegriffe sind. Das klappt im Deutschen übrigens besser als im Englischen, Stichwort: zusammengesetzte Substantive.

Obwohl dieser Ansatz recht naiv ist, funktioniert er jedoch erstaunlich gut. Wenn man per Hand noch ein zwei themen-relevante Such-Wörter hinzufügt, greift man der Sache unter die Arme.

Update: Ich werde mal probieren, erst nach der Wortlänge und dann nach der Häufigkeit zu sortieren. Mal sehen, wie dann die Ergebnisse sind.

Update 2: Ich habe das mal eingearbeitet. Die Unterschiede sind nicht so groß. Aber trotzdem interessant, da mal ein bisschen rumzuprobieren.

Andere Ansätze: (frei und ohne zusätzliche Software)

  • plagiatefinder.de zerlegt den Text in Wortgruppen und sucht diese im Internet. Dabei entstehen wesentlich mehr Google-suchen, die man „bewerten“ muss.
  • SeeSources.com erläutert die Vorgehensweise nicht. Spuckt aber relevante Links und ähnliche Textstellen aus
  • PlagAware deutsprachig, Einschränkung auf 25 Abfragen pro Monat und IP

You often find the answer to „How do I set default timeouts for (outgoing) network connectins in Java“ is

  1. System.setProperty("sun.net.client.defaultReadTimeout", "30000");
  2. System.setProperty("sun.net.client.defaultConnectTimeout", "30000");

But this may or may not work. Because, as stated by Sun in 2005:

Yes, it [the default timeout] is cached, or more precisely it is looked up only at startup time. This is by design.

Playing around with the code in the bug database entry linked to above and netcat, I found that it is also true for Java 6. Chances are high that it is true for Java 7, too.

What is meant by „startup time“ is using some network connection, e.g. HttpURLConnection. That means if there has some network connection been used before the properties are programmatically set, no network connections will use these timeout values!! If you set these properties in the JEE ContextListener or some startup-servlet they may have no impact anymore because your web container may already have used a network connection. Better use the commandline to pass these parameters.

To automate MS Outlook, you usually use macros (written in Visual Basic for Applications aka VBA). But often, company security policies denies access to Outlook Macros. But you can still use VB Script aka VBS.

Here I show two scripts that copy parts of an Outlook email to the Windows clipboard. A third script forwards all selected mails to an email address. I am not an VBS expert but have put them together from various other scripts and solutions around the web.

I use these scripts with Windows XP and Outlook 2003.

Copy mail content to clipboard

I use Emacs org-mode as an TODO-List and journaling application. When I want to reference an email in a task or journal entry I can either quote the email or link to it. The easiest way is to get the appropiate content into the clipboard and yank it in the org-mode buffer.

As far as I know, the Windows clipboard is directly available to VBA scripts. But not so for VB scripts. According to the net, there are several workarounds. The one I use here makes use of the Internet Explorer Object: it opens the „about:blank“ page and gets access to the clipboard through its „parentwindow“ property. To avoid a security question I added „about:blank“ to the list of local sites in the Internet Explorer security settings.

In org-mode you can have links and using org-outlook you can have links to specifc outlook message. You need the GUID of the specific message. One caveat here: that GUID changes when you move that message to a different folder.

Mass forward emails

The Outlook API provides an method to forward a mail. It behaves just like you would hit „forward“ in the GUI. Fill the recipient with a mail address and call the mail’s „send“ method. But wait: there will be a security questions that will ask you to confirm that you really want to send this mail. You have to wait 5 seconds to confirm it. This slows down mass forwarding… The following script loops through all selected mails in Outlook and forwards them.

I have seen one trick that claims to await the 5-second-confirmation-dialog: it uses some other VB object to simulate a „Alt-S“ keystroke so that it seems the user himself press „Send“ in the GUI. Don’t know if that works.

Assign keyboard shortcuts

I created shortcuts on the desktop to these scripts. For the first two scripts I assigned keyboard shortcut (C-F7 and C-S-F7 resp.) That way I do not need to navigate to the script to execute it.

Wie ich berichtet habe, fand ich letztes Jahr den Eintrag meines Großvaters in der Verlustliste der k-und-k Armee (1. Weltkrieg).  In einem Update berichtete ich außerdem, dass ich einen Datenbankeintrag auf der Internetseite des Zentralen Militärarchivs [in tsch. „Vojenský ústřední archiv“] fand.

Dort habe ich nach Näherem gefragt. Hier berichte ich von den Ergebnissen der Nachfrage.

Zunächst zu der Datenbank, die auch im Internet einsehbar ist. Es handelt sich hierbei um die „Legionärsdatenbank“, wobei es sich hier um die Tschechischslowakische Legion handelt, die im und nach dem 1. Weltkrieg in Russland und Frankreich aktiv war. Der Mitarbeiter des Archiv schrieb mir, dass mein Opa Mitglied der Legion war, jedoch nicht als Soldat sondern als Arbeiter. Dazu packte er noch einige Unterlagen meines Großvaters. Es ergibt sich folgendes Bild.

Da die Truppen der tschechoslowakischen Legion nicht über Westen auf tschechischen Boden zurückkehren konnte, zogen sie nach Osten, um über Wladiwostok nach Europa einzuschiffen. So kamen sie in die Region Wladiwostok. Mein Großvater war dort im Lager Krasnaja Rjetschka. Er erfuhr, dass seine Heimat Bilin nun zur Tschechoslowakischen Republik gehörte. Er erklärte im 23. Februar 1920, dass er dieser als Staatsbürger mit allen Rechten und Pflichten angehören wolle.

Dies wurde ihm quasi vor Ort gewährt. Aus dem Dokument erfährt man auch das Datum der Gefangennahme: 4.3.1915. Da er nun tschechoslowakischer Bürger war, kam er anscheinend nicht umhin (oder tat es aus freien Stücken), dem Arbeitsverband Legion beizutreten. Das währte jedoch nicht lange, denn am 23. Juni 1920 bat er um seine Entlassung, da er beabsichtigte, mit Hilfe des Deutschen Reiches nach Deutschland zurückzukehren.

Das tat er dann auch. Handschriftlich ist vermerkt, dass es sich um das Schiff Hudson Maru handelt, einem ehemaligen japanischem Frachter. Die Hudson Maru fuhr vom 29.6.1920 bis 6.9.1920 ehemalige Kriegsgefangene von Wladiwostok nach Hamburg. Laut Wiener Zeitung waren 434 Österreicher an Bord. Es gibt sogar ein Bild von der Überfahrt, angeblich vom 22.7.1920. (Wer weiss, vielleicht steht mein Opa dort an der Reeling…)

Die Hudson-Maru bringt dt.-österreichische Kriegsgefangene von Wladiwostok nach Hamburg (Provinzialbibliothek Amberg, Europeana)

Es gibt sogar ein Tagebuch von jemanden, der auf der Überfahrt dabei war. Leider ist es in einer Kurzschrift verfasst, die ich nicht interpretieren kann. Aber immerhin hat derjenige die geografischen Koordinaten festgehalten, so könnte ich bei Gelegenheit mal die Route
nachvollziehen (s.o. ab Bild 42).

Es ist sehr schön, diese Dokumente über meinen Großvater zu erhalten. Auch mein Vater hat sich sehr gefreut. Man muss sich nur vorstellen, dass mein Opa fünf Jahre seines jungen Lebens in Kriegsgefangenschaft in Sibirien verbracht hat.

(Quellen: obiges Bild siehe Link, CC-by SA 3.0)

When I look at the log files our server application creates (esp. the middleware tier) there is much information in it. But how much of it is helpful for administrators, our colleagues in „IT Operations“ department who are in charge of keep these applications running?

When you think about it, it all comes down to resources. Administrators can help when

  • the application rans out of memory
  • the filesystem is full
  • the partner application (e.g. „web service“) is down
  • we get errors because a SSL certificate of a server we talk to isout of date
  • the database cannot be reached because the configured user password is wrong
  • the configured URI of some partner application is wrong
  • communication with a partner systems is interrupted because of a misconfigured firewall
  • network connections are stale because of some network problems
  • application cannot sent mails because of a misconfigured mail server

etc. In general, administrators can help when there is something wrong with resources our application needs or when the configuration for using these resources is wrong. These are errors I call „transient“ because when the problem with resource or configuration is fixed the problem „disappears“.

On the other hand, administrators cannot help when

  • there is a integrity constraint violation when writing to the database
  • there is a NullPointerException because programmers forget to check that a mandatory input field actually contains data
  • there are errors because of unexpected input format
  • there are validation errors while talking to a partner application
  • some algorithm crashes with a „division by zero“ error

etc. Administrators cannot fix these things because only programmers can do by changing the code. These kind of errors I call „permanent“ errors because they cannot go away at runtime.

Of course, there is some kind of „gray area“ where administrator may check things but not necessarily are able to help, for instance

  • today a partner application responded with a „NullPointerException“ – admins could check if everything else is OK with this application
  • file handles or concurrent database sessions run out – admin could increase the number of file handles or concurrent database sessions until programmers fixes the root cause
  • resolving a dead lock in the database.

In an ideal world, the applications log file entries clearly indicate whether an error is transient or permanent. But in reality it is not achieved easily. For instance, deciding whether a SQLException is rooted in a transient or permanent error means creating a list of SQL error codes for the database vendor your application uses. Take a look at the spring framework – they did exactly this. It is much easier to just log the SQLException and abort the transaction.

In summary, when notified about transient errors, administrators can help to keep the server application running, but with permanent errors only developers can help. When the log file entries identify which kind of error they refer to it helps administrator to do their job.