My handwriting

Tidying up a few things at home, I came across all my documents from previous years. I thought it would be nice to document how my handwriting evolved over the year. I have been to school between the ages of 6 and 18 (12 years). We were asked to write script (i.e. cursive, without breaks between letters) in elementary school. In secondary education I recognized that nobody cared for our style of writing, so I switched back to block letters. My writing was much more readable immediately.

Handwriting in 1997
Handwriting in 1997: Studying digits and basic arithmetics in elementary school
Handwriting in 1997
Handwriting in 1997: Studying script in elementary school
Handwriting in 1999
Handwriting in 1999: Due to the colors my math teacher pointed out how beautiful my submission is
Handwriting in 2000
Handwriting in 2000: Biology at the end of elementary school (not written in school)
Handwriting in 2001
Handwriting in 2001: My very first steps in English (secondary edu)
Handwriting in 2001
Handwriting in 2001: Writing a story in German
Handwriting in 2002
Handwriting in 2002: Physics
Handwriting in 2003
Handwriting in 2003: English listening
Handwriting in 2004
Handwriting in 2004: Studying English grammar in school
Handwriting in 2005
Handwriting in 2005: Notes for a presentation on Buddhism
Handwriting in 2006
Handwriting in 2006: First year of Computer Science in school, the TCP/IP stack
Handwriting in 2007
Handwriting in 2007: Psychology was compulsory only for 1 year
Handwriting in 2009
Handwriting in 2009: My ‘matura’ (A levels) in Computer Science
Handwriting in 2012
Handwriting in 2012: As a Computer Science student looking at runtime recurrence relations
Handwriting in 2016
Handwriting in 2016: Math student

In lecture-free times I am taking only small notes on paper, meaning I write ~5% on paper and 95% on my computer. When lectures are going on at university, I guess the ratio is like 50% written (math is much easier to study handwritten) and 50% on my computer (lecture notes).

My handwriting

Buchtipp: “Simple Guide to Japan – Customs & Etiquette”

Simple Guide to Japan
Cover of “Simple Guide to Japan”

This booklet was published in the third edition in 1997 and authored by Helmut Morsbach. It features 80 pages in total with illustrations and a medium font size. So you should be finished in few hours. I definitely need to compare it with “Darum nerven Japaner” (engl. “Why Japanese Are Annoying”), which I read recently. However, for the latter no English translation is available.

In my humble opinion, “Why Japanese Are Annoying” does a better job at presenting Japanese habits, because it contains humorous remarks to make it more enjoyable. Due to its length (compared to the booklet) it is also more exhaustive and goes to a philosophical point of view, which is entertaining also for a non-European audience. This booklet sticks to a basic comparison of European and Japanese habits. On the other hand it comes straight to the point and introduces more basic Japanese words/phrases compared to the humorous book.

In the end you will read 10 chapters:

  1. Introduction by Ronald Dore
  2. Foreword
  3. In General
  4. Wining & Dining
  5. The Japanese Home
  6. Gift-giving
  7. Out & About
  8. Conversation & Communication
  9. Business Matters
  10. Useful Phrases & Vocabulary

The final pages contains a collection of Japanese words used in the booklet, facts about Japan and an index. A nice read for an afternoon. I cannot verify its content, because I have not been to Japan, but one disclaimer remains: In some ways outdated.

Buchtipp: “Simple Guide to Japan – Customs & Etiquette”

Buchtipp: “Darum nerven Japaner”

Darum nerven Japaner Buchcover

Fig. 1. “Darum nerven Japaner – Der ungeschminkte Wahnsinn des japanischen Alltags”

Der Autor Christoph Neumann erklärt erst im Nachwort wie er dazu kam dieses Buch zu schreiben. ここがヘンだよ日本人 (laut dem Autor mit “Die spinnen, die Japaner!” frei nach Asterix & Obelix zu übersetzen) ist eine populäre japanische TV-Sendung, in der er auftrat. Dort diskutieren die Anwesenden die Gewohnheiten der Japaner und hinterfragen deren Sinnhaftigkeit. Als Spin-Off dieser Auftritte schrieb er das Buch, welches zu einem der bekanntesten seines Genres wurde.

