MDWiki rewrite

As I wrote in my previous blog entry before a while I decided to give up the domains for my personal projects and let it run as subdomains under my personal domain

Before a while I realized, how easy it is to host a PWA on Github as a gh-page and thanks to Github and with the help of Let’s encrypt your PWA can also run over HTTPs which gives you more security but also the ability to use ServiceWorkers. The only constraint you have to live with is, that you’ll have no serve backend to use Node.js for example. So there’ll be also no server side rendering.

But that was fine for my projects and that’s why I decided to rewrite MDWiki completely for the third time. In the first version I was using Angular 1 with Node.js on the backend site. After 3 years I wanted to rewrite it and I decided to use Next.js wich is using React.js and Node.js in the backend.

So for the third version I decided to not make a complete rewrite and just to make some slightly changes to be able to use some code from the second version. That’s why I don’t wanted to leave the React.js world completely. But I wanted to replace it with Preact.js which has a much smaller footprint than React.js. And because of there’s no server side code, I completely dropped Next.js.

But instead of using Webpack directly for the module bundling I decided to use Parcel.js which is another more lighweight module bundler.

And because of my experience from the second version of MDWiki and also my daily work with React.js it took me less than two months to rewrite MDWiki with the same functionality as from the second version and let it run under When I started with the project I wanted to use a small CSS framework and I started with UIKit. But then I realized that I don’t used so much from the framework and I could write it on my own.

Another feature I also used, is a ServiceWorker, to be able to also be runnable offline. ServiceWorker you can only use when your website is served via https.

The result is now a very lightweight and very easy deployable PWA, that has just a few dependencies.

Comment and share

Because of personal reasons I had to reject to both domain names I used for my personal projects and So from November this years, will no longer be reachable.

But I’ll continue with the hosting for both projects as subdomains for the domain I use for my self since many years. So MDWiki will be reachable under and HowCanI will be hosted

I’ll continue both projects as my personal projects, since I used it for myself for some years. But
it’s still possible, to connect to your own GitHub repository.

Comment and share

To protect your USB-stick with a password you have to format it first with the Disk Utility program to the Mac OS Extended (Journaled) format with the GUI-Partitiontable.

Attention Please make a backup before you’re formatting it!!!

Then just go into the terminal and enter diskutil list. Here should see the USB drive listed (in my case it’s /dev/disk2)

In case you’ve only one partition on this USB stick you’ve to convert disk2s2 to a AppleCoreStorage with using you own passphrase. You can do this with the following command.

diskutil cs convert disk2s2 -passphrase yoursupersecurepassphrase

After some minutes the USB stick should be remounted and it’s protect with the passphrase of your choice. When you want you can save the passphrase in your local keychain so that you don’t have to enter it always again.

But in case that someone will “find” your USB-stick, he’ll have no access to the data that are stored on it without knowing the passphrase.

Comment and share

For some reasons it could be necessary to execute a job in scheduled time.
When running the job within a Docker container there’re two ways to do this.

The first would be to create a cron job on the server on which Docker is
running and let them execute the job with docker run.

The second way would be to let do everything within the Docker container.
But you don’t need to implement any scheduling functionality since it’s out of
the box available from any Linux based container.

For example when your container is using the tiny Alpine base image you can use
crond for it. The following code snippets are showing you everything what
is todo.


NOW=$(date +"%T")

echo "Hello from the job at ${NOW} in $(pwd)" >> /dev/stdout


FROM alpine:latest

COPY ./ /etc/periodic/15min/job
RUN chmod +x /etc/periodic/15min/job

CMD ["crond", "-fS"]

The dockerfile is doing two things. It’s copying the into a
predefined folder and mark them as executable.

All scripts that are within this folder will be executed by
crond every 15 minutes. There’re more predefined folders under
etc/periodic to let run a job hourly, daily, weekly or once per month.
In case you need more flexibility you’ve to change the crontabs file for the
root user manually.

The program crond comes with the tiny Alpine image but it will not be
executed automatically as a background daemon.

