Blogroll

Review: Andrew Einspruch - The Western Lands And All That Really Matters

Andrew Einspruchs fantasy series "The Western Land And All That Really Matters" is a series about Eloise Hydra Gumball IIIs adventures as a princes that becomes a queen solving challanges in her reign thereafter. The series consists of six books. However, at least two prequels exist today by the author.

Some time ago I finished the sixth book "The Magic Of Last Resort" and like to recommend to read the series. The books are easy to read giving examples about leadership, thoughts on problem solving in a modern world, and how to get a healthy self esteem. In the next paragraph I give an overview of the episodes. Then I answer my criteria for book receptions.

The series plays in a world with five realms. One of them is the kingdom of "The Western Lands And All That Really Matters". In the first episode "The Purple Haze" this kingdom is ruled by Eloises Mother. As a princess Eloise learns the ways of court with its pros and cons. Suddenly she must search for her sister Johanna in an adventure where she visits the "Half Kingdom" in the north to The Western Lands. In this medievishly world a team forms going through all ups and downs to find and rescue her sister. In the second book "The Star Of Whatever" Eloise and Johanna fight death sentencing and end a two century ill. The third episode "The Light Bearer" the closest friend of Princess Eloise is kidnapped. She and her team are up to the rescue through nearly the rest of the realms making new friends and getting in touch with strange cultures. After getting back from the rescue the two princesses mother dies. Therefore Eloise is in "The Crown Plonked Queen" elevated to being a queen. From now on she takes the burden of reigning with all the paperwork, leadership, and descisions to make. Ahead looms a war that she tries to tackle in "The Eastie Threat". However, she is not able to solve it. So she assembles in the last episode "The Magic Of Last Resort" a council of all leaders in the realms to bring peace to this world!

The book tells me that leadership consists of sacrifices. However, the story is also about having at least some fun and getting the right environment to work. This and several other topics (have a pinch at Andrew Einspruchs bio!

...

Has the author something to tell?

Is deeper knowledge hidden in this book?

The author has kids. They were participating in creating the plot. There is some fantasy here. ;)

Does the book cite literature?

No.

Migrate app from Heroku.com to Fly.io

I saw the other day that fly.io might be a good alternative to heroku in a discussion linked from Hackernews. So I decided to move the heroku deployment of biokiste there.

I tried to follow their easy to follow documentation, made one mistake, searched a bit here, and there and finally got it. Here you find a walkthrough how I deployed my app on fly.io. Read it first and act after that.

Other people might not deploy the app right at the first usage of fly launch and rather do the first launch after fixing app secrets.

I added ... where appropriate.

Sign up to fly.io