Als Kenntnisse greift er damit auf seine Erfahrungen als Deutscher mit längerem Auslandsaufenthalt in Japan zurück. Er illustriert japanische Eigenheiten anhand seiner Erfahrungen und schreckt nicht davor zurück sie mit harten Worten in krassen Gegensatz zu europäischen Gewohnheiten zu setzen. Die diskutierten Themen illustrieren sich in den 19 Kapiteln des Buchs:

  1. Vorwort: Dürfen Japaner nerven?
  2. Regeln: Das Volk will belehrt werden
  3. Schuhe: Das elfte Gebot: “Du sollst deine Schuhe ausziehen”
  4. Essen: Die mit dem Bauch denken…
  5. Schwimmbad: Japan im Schnelldurchschwimm
  6. Radfahren: Radfahren schwer gemacht
  7. Mafia: Verbrecher, die keine sind
  8. Warnungen: Achten Sie darauf, darauf zu achten!
  9. Verhütung: Pille killen und Föten töten
  10. Körpersprache: Das Gegenteil von Anmut
  11. Yamanote: Mehr als nur eine S-Bahn-Linie
  12. Spass: Kein Spass an der Freud
  13. Schlafen: Bett? Nein, danke!
  14. Diebstahl: Mein Geld, dein Geld – Geld ist für uns alle da
  15. Gleichheit: Reich wie Scheich und dennoch gleich?
  16. Fremdsprachen: Englisch hassen lernen
  17. Urlaub: Die Suche nach dem Vertrauten in der Fremde
  18. Müll: Parolen statt Mülleimer
  19. Big Brothers: Ist Gott eine japanische Firma?
  20. Flirt: Die Sau rauslassen, aber ordentlich

Ein netter gedanklicher 2-Tages Ausflug in den japanischen Alltag!

Buchtipp: “Darum nerven Japaner”

Time management, an analysis

This semester I consciously decided to reduce my number of courses I take. As far as academic work is concerned I need to focus on finishing the first and second semester and finish my master thesis. I reduced the amount of work in associations, I do not take some law course (oh, that’s been some while!) and I don’t take any courses of higher semester.

I wanted to discuss the amount of time I want to invest into something. I fixed holes in my schedule and organized remaining time. I have several categories and every category as a minimum amount of time I invest per week. Good opportunity to document that for future reference:

  • I consider 16 hours per day productive. So I have 8 hours of sleep per day.
  • I invest 42.5 hours per week in attending lectures, tutorials, meetings, visiting the Aikido dojo and quality time.
  • 69.5 hours are left. How do I use them?

There are 10 categories:

    programs I want to release, watch tutorials/videos, publishing content
    old courses I need to finish (exams, submissions)
    course Analysis 2 and everything related
    course Linear Algebra 2 and everything related
    course Foundations of Mathematics
    master thesis:
    releasing subprojects for my master thesis, writing thesis document
    course Japanese Language and everything related
    learning Japanese on my own (especially Aikido & math)
    exchange student year organization
    upcoming Grazer Linuxtage – graphics work

And how much time do I invest into each category at minimum?
This sums up to 34 hours and I have 69.5 hours available, so this is flexible on purpose.
But it gives a relative measure for future reference:

project 3 hours per week
university 4 hours per week
A2 5 hours per week
LA2 4 hours per week
FOM 1 hours per week
master thesis 8 hours per week
JAP 3 hours per week
日本語 3 hours per week
日本 2 hours per week
GLT16 1 hours per week
Time management, an analysis

Project nihon ni ryuugakusei

Starting with October 2016 I am going to Japan for 1 year with my girlfriend. Both of us got granted a student’s exchange year at the same place.

  • I will attend classes as a math undergraduate.
  • She attends classes as a math graduate student.
  • I just took my first Japanese classes this February.
  • She has more experience with the Japanese language (5 courses).
  • Our studies will be financed by the University of Graz and University of Kōbe. The funds cover the difference in living costs between Austria and Japan (housing will be more expensive in Japan). Thanks to all those institutions!
Schedule until then
  • Find appropriate classes I can attend at Kōbe University and ask for future recognition
  • I will try to finish my first and (coming) second semester in Mathematics. And finish my computer science master’s degree at TU Graz.
  • I will try to get my second course in Japanese during the summer term.
  • I will apply for a summer job for 2 months (July & August).
  • With September things get real. I will no longer live in my flat in Graz.
  • On 3rd of October we will have our first regular day at Kōbe University [math department].
  • I will return to Austria in August 2017 at the earliest (exams take place in July and August in Japan). It seems financially dull [to me] to come back to Austria at any point in time during this year.