It’s possible to let run crond as a foreground process, which is intersting
for us. Since we need a process wich is running always, otherwise our Docker
container will be finished immdiately after it was started. So with giving
dockerd the -f flag as argument it will run constantly as a foreground
process and our Docker container will also running continuously.

Please keep in mind that it’s required that the script in the targetfolder
don’t have the .sh extension, otherwise run-parts which is used from
crond, will not use your script.

Please keep also in mind that the workingdirectory where the will be
executed is the /root folder. So maybe you’ve to change
the working directory in the at first before executing whatever
you’ve to execute…

Comment and share

From C# to Python

in development

Last week I did my first steps with Python) and I was really suprised about this programming language that has such a long history.

It provides features that I wouldn’t expect. To dive deeper into the language I solved a Kata,
what I mostly do when learning a new programming language. This time I choosen the StringCalculator kata from Roy Osherove. You can find the source code on my github page.

One of the nice features I found was list comprehensions feature.

[number for number in [1, 2, 1000, 1001] if number <= 1000]
# returns [1, 2, 1000]

Another nice feature was the built-in any function. It does the same like the same linq function from C#. It returns true when any element of the iterable returns true.

any(number < 0 for number in [-1,2,3])
# returns true

The same is for the filter function. It takes a function as first parameter that returns a boolean and returns all elements from the given list whith those elements for which the function returns true.

At least I used a feature that ES6 also provides, the Destructuring assignment. So in the Kata I used a regular expression to split the definition of delimiter from the list of numbers.

match =
if match:
delimiter, input = match.groups()

return delimiter, input

The regex returned in a positive case two groups. Both groups I could directly assign to the variables delimiter and input and also return this variables as result of the function. In this case both variables will be automatically packed as a tuple and in the calling function unpacked and assigned to two another variables, very nice…

So I’m just at the beginning of journey through the features of python and I’ll post here more about my experiences…

Comment and share

Today I had the problem, that someone has used the port 3000 on my macbook and I couldn’t start my node.js server.
At first I tried to close all open terminal windows and exit the terminal app, but this wasn’t the solution for my problem.

Now I’ve tried to find out wich process uses the port. For that I entered the following command in the terminal:

lsof -i :3000

This command returns me informations about the process that is using my port. With the processid I’m now be able to kill the process.

kill -9 11381

Comment and share

Reisebericht Dubai

in Urlaub

Gleich im Anschluss an unseren Urlaub in Indien machten wir einen Zwischenstop in Dubai, um auch diese Stadt kennenzulernen. Und was soll ich sagen, wo Dubai aufgrund der vielen positiven Eindrücke einfach ein Traum war, war Indien manchmal eher ein Albtraum für uns.

Dubai ist eine Stadt, die mit vielen Superlativen glänzen kann. Wir haben zwei geführte Touren mitgemacht und unsere Tourguides haben wirklich sehr oft die Worte “Das höchste”, “Das größte”, “Das beste” usw. gebraucht. Was hier vor allem im neuen Jahrtausend entstanden ist, sucht wirklich seinesgleichen.

Erst als die Engländer gingen und das Öl kam, blühte Dubai und die anderen Städte wie Abu Dhabi auf, und wurde zu dem was es heute ist. Vom ehemaligen Dubai kann man sich heute nur noch im wirklich sehr interessanten und gut gemachten Museum einen Eindruck machen. Im Gegensatz zu Indien, wo es in vielen Regionen noch wie vor hundert Jahren zugeht, sowohl was den Glauben als auch die Lebensumstände angeht. Dubai verlässt sich aber nicht nur auf sein Öl, denn davon hat es eh nicht mehr all zuviel. Deshalb hat Dubai in vielen anderen Industriezweigen deutlich ausgebaut und für die Zukunft vorgesorgt, so dass das Öl nur noch 10 % des Einkommens des Emirats ausmacht.

Dubai machte auf uns nicht den Eindruck einer in Glaubensfragen rückständigen Religion. Die, aus islamischer Sicht, freizügig und unzüchtig bekleideten Frauen waren allerorts zu sehen und scheinen niemanden zu stören.

