# Introduction

This is an attempt to order my thoughts, ideas and fragments of knowledge in a public space. It was inspired by the awesome Wiki of [Nikita Voloboev](https://wiki.nikitavoloboev.xyz/).

Right now, this is to be considered an experiment. It was launched 2019-11-19 and may be discontinued any time. I sure hope something worthwhile is going to come out of this.


# Values

Having a set of values provides a compass for making tough decisions.

## Discipline

I recognize that in order to become the best I can possibly be, I have to make sacrifices. I have to leave my comfort zone and accept challenges. Doing the right things can be uncomfortable, hard or painful. I will not allow these inconveniences to stop me.

## Mindfulness

Life is short, and I want to consciously experience any waking moment. I use meditation to train my mind to be focused, aware and present.

## Efficiency & Impact

Make the biggest possible impact with the resources at my disposal. No waste. Focus on doing things that matter most. I keep a private [Github Repo](https://github.com/fruetel/its-my-life) where I plan quarterly and long term objectives as well as ongoing weeks.

## Agency

I won't take for granted what someone tells me I can do or cannot do. I am always on the lookout for ways to shape reality according to my own ideas. I take ownership over my life and refrain from outsourcing decisions.

### Further insights why it's a good idea to define one's core values:

* [Who are you? Unleashing your Core Values | Jennifer Jones | TEDxChathamKent](https://www.youtube.com/watch?v=c1invnTgDgY)
* [Become who you really are | Andrea Pennington | TEDxIUM](https://www.youtube.com/watch?v=5pW2b1vwwf4)


# Principles

I believe following the principles below can greatly improve quality of live and will help living in accordance with my values.

## Do not be a victim

* Don't complain
* Avoid addictions
* Eat healthy
* Be physically and mentally strong

## Quality beats quantity

* Never buy low quality
* Focus on high quality output
* Fix, replace or remove anything that's broken

## Execute

* Avoid analysis paralysis
* Fail early, fail often
* Iterate


# Routines

Doing the right things is a difficult. Remembering to do stuff at the right place and time takes a conscious effort. That effort may be reduced by incorporating repeating stuff into a routine.

## Morning Routine (Weekdays only)

* 05:30 Get out of bed
* Drink water, take vitamins
* Stretching and mobility work (5 minutes)
* Meditation (\~ 10 Minutes)
* Cold Shower

By now the kids are usually up as well and the struggle of daily life commences.

## **Evening Routine (Starts 22:00)**

* Review my day
* Define action items for next day
* Practice guitar (\~ 15 minutes)
* Take magnesium
* Prepare for bed

I try to be in bed by 22:45.


# Note Taking

Taking notes is an excellent tool to keep the clutter out of my mind. So far, I'm still struggling to implement a process that works for me.

In mid April 2020, I discovered [Roam Research](https://roamresearch.com/) as a powerful note taking tool. I try to create a daily journal page for every day in Roam where I keep as much notes as possible about my habits, todos and more or less random, noteworthy things.

I finish every day with a short review, answering a list of questions:

* Did I spend most of my day in a productive way?
* Did I spend money?
* Did I create something?
* Did I learn about anything?
* Am I annoyed or upset about anything?
* How would I rate this day?


# Software

I make sure to use the best tools available for every task at hand. This list highlights programs I have found to be valuable for running my life.

## OS X Software

* iTerm2
* Google Chrome
* Alfred
* bat
* vim
* tmux

## iOS

* Fantastical
* Scanner Pro
* Drafts
* WhatsApp
* Calm
* Todoist
* contacts+

## Cloud Software

### Evernote

I use Evernote to keep track of valuable information that I come across surfing the web or reading books. I'm still looking for a convenient way to automatically get my kindle highlights imported into notes.

### Google Drive

I use Google Drive primarily as archive for printed documents that I scan using my iPhone.

### Github

I use Github as a source code repo, but also as a continuous integration and project management tool. Github has rapidly increased their innovation speed since they've been taken over by Microsoft, and now they replaced several other tools such as Trello or Gitlab for me.

* Google Mail
* Google Calendar


# Ruby

Ruby is the language I primarily use in my job as software developer. It is an object oriented, general purpose programming language that is very well suited for web development. It is dynamically typed and puts a big emphasis on code readability. I like the elegance of well written Ruby code and the powerful testing frameworks that exist for Ruby.

### Snippets

#### Round time down to a given interval

```
FIFTEEN_MINUTES = 15 * 60
t = Time.new # 2020-05-15 08:46:58.156386 +0200

rounded_time = t - t.to_i % FIFTEEN_MINUTES # 2020-05-15 08:45:00.156386 +0200
```

### Libraries

* [Sneakers](https://github.com/jondot/sneakers) - A fast background processing framework for Ruby and RabbitMQ
* [RSpec](https://rspec.info/) - Behaviour Driven Development for Ruby. Making TDD Productive and Fun.
* [Sequel](https://sequel.jeremyevans.net/) - The Database Toolkit for Ruby
* [oj](http://www.ohler.com/oj/) - Optimized JSON

### Frameworks

* [Sinatra](http://sinatrarb.com/) - Great framework for building http based APIs
* [Hanami](https://hanamirb.org/) - Ruby framework with strong opinions about code structure
* [Rails](https://rubyonrails.org/) - The most popular MVC framework for Ruby. Mostly suited for monolithic websites. I rarely use it


# ReasonML

ReasonML is a new syntax and toolchain for the OCaml language. It was created at Facebook and is extensively used in Facebook Messenger.

Reason provides a rock solid type system and is immutable and functional by default. It compiles eo Javascript or native OCaml and plays well with React.

### Links

* [ReasonML website](https://reasonml.github.io/)
* [Create React app with ReasonML](https://medium.com/@DmytroGladkyi/create-react-app-with-reasonml-aa9c03849c3b)
* [Restack: Full-Stack ReasonML](https://github.com/dysinger/restack)


# Shell-Fu

## Recursive search and replace over all files

```
LC_ALL=C find . -type f -name '*.rb' -exec sed -i '' s/pattern/replacement/ {} +
```


# Kubernetes

## Run a temporary bash pod within a cluster

```
kubectl run my-shell --rm -i --tty --image ubuntu -- bash
```


# Living a net positive life

* **The case for creating a legacy**
  * Given there is no proof of life after death, the only surefire way to become immortal is leaving a footprint of ourselves
* **Compensating for failures with greatness**
  * E.g. Wolfgang Amadeus Mozart reportedly was kind of a jerk. However, he was able to compensate for this with incredible music that has been amazing people for centuries.
  * Takeaway: As long as you don't have Mozart's talent, better not be a jerk.
* **Leave the world a better place than it would have been without you**
  * To leave the world a bit better, whether by a healthy child, a garden patch, or a redeemed social condition; to know that even one life has breathed easier because you have lived — that is to have succeeded.
    * *Bessie Anderson Stanley, Success*
  * See also the Boy Scout Rule of Software Engineering


# 2020-01

* Got postgres up and running in my toy project kubernetes cluster. Managed to use it for the repository of my document storage service.
* Slightly injured my chest/shoulder during a heavy bench press set at the beginning of January. Doesn't seem to be serious, but kept me from seriously benching most of the month. I think I've been working in the 2-3 rep range for too long.
* Finally got my wisdom teeth extracted. They didn't cause any problems yet, but I'm sure they would have become an issue in the future.
* Tried to establish a habit of journaling and performing regular day evaluation, but still struggle finding the time and energy to go through with it.
* Made progress reading [Design Patterns in Ruby](https://www.amazon.de/Design-Patterns-Addison-Wesley-Professional-English-ebook/dp/B004YW6M6G) but did not manage to finish the book. I should spend more of my daily commute time reading books.


# 2020-02

* Quite a bit of family stuff going on. Was finally able to celebrate my father's birthday which was postponed from December because of medical issues. Also celebrated my 47th birthday with a small group of close friends.
* Finished reading [Design Patterns in Ruby](https://www.amazon.de/Design-Patterns-Addison-Wesley-Professional-English-ebook/dp/B004YW6M6G)
* Got RabbitMQ up and running in my toy Kubernetes cluster
* Built a web crawler service that listens for URIs on RabbitMQ and fetches them with the help of Amazon Lambda and API Gateway


# 2020-03

* Started working remotely due to the Covid-19 pandemia
* Started building a service that extracts URIs from HTML document to feed the crawler service I built in February
* Kinda got off track with my routines and habits. This whole Corona shit messes with my mind, just like everyone else's
* Started making heavy use of my home gym due to my public gyms and dojo being closed


# 2020-04

* Full month of remote work
* Started building two APIs for toy projects, but finished none of them
* Got back on track with my daily meditation and morning mobility routines
* Did a lot of guitar practice, especially in the week I was off work for easter vacation
* Got my feet wet with some music theory, trying out song writing with Ableton Live
* Got into daily journaling again, this time using [Roam Research](https://roamresearch.com/). This feels like an incredible tool for structuring thoughts and ideas, might become a permanent part of my [tool stack](/tools/software)