root@somename:/home/username# flyctl auth signup
	failed opening browser. Copy the url (https://fly.io/app/auth/cli/5c4c6f8f88b071017781955537b91fcd) into a browser and continue
	Opening https://fly.io/app/auth/cli/5c4c6f8f88b071017781955537b91fcd ...

	Waiting for session... Done
	successfully logged in as user.name@somedoma.in
	

Change to project folder

root@somename:/home/username# cd IdeaProjects/biokiste/
		

Create project on fly.io

root@somename:/home/username/IdeaProjects/biokiste# fly launch
		Creating app in /home/username/IdeaProjects/biokiste
		Scanning source code
		Detected a Dockerfile app
		? App Name (leave blank to use an auto-generated name): biokiste
		Automatically selected personal organization: User Name
		? Select region: fra (Frankfurt, Germany)
		Created app biokiste in organization personal
		Wrote config file fly.toml
		? Would you like to set up a Postgresql database now? No
		? Would you like to deploy now? Yes
		Deploying biokiste
		==> Validating app configuration
		--> Validating app configuration done
		Services
		TCP 80/443 ⇢ 8080
		Remote builder fly-builder-bold-moon-1658 ready
		==> Creating build context
		--> Creating build context done
		==> Building image with Docker
		--> docker host: 20.10.12 linux x86_64
		[+] Building 50.4s (0/1)
		[+] Building 19.5s (6/6) FINISHED
		 => [internal] load remote build context                             0.0s
		 => copy /context /                                                 12.6s
		 => [internal] load metadata for docker.io/library/openjdk:17        1.1s
		 => [1/2] FROM docker.io/library/openjdk:17@sha256:528707081fdb9562  4.7s
		 => => resolve docker.io/library/openjdk:17@sha256:528707081fdb9562  0.0s
		...
		 => => extracting sha256:a7203ca35e75e068651c9907d659adc721dba82344  2.0s
		 => [2/2] ADD backend/target/app.jar app.jar                         0.2s
		 => exporting to image                                               0.2s
		 => => exporting layers                                              0.2s
		 => => writing image sha256:2b126209d6cb8a5fe4250b64e2690a9643bcad1  0.0s
		 => => naming to registry.fly.io/biokiste:deployment-01GF39ZWFQ5NWC  0.0s
		--> Building image done
		==> Pushing image to fly
		The push refers to repository [registry.fly.io/biokiste]
		f5b4b49fbb03: Pushed
		dc9fa3d8b576: Pushed
		27ee19dc88f2: Pushed
		c8dd97366670: Pushed
		deployment-01GF39ZWFQ5NWC4CGN1RV8R1ZN: digest: sha256:1d05955caf98351498a2d8422c087e5af192f8be2aa84181797cc54f843d86ed size: 1166
		--> Pushing image done
		Image: registry.fly.io/biokiste:deployment-01GF39ZWFQ5NWC4CGN1RV8R1ZN
		Image size: 511 MB
		==> Creating release
		Release v2 created

		You can detach the terminal anytime without stopping the deployment
		Monitoring Deployment

		1 desired, 1 placed, 0 healthy, 0 unhealthy [restarts: 1] [health checks: 1 desired, 1 placed, 0 healthy, 0 unhealthy [restarts: 2] [health checks: 1 desired, 1 placed, 0 healthy, 0 unhealthy [restarts: 2] [health checks: 1 desired, 1 placed, 0 healthy, 1 unhealthy [restarts: 2] [health checks: 1 total]
		v0 failed - Failed due to unhealthy allocations - no stable job version to auto revert to
		Failed Instances

		==> Failure #1

		Instance
		  ID            = 3f0297fd
		  Process       = app
		  Version       = 0
		  Region        = fra
		  Desired       = run
		  Status        = running
		  Health Checks = 1 total
		  Restarts      = 2
		  Created       = 43s ago

		Recent Events
		TIMESTAMP            TYPE       MESSAGE
		2022-10-11T10:40:41Z Received   Task received by client
		2022-10-11T10:40:41Z Task Setup Building Task Directory
		2022-10-11T10:41:01Z Started    Task started by client
		2022-10-11T10:41:09Z Terminated Exit Code: 1
		2022-10-11T10:41:09Z Restarting Task restarting in 1.000913253s
		2022-10-11T10:41:16Z Started    Task started by client
		2022-10-11T10:41:22Z Terminated Exit Code: 1
		2022-10-11T10:41:22Z Restarting Task restarting in 1.016588055s
		2022-10-11T10:41:29Z Started    Task started by client

		Recent Logs
		2022-10-11T10:41:35.000 [info] 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.19.jar!/:5.3.19]
		...
		2022-10-11T10:41:35.000 [info] 	... 94 common frames omitted

		2022-10-11T10:41:35.000 [info] Starting clean up.
		***v0 failed - Failed due to unhealthy allocations - no stable job version to auto revert to and deploying as v1

		Troubleshooting guide at https://fly.io/docs/getting-started/troubleshooting/
		Error abort
		

Status of app

root@somename:/home/username/Development/IdeaProjects/biokiste# flyctl status -a biokiste
		App
		  Name     = biokiste
		  Owner    = personal
		  Version  = 3
		  Status   = running
		  Hostname = biokiste.fly.dev
		  Platform = nomad

		Instances
		ID      	PROCESS	VERSION	REGION	DESIRED	STATUS 	HEALTH CHECKS     	RESTARTS	CREATED
		850c94fb	app    	3      	fra   	run    	running	1 total, 1 passing	0       	2022-10-11T10:48:48Z
		

Setting secrets

Go to https://dashboard.heroku.com/apps/biokiste/settings and note the secrets you gave your app. You get them under Config Vars.These secrets have to be configured also in fly.io.

Set fly.io secrets

root@somename:/home/username/Development/IdeaProjects/biokiste# flyctl secrets set JWTSECRET <somesecretsecret> OTHER_SECRET <other secret>
		Error Could not find App
		
root@somename:/home/username/Development/IdeaProjects/biokiste# flyctl secrets list -a biokiste
		NAME          	DIGEST          	CREATED AT
		EMAIL_PASS    	880da3cc314d7b48	23m16s ago
		EMAIL_USERNAME	0e180a420d474bb4	23m16s ago
		JWTSECRET     	880da3cc314d7b48	23m16s ago
		MONGO_DB_URI  	ad51cebe16c92201	2022-10-11T10:48:26Z
		SMTP_SERVER   	d910184be71bdfeb	2m17s ago
		

Github Actions

At project creation a toml file was created. We worked in branches, so make a new branch and add this toml to version control. Change the DeployToHeroku.yml so that a fly.io API key is used to deploy there. From

name: Deploy to Heroku

		on:
		  push:
		    branches:
		      - main

		jobs:
		  build-frontend:
		    runs-on: ubuntu-latest
		    steps:
		      - uses: actions/checkout@v3
		      - uses: actions/setup-node@v2
			with:
			  node-version: '14'
		      - name: Build Frontend
			run: |
			  cd web-frontend
			  npm install
			  npm run build
		      - uses: actions/upload-artifact@v2
			with:
			  name: web-frontend-build
			  path: web-frontend/build/

		  build-backend:
		    runs-on: ubuntu-latest
		    needs: build-frontend
		    steps:
		      - uses: actions/checkout@v3
		      - uses: actions/setup-java@v2
			with:
			  java-version: '17'
			  distribution: 'adopt'
		      - uses: actions/download-artifact@v2
			with:
			  name: web-frontend-build
			  path: backend/src/main/resources/static
		      - name: Build with maven
			env:
			  EMAIL_USERNAME: ${{ secrets.EMAIL_USERNAME}}
			  EMAIL_PASS: ${{ secrets.EMAIL_PASS }}
			  SMTP_SERVER:  ${{ secrets.SMTP_SERVER }}
			run: mvn -B package --file backend/pom.xml
		      - uses: actions/upload-artifact@v2
			with:
			  name: app.jar
			  path: backend/target/app.jar

		  deploy:
		    runs-on: ubuntu-latest
		    needs: build-backend
		    environment:
		      name: production-heroku
		      url: https://biokiste.herokuapp.com/
		    env:
		      HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
		    steps:
		      - uses: actions/checkout@v3
		      - uses: actions/download-artifact@v2
			with:
			  name: app.jar
			  path: backend/target
		      - name: Login to Heroku
			run: heroku container:login
		      - name: Push Docker Container
			run: heroku container:push web -a biokiste
		      - name: Release Docker Container
			run: heroku container:release web -a biokiste
		

to a renamed file DeployToFly.yml with

name: Deploy to Fly.io

on:
  push:
    branches:
      - main

jobs:
  build-frontend:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v2
        with:
          node-version: '14'
      - name: Build Frontend
        run: |
          cd web-frontend
          npm install
          npm run build
      - uses: actions/upload-artifact@v2
        with:
          name: web-frontend-build
          path: web-frontend/build/

  build-backend:
    runs-on: ubuntu-latest
    needs: build-frontend
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-java@v2
        with:
          java-version: '17'
          distribution: 'adopt'
      - uses: actions/download-artifact@v2
        with:
          name: web-frontend-build
          path: backend/src/main/resources/static
      - name: Build with maven
        env:
          EMAIL_USERNAME: ${{ secrets.EMAIL_USERNAME}}
          EMAIL_PASS: ${{ secrets.EMAIL_PASS }}
          SMTP_SERVER:  ${{ secrets.SMTP_SERVER }}
        run: mvn -B package --file backend/pom.xml
      - uses: actions/upload-artifact@v2
        with:
          name: app.jar
          path: backend/target/app.jar

  deploy:
    runs-on: ubuntu-latest
    needs: build-backend
    environment:
      name: production-fly
      url: https://biokiste.fly.dev/
    env:
      FLY_API_TOKEN: ${{ secrets.FLY_IO_API_KEY }}
    steps:
      - uses: actions/checkout@v3
      - uses: superfly/flyctl-actions/setup-flyctl@master
      - uses: actions/download-artifact@v2
        with:
          name: app.jar
          path: backend/target
      - run: flyctl deploy --remote-only

Diploma thesis: "Simulation of electromagnetic waves in relativistic plasma with the Particle-In-Cell method"

The server of the Institute for Plasma- and Laserphysics in Aachen is no more. Therefore my german diploma thesis is not available anymore. Here it is.

Book reception: "What to Do When Someone You Love Is Depressed", Mitch Golant and Susan K. Golant

To the existing receptions e.g. on Amazon, I give here the insights I got from this book.

This book helps me to better understand people around me being in tough situations. Often I overhear and oversee reactions hinting that people have problems. I understand now that I have the responsibility to

Nice MeetUp Legacy and Innovation

They told me, I get a T-Shirt and maybe some Burgers. Because the last two times were interesting, I like the idea of advertising this Meetup. You will find more information under https://www.meetup.com/Legacy-Innovation-Hamburg. There are also Youtube links for recordings of recent Legacy and Innovation Meetups.

Free burger!!

Book reception: "Getting Things Done", David Allen

This book is a must. I have never read before such a coherent text about how to organise things in life. Usually one gets tips from friends, colleagues and such to use this technique or that one they once used or are using. However, these tips always only focus on one part of organising tasks, life, work, ..., the technologies, ...., you get the point. David Allen wrote a very practical book with much experience. I felt throughout the text, that he had every sort of experience in GTD - be it clients, himself or other people in his life.

Has the author something to tell?

If it is only this from page 204: "There are myriad ways to give up. You can ignore teh physical world and its realities and trust in the universe. I did that at one point, in my own particluar way, ant it was a powerful experience. And one I wouldn't wish on anyone. I tried to check out of my practical connections, though I didn't choose to end my life (but it was a close call!). I had much to learn about cooperating with the word I'd chosen to play in. but surrendering to your inner awareness, and its intelligence and advice for the worlds you live in, is the higher ground. Trusting yourself and the source of your intelligence is the most elegant version of experiencing freedom and manifesting personal productivity."

Is deeper knowledge hidden in the book?

Yes. The author has much experience in organising things as a consultant and from live experience.

Does the book have a bibliography?

Not as an own chapter.

Does the book cite literature?

Yes. He uses footnotes for citations. However, it is nice to see how the layout and the text plays with citing quotes of famous people, literature, and using footnotes for personal notes.

Book reception: "The ORGANIZED MIND", Daniel Levitin

After reading "Getting Things Done" this one is a must. Where David Allen falls short with scientific explanation or broader statistics, "The ORGANIZED MIND" fills the gaps. Plus one learns many things about our mind. The reader with phsycological background will surely find also some interesting details and examples.

Has the author something to tell?

Sure.
To cite Wikipedia, Daniel Levitin is a "[...] cognitive psychologist, neuroscientist, writer, musician, and record producer." These are pretty many roles. I feel throughout the book that he has talked to many people, digs deep when trying to understand the human mind, and fights with very important people or to say people with higher ranks about the truth of good organizations where people can use their minds for the good. The book alternates between recent scientific understanding of the mind, examples, and good practices.

Is deeper knowledge hidden in the book?

Yes. He did his homework. There are statistics, numbers, and examples.
Just one example: I now know that I harmed my body and my mind for 20 years of my life with sleep deprivation.

Does the book have a bibliography?

Yes. The author calls it "Notes" section.

Does the book cite literature?

Somehow. The author does not mark the citations in the text. However, in the Notes section he goes through every chapter, citing sentences of the book with some explanation and the literature where he got the information from. This is not always as expected in a phD thesis, but more than good enough.

Criteria for book receptions

Why I did not sell my Fairphone 2, but bought a Fairphone 3

After my last post I talked to Fairphone sales, the service of my phone carrier, and bought the phone. Call quality and network is much better. But surely it is, because my phone carrier switched to 3G lately and surely worked on a better network.
With pleasure the sales contact of Fairphone did not want to sell me the Fairphone 3 with the promise that call quality would be better with the Fairphone 3. She rather told me to ask my phone carrier for reasons of bad network quality. This was a good idea, because the service of my phone carrier told me that they worked on towers nearby at that time. However, I was for a weekend away from home. This does not explain the outages in the city.
However, later I bought the phone. The thoughts nagged to long.
Then Vodafone changed to 3G mobile network. Then I saw that Fairphone works on upgrades to Android 9 on old Fairphone 2s.
Well, I am happy with the new phone due to longer battery time. I also do not have to wait for the upgrades.

Repairs to come and why I will sell my Fairphone 2 to buy a Fairphone 3

This post will deal with challenges I have making calls that lead me besides other reasons to buy a new phone. Recently I called several people that complained about bad voice quality. For one of them I had to wait on hold with my phone for one or two minutes only to get told that the other one cannot understand my voice and to hang up. One possible decision could be to change the bottom module for about 30 Euro (25 Euro for the module plus shipping.). However, I did this the a half year ago the last time. Because I need the phone to use for work, I hesitate to do this.

Fairphone: Repair front camera

Recently I wondered to buy a new Fairphone 3. My phone connection at home is sometimes not good. The internet connection on my way to work and even often in the big german city I live in is also weak using Vodafone network with 1&1. However, I know that this even happens with a iPhone 7. I remembered the criterium why I bought the Fairphone 2 in the first place: Longevity. Every time I get a new phone, there is some work to be done to set it up. A new phone costs at least 300 Euro if it should last about 2 years at minimum. This includes getting a phone with stable glas, a stable phone itself, and somehow some software updates. The new Fairphone 3 costs now about 450 Euro. A new Faiphone 2 top module with front camera costs 37.5 Euro if I buy directly from Fairphone Inc. . I decided to get the module to repair my phone. The phone is two years old. I paid about 540 Euro for the new phone. Now that are 270 Euro per year. This is too much investment into a device I use to do calls with and use as organizational device. Therefore I invest 10 % of the price in a replacement module.

Now the front camera works again! After arrival of the package from Fairphone I followed this iFixit tutorial.

Start

I need some place to share my thoughts. And I need some place to experiment with web design/development. So, this is it. Expect some experiments.