Related work until then
  • Suspend participation in local associations (GLT, Aikikai Graz, not sure about LaTeX@Graz)
  • Reduce the amount of physical stuff I have here in Graz, store it somewhere and move out of the flat
  • Lots of planning with her – thanks sweety!
Being in Japan
  • My main focus one year abroad will be on Japanese writing, Japanese language, math and typesetting.
  • Japanese classes will be very appropriate as they are designed for exchange students with various Japanese skills. But math classes will give me a hard time. All appropriate classes for me are in Japanese.
  • I need to do at least 30 ECTS. The usual amount of ECTS per year at universities is 60 ECTS.
  • I will try to attend Aikidō classes there. Getting into a real Dōjō is supposedly difficult. But it should be easy to get into the Kōbe university Aikido club.
  • We will use the awesome train network in Japan to get around.
  • We will keep you informed about information channels, so you can reach us. But we need to organize that in the coming months.

So again: Where is Kōbe? We are close to Ōsaka, to the west (a bit to the south) of Tokyō. It takes us 3 hours with Shinkansen to get to Tokyō. And for those of you who actually cared to read that much, I have that one for you:

The Austrian flag at the Kōbe exchange programme website

Figure 1. The Austrian flag at the Kōbe exchange programme website

This is truly a great opportunity for us!
Thanks for the support we received 🙂

Project nihon ni ryuugakusei

When is Tutte’s theorem in K₅ violated?


A graph, G = (V, E), has a perfect matching if and only if for every subset U of V, the subgraph induced by V − U has at most |U| connected components with an odd number of vertices.
Tutte’s theorem

Figure 1. Tutte theorem examples

Consider the two examples given in Figure 1. G is a bipartite graph and we consider two possible subsets U the induced subgraph of G-U is given on the right side.

  1. For U₁ the number of odd components in G-U is 1 and the size of U is given with 3. Because 1 ≤ 3, the Tutte theorem holds.
  2. For U₂ the number of odd components in G-U is also 1 and the size of U is also given with 3. Again, the Tutte theorem holds.

For any U, this condition will hold. Underneath the perfect matching is given (vertex 1 is associated to vertex 2, etc).

Problem setting

planar graph K5

Figure 2. Planar graph K5 and a reduced variant

Consider graph K₅. A perfect matching clearly cannot exist for K₅, because a perfect matching can only exist if the number of vertices is even (as every vertex is associated to another vertex). Because the Tutte theorem provides a necessary and sufficient condition for the existence of a perfect matching, it should yield

For some subset U of V, the subgraph induced by V − U
has less than |U| connected components with an odd number of vertices.


What is U for K₅? The solution is equivalent for its incomplete variant, which was originally given to me.


I wasn’t able to come up with a solution. So I wrote a program to try all combinations:

#!/usr/bin/env python3

import itertools

def component_sizes(G):
    """component sizes in an undirected graph"""
    comps = list(set([v]) for v in G[0])
    for e in G[1]:
        s, t = e[0], e[1]
        idx_s, idx_t = -1, -1
        for i, comp in enumerate(comps):
            if s in comp:
                idx_s = i
            if t in comp:
                idx_t = i
        if idx_s == idx_t:
            for item in comps[idx_t]:
    return tuple(sorted(len(comp) for comp in comps))

assert component_sizes(([1], [])) == (1,)
assert component_sizes(([1, 2], [])) == (1, 1)
assert component_sizes(([1, 2], [(1, 2)])) == (2,)
assert component_sizes(([1, 2, 3], [(1, 2)])) == (1, 2)

def subgraph(G, excl_vs):
    """Subgraph induces by excluding vertices"""
    red_V = tuple(filter(lambda v: v not in excl_vs, G[0]))
    red_E = tuple(filter(lambda e: e[0] not in excl_vs and e[1] not in excl_vs, G[1]))
    return (red_V, red_E)

assert subgraph(([1], []), [1]) == (tuple(), tuple())
assert subgraph(([1, 2], [(1, 2)]), [1]) == ((2,), tuple())
assert subgraph(([1, 2, 3], [(1, 2), (2, 3), (3, 1)]), [1]) == ((2, 3), ((2, 3),))