Überhaupt haben wir über Dubai Dinge erfahren, die man sich eigentlich gar nicht vorstellen kann. So bekommt in Dubai z.B. jedes einheimische Paar vom Staat ein Haus geschenkt und zur Hochzeit noch Geld obendrein. Strom und Wasser sind kostenlos, genauso wie die medizinische Versorgung und das Studium an der eigenen Universität. Wohlgemerkt gilt das nur für den sehr geringen Teil an einheimischen Paaren. An eine Revolution wie sie in anderen arabischen Ländern, wie Ägypten oder aktuell Syrien statt gefunden hat, ist hier nicht zu denken. Warum auch, den einheimischen Menschen hier geht es sehr gut und auch vielen der Emigranten, die den größten Teil der Bevölkerung ausmachen.

Dubai ist eine Stadt, die sehr neu wirkt. Kaum einer der Wolkenkratzer ist älter als 10 Jahre. Die Strassen sind in einem sehr guten Zustand und sehr großzügig, dem, bei über 1.000.000 angemeldeten Kraftfahrzeugen (Stand 2010), sehr großen Fahrzeugaufkommen angemessen. Einen großen Teil davon nehmen die Taxis ein. Man steht wirklich nie mehr als 5 Minuten irgendwo, ohne das ein Taxi vorbeikommt. Und Taxi fahren ist wirklich sehr günstig in Dubai. Und wem das immer noch zu teuer ist, der kann auf den öffentlichen Verkehr ausweichen. Das Busnetz und auch die U-Bahn ist sehr gut ausgebaut. Und wenn man befürchtet, beim Warten auf den Bus einen Hitzekoller zu bekommen, fast jede Haltestelle ist mit einem klimatisierten Warteraum ausgestattet. Die U-Bahn selbst wartet auch mit einer Überraschung auf, sie war weltweit die erste, die führerlos ist.

In Dubai scheint wirklich sehr vieles im Überfluss und auch maßlos zu sein. Wenn ich allein an die Dubai Mall denke, die im Vergleich zu dem Münchner Einkaufszentrum Riem Arkaden mindestens 4 mal größer ist. Dort gibt es wirklich jeden Markenhersteller im eher oberen Preisbereich. Im Verkaufszentrum selbst befindet sich ein Kino (vergleichbar mit dem Münchner Mathäser) und eine große Eislaufbahn, auf der am Vormittag auch das Eishockeyteam (!!!) von Dubai trainiert. Für Kinder gibt es, neben unzähligen Spielegeschäften, auch eine eigene Erlebniswelt in der Eltern ihre Kinder wirklich maßlos verwöhnen können. Und genau das machen viele der Einheimischen auch, sei es beim Spielen, als auch beim Essen, was wir an den vielen übergewichtigen Kindern sehen konnten. Es ist wirklich kaum in Worte zu fassen, auf welche Gegensätze wir bei diesen zwei Urlauben getroffen sind. Auf der anderen Seite sahen wir in Indien Kinder, die morgens nach dem Aufstehen betteln gehen müssen, um wenigstens eine Mahlzeit zu bekommen.

Wir waren natürlich auch auf “The Palm, Jumeirah”, der einer Palme nachempfundenden künstlich angelegten Insel. Dort waren wir im Atlantis, dem größten Hotel von Dubai, und auch einem der größten Welt. Im Hotel wartete eines der größten Aquarien der Welt auf uns, dass wirklich einen beeindruckenende Einblick in die Unterwasserwelt bot.

Der Höhepunkt unserer Besuchs in Dubai war allerdings der Ausflug auf den mit 828 m aktuell höchsten Gebäude der Welt, dem Burj Khalifa. Die Aussichtsplattform lag leider nicht ganz oben, aber 452 m sind trotzdem mehr als beeindruckend. Mit dem Fahrstuhl ist man in genau 60 Sekunden oben. Auf der Aussichtsplattform konnte man durch ein spezielles Fernglas in den historischen Modus schalteten war da, wo sich heute ein Wolkenkratzer neben den anderen reiht, nichts als Wüste oder maximal sehr niedrige Wohngebäude der Beduinen befanden. Die Aussicht auf Dubai war wirklich atemberaubend.

