How to create an icon in an Angular project using FontAwesome

So I just learned that if you want to insert an icon into a frontend website you don’t use images anymore but you use the icon like it was a font – For example by using the FontAwesome library.

Boostrap 4 does not support Glyphicons anymore, you can use Font Awesome instead. But if you just follow the FontAwesome instructions you will fail in an Angular project.

Instead check the hint on this page:

Font Awesome now has an official Angular component that’s available for all who want to easily use our icons in projects. If you are using Angular, you need the angular-fontawesome package or Web Fonts with CSS.

Okay this means in an Angular project you need to use the following packageAngular FontAwesome

The best page that I have found for me as I am using NPM was this page.

So basically you need to:

  1. Install FontAwesome in NPM
  2. Import the module AngularFontAwesomeModule in your app.module.ts
  3. Add the CSS in the angular-cli.json file

The details are all described in the link above.

Power Off Icon
  1. To finally add an icon you can add a power-off icon in the app.component.html file:
<fa-icon [icon]="faPowerOff"></fa-icon>
  1. AND you need to add the code in the related app.component.ts file:
    import { faPowerOff } from '@fortawesome/free-solid-svg-icons';
    ...
    export class AppComponent implements OnInit {
      faPowerOff = faPowerOff;
    ...

ONE IMPORTANT NOTE!

Please realize you need to install the correct version of AngularFontawesome in NPM for your Angular version. Check this page for the compatibility table.

I used Angular 5 so I had to install it like this:

npm install @fortawesome/angular-fontawesome@0.1.1

The entry will then be added to your package.json file.

Werbeanzeigen

Wie kann ich eine statische Webseite in einem AWS S3 Bucket mit einem Passwort schützen?

Amazon Web Service (AWS) erlaubt es einen auf einfache Art, eine Webseite in einem S3 Bucket hochzuladen und dafür eine URL zu generieren, so dass man in einem Browser Zugriff dafür hat.

Wie man das macht, lernt man zum Beispiel im Udemy.com Kurs Angular Essentials von Maximilian Schwarzmüller, welcher ich wärmstens empfehlen kann!

In diesem Kurs erstellt man eine Liste von Starwars Charakteren und lernt am Ende, wie man das Ganze in einen S3 Bucket hochlädt.

Was aber, wenn ich diese Seite nun mit einem Passwort schützen möchte?

Wenn ich eine Webseite auf einem Server habe ist es üblicherweise kein grosses Problem, darauf eine Authentifizierung dazwischenzuschalten (bei einem Apache oder Nginx kann das zum Beispiel via htpasswd geschehen).

Bei einer serverless Seite, die auf einem S3 Bucket liegt, ist das hinzufügen einer Authentifizierung ein wenig trickreicher. Es gibt aber eine Möglichkeit, die Seite Passwort geschützt zu machen, indem man vor die Webseite eine Lambda-Funktion stellt und mittels AWS CloudFront die Verlinkung vornimmt.

Hochladen einer Beispielseite in einen S3 Bucket

Um diesen Post durchführen zu können braucht man natürlich eine Webseite. Hat an keine zur Verfügung kann man einfach irgendeine Beispielseite als „index.html“ speichern, etwa folgende:

<html>
  <head>    
    <title>Testseite</title>  
  </head>
  <body>
  Meine Seite funktioniert!
  </body>
</html>

Und natürlich braucht man einen AWS Account dafür. Falls Sie noch keinen haben, können Sie sich problemlos einen kostenlosen Account erstellen, der ein Jahr gültig ist.

Sobald Sie in AWS eingeloggt sind, wählen Sie „S3“ als Service aus und erstellen mit „Create Bucket“ einen Kübel.

Nun kann die Datei „index.html“ mittels „Upload“ Button hochgeladen werden.

Damit man diese Seite online aufrufen kann, klicken Sie auf „Properties“ und dann „Static website hosting„. Als Index und Error Document können sie zweimal „index.html“ angeben.

Wenn Sie im Bucket auf „Permissions“ klicken, sehen Sie, dass der generelle Zugriff auf aussen geblockt ist („Block all public access„). Damit man die Webseite im Internet einsehen kann, muss man dies natürlich ändern und den Haken entfernen und dies in einem Dialog „confirmen„.

Jetzt müssen Sie noch die „index.html“ Datei klicken und dann unter „Overview“ auf „Make public„. Ganz unten sieht man nun die „Object URL„, unter der die Seite aufgerufen werden kann.

Alternativ klicken Sie nochmals auf „Properties“ und dann auf „Static website hosting“ und sie sehen oben die öffentliche URL.

Nun haben wir eine Testseite, für welche wir Authentifizierung einbauen können.

Verbreitung der Webseite mittels AWS CloudFront

CloudFront ist der AWS Verteilungsservice, mit welchem Sie Ihre Webseite nun auf Server auf der ganzen Welt verteilen können, damit Benutzer immer den schnellstmöglichen Zugriff darauf erhalten. Zusätzlich dazu erlaubt uns CloudFront in Zusammenarbeit mit Lambda auch, eine Authentifizierung aufzusetzen.

Wählen Sie zuerst in AWS den CloudFront Service aus. Da wahrscheinlich noch keine „Distribution“ verfügbar ist, klicken Sie auf „Create Distribution“ und dann im „Web“ Bereich auf „Get Started„.

Dort sind folgende Einstellungen wichtig:

  • Origin Domain Name: Dies muss der vorher erstellte Bucket sein. Kliken Sie einfach in das Feld und wählen Sie den Bucket aus.
  • Setzen Sie „Restrict Bucket Access“ auf „Yes
  • Unter „Origin Access Identity“ klicken Sie „Create a New Identity
  • Setzen Sie „Yes, Update Bucket Policy
  • Unten gibt es noch ein Feld „Default Root Object„: Geben Sie hier „index.html“ ein.
  • Klicken Sie auf „Create Distribution

Und weiter unten:

Wenn Sie nun im linken Menü auf „Distributions“ klicken sehen Sie die neu erstellte Distribution. Merken Sie sich den „Domain Name“ – Sobald sie fertig initialisiert wurde wird Ihre Webseite unter dieser URL aufgerufen werden können. Die Initialisierung dauert aber ein paar Minunten. In dieser Zeit können wir die IAM Rolle erstellen.

Erstellen der IAM Rolle

Damit die Lambda Funktion auf den S3 Bucket zugreifen kann, brauchen wir eine IAM Rolle, welche den Zugriff regelt. Gehen Sie also in den „IAM“ Service und klicken Sie links „Roles“ und dann „Create Role„.

Unter „Choose the service that will use this role“ wählen Sie „Lambda“ und klicken auf „Next: Permissions„.

Suchen Sie nach „AWSLambdaExecute“ und setzen Sie links davon einen Haken. Dann können Sie zweimal „Next“ klicken und dürfen Ihrer neuen Rolle noch einen Namen geben, etwa „lambda-website-execute„. Klicken Sie auf „Create Role“ um die Rolle zu erstellen.

Für die Authentifizierung benötigen wir Lambda@Edge, was wir der Lambda Policy angeben müssen. Klicken Sie Ihre neue Rolle und wählen dann „Trust relationships“ und dann „Edit trust relationship„.

Ersetzen Sie den gesamten Inhalt mit folgendem Text und klicken Sie auf „Update trust relationship„:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
            "lambda.amazonaws.com",
            "edgelambda.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Authentifizierung mit einer Lambda Funktion einbauen

Nun sind alle Teile bereit für den Einbau der eigentlichen Passwortabfrage mittels Lambda.

Zuerst aber noch etwas wichtiges: Damit wir später unsere CloudFront Distribution als Trigger hinzufügen können, müssen wir die „AWS Region“ auf „US East (N. Virginia)“ ändern (im schwarzen Balken ganz oben rechts. Das funktioniert übrigens erst im „Lambda“ Service, nicht im „IAM„.)

Lambda Funktionen laufen serverless, das bedeutet, wir müssen nur die Funktion erstellen, aber keinen Server, auf dem diese läuft. Die Funktion wird aufgerufen, wenn sie benötigt wird und in einer produktiven Umgebung zahlt man dann auch entsprechend der Anzahl Aufrufe.

Klicken Sie in „Lambda“ auf „Create a function„.

  • Lassen Sie auf der nächsten Seite „Author from scratch“ selektiert, um anzuzeigen, dass Sie eine leere Funktion erstellen möchten.
  • Als „Function name“ wählen Sie zum Beispiel „website-authentication
  • Als „Runtime“ ist die neueste Node.js Version auszuwählen.
  • Unter „Permissions“ klicken Sie auf das schwarze Dreieck, setzen dann „Use an existing role“ und wählen dann die erstellte IAM Rolle „lambda-website-execute“ aus, in dem Sie in das Feld klicken.
  • Anschliessend können Sie auf den orangen „Create function“ Knopf klicken.

Scrollen Sie nun runter in den Code Editor und erstezen den vorhandenen Code mit folgendem Snippet:

exports.handler = (event, context, callback) => {

  // Get the request and its headers
  const request = event.Records[0].cf.request;
  const headers = request.headers;

  // Specify the username and password to be used
  const user = 'user';
  const pw = 'password';

  // Build a Basic Authentication string
  const authString = 'Basic ' + new Buffer(user + ':' + pw).toString('base64');

  // Challenge for auth if auth credentials are absent or incorrect
  if (typeof headers.authorization == 'undefined' || headers.authorization[0].value != authString) {
    const response = {
      status: '401',
      statusDescription: 'Unauthorized',
      body: 'Unauthorized',
      headers: {
        'www-authenticate': [{key: 'WWW-Authenticate', value:'Basic'}]
      },
    };
    callback(null, response);
  }

  // User has authenticated
  callback(null, request);
};

Dieser Code nimmt den HTTP Request des Benutzers und überprüft, ob die Informationen im Header mit dem angegebenen Benutzer und Passwort übereinstimmen. Wenn nicht, gibt es keinen Zugriff auf die Seite.

Nun müssen wir noch angeben, dass die Lambda Funktion von CloudFront aufgerufen wird – dazu fügen wir CloudFront als Trigger hinzu. Zuerst müssen Sie aber die Funktion mittels „Save“ Knopf speichern und mittels „Actions -> Publish“ veröffentlichen.

Klicken Sie dann auf „Add trigger“ und wählen Sie CloudFront aus. Wie geschrieben werden Sie CloudFront nur sehen, wenn die Region „US East (N. Virginia)“ ist (siehe anfang dieses Kapitels).

Klicken Sie auf „Deploy to Lambda@Edge“ und setzen Sie die folgenden Einstellungen:

  • Distribution: Hier sollte der Code ihrer CloudFront Distribution stehen. Sie können jederzeit in einem neuen Tab CloudFront aufrufen und den Code überprüfen.
  • CloudFront event: Wählen Sie hier „Viewer request
  • Setzen Sie einen Haken bei „I acknowledge that on deploy…
  • Klicken Sie unten auf „Deploy„.

Aufruf der Seite in einem Browser

Et voilà – Wir haben es geschafft!

Nun können Sie die URL der CloudFront Distribution in einen Browser eingeben und sollten mit einem Login begrüsst werden. Die URL können Sie in CloudFront einsehen, falls Sie sie nicht mehr wissen.

Im Lambda haben wir als Benutzer und Passwort „user“ und „password“ genannt. Dies sollten Sie natürlich noch ändern und die Lambda Funktion nochmals mit „Publish“ veröffentlichen.

Den S3 Bucket nicht mehr public halten

Der S3 Bucket ist immer noch public und momentan kann immer noch jeder mit der URL darauf zugreifen. Gehen Sie also nochmals in den „S3“ Service, dann in den Bucket, dann auf „Permissons“ und stellen Sie „Block all public access“ wieder ein.

Der Bucket muss nicht öffentlich zugänglich sein, da man ja nun über CloudFront und über Lambda auf den Bucket mittlels Benutzer und Passwort zugreift.

Wenn Sie nun die Bucket URL (Achtung: Nicht die CloudFront URL!) aufrufen, sollte eine „403 Forbidden“ Fehlermeldung erscheinen.

Wunderbar!

Consultant Tagebuch 4: Eine Woche in der Hölle

Wer wissen will, wie das Leben eines Informatik-Consultants, also eines „Beraters“, aussieht, ist hier richtig.

Hier gehts zum Consultant Tagebuch 3: Der Verrat an König Arthur
Hier gehts zum ersten Eintrag
Consultant Tagebuch 1

Okay, ich habe die erste Woche als Consultant beim Kunden hinter mir, und ehrlich gesagt, war es eine der hartesten Wochen meines gesamten Lebens. Ich musste das gesamte Wochenende damit verbringen, mich wieder aufzupeppeln und zu erholen. Wenn ich nur daran denke, wandern meine Augen zum Himmel und mein Gesichtsausdruck gleicht einem Winseln… Warum tue ich mir das an?

Der Start ging wirklich zügig

Gut, eigentlich war der Start in die Woche ziemlich genial. Meine Arbeitskollegen und ich fanden uns beim Kunden ein und bekamen erst einmal eine kurze Einführung, wie man in ihrer Firma arbeitet. Zuerst bekam jeder eine neue Emailadresse. Und sobald ich mit diese Emailadresse eingeloggt bin, kann ich jede Office Applikation, welche ich für die tägliche Arbeit brauche (Word, Powerpoint etc.) aus einer Webseite heraus starten. Mein Benutzerkonto war dabei schon eingerichtet, ich konnte also wirklich einfach einmal einloggen, Passwort ändern und ZACK war ich im System und konnte quasi arbeiten.

Und was die Sache wirklich genial macht, ist die Zusammenarbeit zwischen den Leuten. In meiner alten Firma haben wir ja auch ständig irgendwelche Dokumente geschrieben – Dokumentationen von einem Programm zum Beispiel. Diese Dokumente waren aber ganz normale Word-Dateien, welche auf einem Netzlaufwerk in irgendeinem Ordner lagen. Das gemeinsame Schreiben war dabei immer ein wenig mühsam – Nur eine Person konnte ein Dokumente gleichzeitig geöffnet haben, und Word hatte so eine mühsame Änderungs-Verfolgungs-Funktion.

Bei meinem jetzigen Kunden arbeiten wir immer im Programm Microsoft Teams, das ich bisher nicht gekannt hatte. Es ist ein wenig wie Skype, ausser dass es auch eine Ablage für Dateien bietet.

Und wenn ich jetzt ein Dokument oder eine PowerPoint Präsentation aufmache, öffnet sich diese im entsprechenden Programm. Gleichzeitig können aber x-beliebig viele Mitarbeiter ebenfalls daran arbeiten, das sieht man dann jeweils in der rechten oberen Ecke. Man kann sogar quasi live mitverfolgen, was andere Personen gerade ändern.

Keine Ahnung, ob das für Sie jetzt ebenfalls so bahnbrechend ist, oder ob Sie sagen „Pah, alter Hut!“ – Ich finde das ziemlich cool!

Die Dateien im Teams Programm kann man auf Wunsch auch auf den lokalen Computer synchronisieren, was ich gleich mal ausprobiert habe.

Sonst kann ich mich gar nicht mehr erinnern, was wir den ganzen Tag gemacht haben, es scheint schon Ewigkeiten her zu sein! Ich weiss nur, dass meine drei Architekturkollegen… ach ja stimmt ja, ich habe dann Monsieur Baguette noch kennengelernt! Das ist ein neuer Kollege, der mich bei der Architekturarbeit unterstützt – oder eher umgekehrt, er ist nämlich der Senior haha 😉

Also auf jeden Fall hatten wir fast die ganze Woche durch jeweils zwei Abstimmungsmeetings wie schon in der Vorwoche: Eines um 12 Uhr und eines um 17:30 Uhr… ja, echt mühsam, meine Frau hat sich schon darauf eingestellt, dass ich zum Abendessen um 6 Uhr nicht zu Hause bin.

Der zweite Tag war echt zum Kotzen

Der zweite Tag begann echt widerlich. Ich war am ersten Tag schon ein wenig nervös, immerhin war ich den ganzen Tag im Büro, habe neue Kollegen kennengelernt und tausend neue Eindrücke erlebt. Man muss sich auch wirklich Mühe geben, dass man später zu Hause nicht immer noch an das ganze Zeugs denkt, aber es ist nicht leicht. Entsprechend schlecht schläft man dann…

Wie auch immer, komm ich also ins Büro, und das erste, was mir mein Projektleiter sagt, ist: „Guten Morgen Marcel. Einer der Technik-Jungs war vorhin da, anscheinend hast Du gestern ein paar Dateien von den andern Mitarbeitern gelöscht. Sie mussten sie wiederherstellen.“

BAM ins Gesicht, na super! Echt guter Start. Natürlich habe ich das nicht mit Absicht gemacht, das würde ich nie tun. Ich versuchte mich zu erklären, aber mein Projektleiter ist ein ziemlich cooler Typ, er hat dann nicht lang Theater gemacht. Ich glaube, ich weiss auch, wie mir das passiert ist: Ich habe doch einige Dateien auf meinen Computer synchronisiert – Und dann beim Durchschauen dieser Dateien hat eine Kombination aus Windows Explorer und Touchpad dazu geführt, dass sich irgendwas verschoben hat (ich verwende normalerweise immer eine Maus und ich weiss auch warum). Ich hatte es nur kurz gemerkt, sofort CTRL + Z gedrückt… aber ja, das musste da passiert sein.

Gut, wie auch immer.

Ich fing an, mit Monsieur Baguette über die Themen der Woche zu diskutieren. Dann kam ein Kollege und meinte, er könne uns einem der fünf „wichtigsten Kollegen beim Kunden“ vorstellen. „Na klar“, dachten wir, und gingen los, um diesen Herrn kennen zu lernen – nennen wir ihn Herrn Nashorn.

Herr Nashorn war unglaublich höflich – nämlich überhaupt nicht! Als wir uns vorgestellt hatten, meinte er: „Also gut, Jungs, hört mal zu. Ich möchte ehrlich zu Euch sein. Ich war nicht derjenige, der wollte, dass Ihr uns helft, und ich werde meinen persönlichen Einsatz, mit Euch zusammenzuarbeiten, so gering wie möglich halten.

Wow, super, dankeschön! So fühlte ich mich wirklich herzlich in der neuen Firma empfangen!

Dann war Herr Nashorn aber dennoch sehr zuvorkommend und hat mit uns ein Meeting am Nachmittag abgemacht, um uns einen Einstieg in die Firma und das Projekt zu geben. Das hat dann auch stattgefunden, und ich dachte mir „Super! Mein Oberarchitekt wird mit uns zufrieden sein, immerhin haben wir bereits ersten Kontakt zum Kunden hergestellt“.

Denkste!

Um 17:30 hatten wir den Abstimmungsanruf mit dem Oberarchitekten… hmm ich wollte ihm schon lange mal einen anderen Namen geben… ich nenne ihn Gandalf, weil er wirklich ein sehr weiser Mann ist und enorm viel über IT-Unternehmensarchitektur weiss. Also, wir hatten also den Anruf mit Gandalf und haben ihm voller Stolz vom Meeting mit Herr Nashorn erzählt. Gandalf war aber überhaupt nicht begeistert – hatten wir doch einen Tag zuvor abgemacht, dass wir die Kollegen das erste Mal in einem offiziellen Meeting gegen Ende Woche begrüssen und kennenlernen… „Aber… aber… wir haben bereits Kontakt aufgenommen… und sowieso… Herr Nashorn hat das Meeting von sich aus vorgeschlagen, wir wollten nicht so unhöflich sein, und es ablehnen…“ Aber alles flehen half nichts – Gandalf war wütend… 😦

Burnout am dritten Tag

Der dritte Tag fing dann auch gleich wieder stressig an. Ich weiss gar nicht mehr, was ich genau gemacht habe… ständig musste ich irgendwelchen Präsentationen für irgendwelche kommenden Meetings aufbereiten… und dazwischen habe ich noch mit einigen Leuten von unserer Firma gesprochen, die bereits seit längerer Zeit beim Kunden sind.

Ich hatte Meetings von Morgens um 8 bis um 13 Uhr – ununterbrochen. Das war einfach zuviel, man kann nicht immer nur machen machen machen… Ich habe Kopfschmerzen bekommen und brauchte eine Pause. Keine 10 Minuten Pause hatte ich diesen Morgen, und ich habe wohl auch viel zuwenig getrunken (was für mich sowieso schlimm ist, da ich drei Nieren habe und besonders viel trinken sollte). Ich ging in das nahegelegene Einkaufszentrum und habe mir ein Sandwich gekauft. Ich hatte aber überhaupt keine Lust, das Sandwich zu essen. Mir war ab und an richtiggehend schlecht, und ich sass einfach nur da und versuchte, mich zu entspannen. Das halbe Sandwich konnte ich dann langsam verdrücken, bevor ich rausgegangen und noch ein wenig an der frischen Luft rumgelaufen bin.

Jaja, ich hör schon die Stimmen meiner Kollegen: „Ha schau, der Marcel muss zum ersten Mal in seinem Leben schuften und gleich knickt er ein!“

Ja, das war wirklich nicht schön, und als ich anschliessend wieder im Büro war, konnte ich mich überhaupt nicht mehr auf meine Arbeit konzentrieren. Da ich erst wieder um 17:30 das Abstimmungsmeeting hatte, habe ich mich entschieden, nach Hause zu gehen (was man in meinem Beruf kann, was wirklich praktisch ist). Ich habe Monsieur Baguette noch kurz geschrieben, dass ich eine Pause bräuchte und nach Hause ginge – immerhin muss ich hier nicht den Helden spielen, es bringt ja eh nichts, wenn ich mich nicht auf die Arbeit fokussieren kann. Im Zug konnte ich dann ein wenig schlafen und als ich zu Hause angekommen bin, ging es mir schon wieder ein wenig besser.

„Easy, ruhst du dich noch ein wenig aus bis 17:30“ aber nein! Schon klingelte wieder mein Geschäftshandy. Monsieur Baguette meinte „Komm schon, wir müssen das und jenes noch fertigmachen, Gandalf will es bis um 17:30 sehen!“ Buarg also wieder Laptop rausgepackt und Arbeit Arbeit.

Pass auf Dich auf, wir brauchen Dich noch

Gegen Abend ging es mir dann schon wieder viel besser. Dieser Tag hat mir aber klar gemacht, dass ich besser auf mich aufpassen muss. Ich bin halt auch von meiner Persönlichkeit so, dass ich es jedem Recht machen will, und besonders zu Beginn eines Projektes gebe ich mir immer besonders Mühe. Das war auch schon im Studium so, ich stresse mich selber am Meisten und bin dann erstaunt, dass ich gestresst bin.

Ich habe mir vorgenommen, mehr auf mich zu achten. Mehr Trinken, mehr Pause, gut Atmen… Das sind alles Dinge, die im Eifer des Gefechts schnell mal zu kurz kommen. Schliesslich will ich den Job noch lange machen und nicht nach zwei Monaten in den Spital geliefert werden müssen.

Am Donnerstag ging dann alles noch gut, wir haben den Obermotz der Firma getroffen (der aber noch keinen eigenen Namen kriegt) und haben nun die „offizielle Erlaubnis, mit den anderen Nashörnern zu kommunizieren“. Der Obermotz war sogar ziemlich nett und sehr positiv uns gegenüber.

Und von Freitag muss ich gar nicht gross erzählen – Hach, Freitag Nachmittag konnte ich ENDLICH mal wieder NORMAL ARBEITEN, da ziemlich viele Leute am Freitag entweder von zu Hause arbeiten oder gar nicht. Und mit normal arbeiten meine ich: Hinsetzen, PC verwenden, Zeugs machen, keine Meetings, keine sonstige Ablenkung, einfach nur endlich mal das machen, von dem man immer gesagt hat „Oh, sobald ich Zeit habe, muss ich X und Y machen“. Das war schön, da geniesst man das wieder mal richtig!

Kurze Weile will gut Ding haben

Grundsätzlich muss ich aber sagen, dass mir die Arbeit sehr gut gefällt. Es ist für mich noch ein wenig schwierig, bei all diesen Fremdwörtern durchzublicken, und immerhin bin ich auch das erste Mal als IT-Unternehmensarchitekt unterwegs. Die Leute sind aber alle wirklich enorm nett (ja, sogar Herr Nashorn, ich glaube, wenn man ihn mal besser kennt, kann man es auch spassig mit ihm haben… wir werden sehen) und die Arbeit ist enorm kurzweilig – Und das war genau der Grund, warum ich bei meinem letzten Job als 100% Java Entwickler gekündigt habe. Ich weiss am Morgen nie, was mich den ganzen Tag erwartet, und man braucht einen wachen und flexiblen Geist für diesen Job – Plus eine gewisse innere Ruhe, die ich mir noch antrainieren muss.

Und so endet meine (erste?) Woche in der Hölle. Dafür darf ich sagen, dass sich das Wochenende wie der Himmel angefühlt hat, und ich die Zeit mit meinen zwei Töchtern enorm genossen habe. Heute Sonntag waren wir noch zusammen an der Kinderfasnacht und meine ältere Tochter hat sich als supersüsse Hexe verkleidet. Und auf das Überleben dieser Woche musste ich mir spontan drei Biere gönnen (ich trinke sonst praktisch keinen Alkohol) und nach den drei Bieren waren tatsächlich alle meine Sorgen der vergangenen Woche vergessen.

Doch Marcel erkannte nicht die düsteren Wolken, die sich bereits wieder am Himmel bildeten, um ihm am Montag mit voller Wucht ins Gesicht zu schlagen…