if __name__ == '__main__':
    def excl_vs_selection(G):
        for size in range(len(G[0])):
            for sel in itertools.combinations(G[0], r=size):
                yield set(sel)

    K5 = ((1, 2, 3, 4, 5), list(itertools.combinations(range(1,6), r=2)))
    reduced_K5 = ((1, 2, 3, 4, 5), [(1, 2), (2, 3), (3, 4), (4, 5), (5, 1)])

    G = K5
    for excl_vs in excl_vs_selection(G):
        sub = subgraph(G, excl_vs)
        sizes = component_sizes(sub)
        odd_sized_comps = len(list(map(lambda v: v % 2 == 0, sizes)))
        if odd_sized_comps > len(excl_vs):
            #raise ValueError("Tutte theorem violated with exclusion vertices {}".format(excl_vs))

The program yields set(). Hence the only solution is the empty set.

Consider U = {}. Then the induced graph is K₅ itself. The number of connected components in K₅ is 1 (all pairs of vertices are reachable from each other) and this component has an odd number of vertices (namely 5). The size of U is 0. And 1 > 0, so the Tutte theorem is violated and no perfect matching exists indeed.

When is Tutte’s theorem in K₅ violated?

Make 24 out of 1, 3, 4 and 6


Give a mathematical expression which equals 24. This expression is only allowed to use the basic arithmetic operators +, -, * and /. The numbers 1, 3, 4 and 6 must occur exactly once. No magic or tricks!


I was given this problem last Friday by one colleague. It was ridiculously difficult to come up with a solution. As mathematician you try to understand the structure behind the problem. You look at the prime numbers involved. In the expression you have {3, 2, 2, 2, 3} and in 24 you have {2, 2, 2, 3}. So you need to get rid of one three. But how? None of us 6 guys came up with a solution in less than an hour. But we actually found one academic who found the solution after 2 hours (a bit of sleep was involved, because he was very tired).

Well, my mathematical brain failed, but my computer science brain screamed “brute force!”. So let’s do it. I wrote a python script, which solved a subproblem in 18 lines. This is a more complete version which solves the problem for any four numbers and any target value. This script prints possible correct solutions to stdout in less than 0.5 seconds:

import itertools

def parenthesized(a, b, c, d):
    """Generate all expressions where operators
    are represented with substitution characters
    yield '((`{} $ <{}) @ (>{} ! _{}))'.format(a, b, c, d)
    yield '((`{} $ (<{} @ >{})) ! _{})'.format(a, b, c, d)
    yield '(`{} $ ((<{} @ >{}) ! _{}))'.format(a, b, c, d)
    yield '(`{} $ (<{} @ (>{} ! _{})))'.format(a, b, c, d)

def main():
    """Main routine generating math expressions equating 24
    using numbers {1, 3, 4, 6} exactly once and using operators
    -, +, / or *.
    for arr in itertools.permutations([1, 3, 4, 6]):
        for expr in parenthesized(*arr):
            # we can omit '-' in these iterations, because all values
            # will also be considered with a sign
            for fo, so, to in itertools.product(['+', '/', '*'], repeat=3):
                for s1, s2, s3, s4 in itertools.product(['', '-'], repeat=4):
                        # replace operators
                        e = expr.replace('$', fo).replace('@', so).replace('!', to)
                        # use either sign '' (hence +) or '-' (hence -) at every place
                        e = e.replace('`', s1).replace('<', s2).replace('>', s3).replace('_', s4)
                        result = eval(e)
                    except ZeroDivisionError:
                    if result == 24:
                        yield e

if __name__ == '__main__':
    for solution_expression in main():

In the following I will give a list of hints. The further below you go, the closer you come to the solution (select text to display items). The solution itself is not given here:

  1. Most values we ended up with are too small for 24. So we conjectured that number 6 will occur as factor, which turned out to be true.
  2. Factor 6? So we look for factor 4 as well, right? Actually no. I mean yes, but with an indirect representation.
  3. Given {1, 4} on the left-hand side and {1, 3, 4} on the right-hand side. Find operators such that LHS and RHS equate.
  4. How about 1 / (1 / 4)? Two ones? I guess one of them has to be 6.
  5. Given 6 / (1 / 4)? How can we represent 1/4 using {1, 3, 4}?
Make 24 out of 1, 3, 4 and 6

Mapping lexicographical comparison to integer comparison


(a, b) < (c, d) with a,b,c,d ∈ [0,M) ⇔ a · M + b < c · M + d
(a, b) = (c, d) with a,b,c,d ∈ [0,M) ⇔ a · M + b = c · M + d
(a, b) > (c, d) with a,b,c,d ∈ [0,M) ⇔ a · M + b > c · M + d