Wir waren nur knapp 3 Tage in Dubai, konnten aber sehr vieles, aber leider nicht alles sehen. So gibt es z.B. in Dubai noch ein natürlich überdachtes Skicenter, an dem wir auch vorbeigefahren sind, aber leider nicht drin waren.
Dubai war auf jeden Fall ein Erlebnis, das ich jedem, den die Hitze nicht abschreckt, weiter empfehlen kann.

Wir haben natürlich auch viele Bilder gemacht. Die besten habe ich wie immer bei Google+ online gestellt. Ihr könnt sie Euch hier anschauen.

Wir hoffen, das sie Euch gefallen!

Ihr Euch könnt Euch noch ein selbst aufgenommenes Video von der Wasserfontänenshow, die jeden Tag direkt vor dem Burj Khalifa aufgeführt wird, bei Youtube anschauen.

Comment and share

Reisebericht Indien

in Urlaub

Eigentlich wollte ich von meiner Reise nach Indien einen ausführlichen Reisebericht schreiben und habe das in meinem privaten Tagebuch auch jeden Tag gemacht.

Da ich aber über die Zustände in Indien sehr enttäuscht und eigentlich auch schockiert war, möchte ich hier nur mein Fazit der Reise ziehen.

Indien, oder besser Hindustan, ist ein Land mit einer langen Geschichte mit viel Tradition und mit für uns Europäer doch recht ungewöhnlich und teilweise befremdlichen Sitten und Gebräuche. Wenn ich allein an die Rolle und Rechte der Frau in Indien denke, so denke ich, dass wir in Europa deutlich weiter sind. In Indien geht die Schere zwischen Arm und Reich doch deutlich auseinander. Man denkt, das man eine Zeitreise unternimmt, allein wenn man in Dehli zwischen den modernen Stadtvierteln und den recht alten und ärmlich wirkenden Vierteln in Alt-Dehli, aber auch in Neu-Dehli reist. Noch größer ist der Unterschied, wenn man auf das Land kommt. Da fühlt man sich wirklich um 100 Jahre und mehr in der Zeit zurückversetzt. Die hygienischen Bedingungen in Indien auf den Strassen und in den “Wohnungen” der Armen sind wirklich katastrophal. Das schlimmste ist, dass die wenigsten Einheimischen sich dessen überhaupt bewusst sind und deshalb auch nicht im Traum daran denken, dass sich diese Situation ändern muss oder kann.

Die Tatsache, das in einem eigentlich wohlhabenden Land, wie Indien, in der keine Diktatoren sich bereichern, Kinder morgens, statt in die Schule, betteln gehen müssen, um am Abend nicht mit einem leeren Magen einschlafen zu müssen, hat mich wirklich sehr nachdenklich und traurig gemacht. Als ich einmal drei Kindern je 10 Rupien in die Hand gedrückt habe, standen ein paar Minuten später, gleich drei mal soviel vor dem Bus. Das zeigt, das die Armut eigentlich noch viel Schlimmer ist, als es auf den ersten Blick schon erscheint.

Ich hatte eigentlich den größten Teil der Reise ein sehr schlechtes Gefühl, weil die Armut und der Schmutz doch die positiven Momente überwog. Ich glaube, ich werde nie den Anblick der wahren Flut an Menschen vergessen, die mehr oder weniger durch den Tag vegetieren und deren Sinn des Lebens darin besteht, irgendwie etwas Geld für Essen zu erbetteln.

Die Reise nach Indien war für uns sehr interessant, zum großen Teil für uns aber ein eher unangenehmes Erlebnis.

Wir haben natürlich auch viele Bilder gemacht. Die besten habe ich wie immer bei Google+ online gestellt. Ihr könnt sie Euch hier anschauen.

Comment and share

Jan Baer

I’m a passionated Softwaredeveloper from Munich.