Proof by case distinction
relation to prove constraint evaluation conclusion
(a, b) < (c, d) a < c a · M + M – 1 < c · M
(a, b) < (c, d) a = c ∧ b < d a · M + b < c · M + d 0 + b < 0 + d ✓
(a, b) = (c, d) a = c ∧ b = d a · M + b = c · M + d 0 + 0 = 0 + 0 ✓
(a, b) > (c, d) a = c ∧ b > d a · M + b > c · M + d 0 + b > 0 + d ✓
(a, b) > (c, d) a > c a · M > c · M + M – 1

This just exploits the nature of a lexicographical order itself for bounded domains. Consider two binary numbers and they get compared. This integer comparison equals the lexicographical tuple comparison of its digit expansion. I just wanted to make this explicit as my head was screwing around with it.

Mapping lexicographical comparison to integer comparison

My second Kyusho experience

Today, on 15th of November 2015, our level 1 Kyusho course ended. I had my first experience with Kyusho in February when instructor Robert Göslbauer joined us in an introductory course for our association. Unlike the first time which was unstructured and rather application-oriented, this time he specifically covered all aspects of the Kyusho level 1 exam for all ~30 participants.

Robert showed us the majority of vital points along meridians described in Chinese medicine. They are used in a negative way potentially knocking out the opponent or losing neurological control in a certain part of the body. This demonstration uses vital point “Triple Warmer 17”, which can be very painful when applied properly. Vital points on the head like that one can make you feel dizzy, which is why regeneration can be important as can be seen in this video.

And why do I point out the word “experience” so much? I recognized two interesting effects: Even though you don’t move a lot, just by using the vital points, you feel exhausted afterwards. The pain itself affects your body similar to Budo training. You become more and more sensitive on the points. After applying the techniques multiple times, a little touch to the skin might already trigger pain (well, this is what my arm in the elbow felt like). However, this makes applying vital points in Jitsu combat more difficult, because in Jitsu (unlike Do arts like Aikido) you actually want to hurt the opponent and the first hit must be more precise than the following ones.

I am looking forward to taking the level 1 exam in the next months.

My second Kyusho experience

(Why) I am studying math

In winter term 2010, I started studying computer science. I finished a bachelor degree in “Computer Science” in summer 2014 and bachelor degree in “Software development and Business Management” in May 2015. I thoroughly analyzed that the programmes intersected by about 67% for me. Before summer 2016, I plan to finish my master’s degree in Computer Science with one lecture exam and the master thesis ahead of me.

With this winter term 2015, I am studying “Mathematics” at KF Uni Graz as a NAWI (= engl. MINT) programme. This will cover all the basics of algebra and calculus. The degree programme is linked at my student’s homepage. It intersects with 23 ECTS with my previous programmes. That’s 13%.

Why do I still want to study? Several reasons come to my mind:

  • I remember back in 2011 (= 2nd semester) we discussed alternative studies. My study colleague could not think of any alternative. I answered “Philosophy” and “Mathematics”. Today I am rather disappointed with philosophy, but math is still some strange enlightening field of interest of mine.
  • Irregularly I studied theory by Donald Knuth (eg. in The Art Of Computer Programming). And I am still a fanboy of Donald Knuth. However I fail to understand much of his content, because it’s mathematics in its pure form. Understanding might even be possible with systematic efforts, but recognizing all the links is much more fun which is only possible with background knowledge.
  • I enjoy the art and science of computers. Especially recently I have discovered areas of computer engineering which I considered unattractive beforehand. And they are orthogonal to mathematics (economics/practice over rigorousness/purity). But I also want to master the underlying art of math.
  • During my master’s degree I could not master the art of mathematical proofs. Neither I am good at writing my own ones nor can I recite known ones thoroughly.
  • Regarding digital typesetting there is not much progress. I need better understanding of the domain requirements and as such practice in typesetting mathematics and typesetting other languages would be helpful. Therefore I will also take some Japanese classes during my studies.

It’s time to reset my brain. The last months I was trying hard to get rid of existing projects to be able to focus on my math studies. However, I am not sure I can finish these studies. For now I can only finance studies of at most 2 years. By the way, if I really want to finish this degree I need to do a third bachelor thesis, because my previous ones don’t get recognized for math.

(Why) I am studying math