Iteration & Refinement Board

When working during a iteration (or referred as sprint) within the Scrum framework the team can use a Kanban board. “Kanban” is the Japanese word for “visual signal” and is like Scrum, a framework within the Agile model. A Kanban board is used to visualize the work to be done as cards on a board, in different states. This allows you to easily see the “big picture” of where the project currently stands. As well as identify potential bottlenecks that could affect productivity. When you are using Scrum and Kanban in combination this is also referred as Scrumban.

Kanban board elements
An Kanban board with its key elements. Cards are meant to go from the left to the right column which denotes that progress has been made. The columns denote the different state the cards are in. Work-In-Progress (WIP) limits can be set per column. Swimming lanes can be used to separate different types of activities, e.g., teams, persons, feature, et cetera. Additional markers, visualizations, colors can be used on cards to further identify the work. For instance, a marker to identify how much work the task is.

One can choose to use an physical board or a digital board, or even both. Both have pros and cons. One of the benefits of having a digital board is that most digital boards automatically add all kind of details on the cards of the board. Such as the person working on the card, the amount of story points, the priority, the status and more. In addition, digital boards are flexible. You can filter, search or change them very quickly depending on your needs at that moment.

I want to share with you how we setup our Kanban board for the iteration execution and the backlog refinement. Keeping in mind that we use the Scaled Agile Framework. Within our work environment we use JIRA as the issue-tracking and project-management software. As such we have a digital board. There are many alternatives for JIRA, such as Microsoft Planner, Trello, et cetera.

Iteration Board

During the daily stand-up the iteration board (Scrum board, storyboard, Kanban board) is used to check upon the progress of the iteration. The progress is defined using 4 separate columns and different statuses. Furthermore we use swimming lanes to categorize work per feature.

ColumnStatusWhat
ToDon.a.Iteration backlog, issues which were planned during the iteration planning event. Currently in waiting to be picked-up by the team.
In Progress• In progress
• Testing
• Analysis
Issues which are in progress. Testing and analysis are added as status to give a little extra context.
Waiting• Review
• Blocked
Issues which are in waiting, such as a review or being blocked for any reason, e.g., due to a dependency to a different team or supplier.
Donen.a.Issues which are resolved.

Additionally one could add an extra column called “Verify”. Team members put the card to “Verify” when finished. The Product Owner of the team asses the card to determine if it is really done. If so, he moves it to done. This makes the handshake between the Product Owner and the team more vivid.

Backlog Refinement

The backlog refinement board is created to check and make the refinement of the backlog more visual and explicit. During the iteration the board is impromptu checked by the team. Likewise as the iteration board it has different columns to distinguish the status of refinement. Additionally “exit” criteria are defined. These elaborate on when a card is allowed to be moved to the next column.

ColumnWhatExit criteria
FunnelIssues which are created but still need further refinement. Anything can be put here.• Assigned to Program Increment
• Feature is known
RefinementIssues which need to be refined more. • Title gives context
• Assigned to a person
• Acceptance criteria known
• Story points known
• Team definition of ready is applied
• Assigned to iteration
ReviewIssues which are refined by the team and need to be reviewed by the Product Owner.• Reviewed by Product Owner
• Handshake between Product Owner and team
BacklogIssues which are agreed upon and are ready to be picked-up in an iteration.No exit criteria, issue is now assigned to iteration and can be picked-up by the team.
RejectedIssues which are rejected by the Product Owner and the team.Not applicable

Inspirational Video’s

Below a list of video’s which are, in my opinion, quiet inspirational and are foremost definitely worth sharing. The videos are related to leadership, trust and personal development.

Watch one or all the videos and enjoy! Do not forget to take a moment to reflect on the message and your own perspective.

How to give an A

Eagles & Ducks

Meals per Hour

First Follower

The Antonomy of Trust

The single most important thing you can do for your stress

Start with why

The surprising truth about what motivates us

Arithmetic, Population and Energy – A talk by Al Bartlett

Look-Up

My Movie & TV Series Viewing Behavior Analyzed

Somewhere in 2008 I made it a habit to add the movies and TV series I watched on my “watchlist” on IMDB. The watchlist is a simple way to keep track of what you watched and what not. Currently there are 1391 titles on this list, click here to download it. Now I was quiet curious how much time it would cost if one would watch all titles in one go.

This accumulated to the astonishing number of 386156 minutes that is equivalent to watching 268 days 3 hours and 56 minutes non-stop. Of this amount this is 103 days 4 hours and 26 minutes watching movies and 164 days 23 hours and 30 minutes of TV series.

Because I was quiet flabbergasted by that number I started doing some more research, just out of curiosity. Which genre’s did I watch the most? From which year did the most movies or TV series originated from? And since I have a Netflix subscription you can also check when you you watched what. Below are the results of the research, mainly for your enjoyment 😉. In addition, at the end of this blog is the code I used to extract the total amount of run-time from TheMovieDB. Note, the watchlist from IMDB also contains the run-time, but for a TV series it only displays the run-time per episode and not the total amount. Therefor, I used the database of TheMovieDB to obtain the correct value.

Finally I was also wondering how much money was spent on Netflix. This accumulated to euro. Quiet a number, but luckily we share our account with multiple people.

Number of entries based on the release year of the movie / tv series.
Number of entries based on genre.
Number of entries accumelated per month based on the data of Netflix
<script src="//code.jquery.com/jquery-1.12.4.min.js"></script>
<script>
// IMDB ID's, e.g., tt0111161 for The Shawshank Redemption https://www.imdb.com/title/tt0111161/
// Note this can also be ID's from other movie websites, see: https://developers.themoviedb.org/3/find/find-by-id
var imdbIDs = ["tt0111161"];
// API key from https://www.themoviedb.org/documentation/api
var apikey = "";
var moviesRunTime = [];
var seriesRunTime = [];

// Search for themovieid identifier
function getMovieDBIdentifier(imdbID) {
  var url = "https://api.themoviedb.org/3/find/" + imdbID + "?api_key=" + apikey + "&amp;language=en-US&amp;external_source=imdb_id";
  $.getJSON(url, function(json) {
    console.log("url: " + url);
    if (json.movie_results.length > 0) {
      getMovieDBRunTimeMovies(json.movie_results[0].id);
    } else if (json.tv_results.length > 0) {
      getMovieDBRunTimeSeries(json.tv_results[0].id);
    } else {
      console.log("Something else...");
    }
  });
}

// Find runtime of the movie
function getMovieDBRunTimeMovies(id) {
  var url = "https://api.themoviedb.org/3/movie/" + id + "?api_key=" + apikey + "&amp;language=en-US";
  $.getJSON(url, function(json) {
    runtime = json.runtime;
    if (!isNaN(runtime))
      moviesRunTime.push(runtime);
});
}

// Find runtime of tv series
function getMovieDBRunTimeSeries(id) {
  var url = "https://api.themoviedb.org/3/tv/" + id + "?api_key=" + apikey + "&amp;language=en-US";
  $.getJSON(url, function(json) {
    runtime = json.episode_run_time[0]*json.number_of_episodes
    if (!isNaN(runtime))
      seriesRunTime.push(runtime);
    else
      console.log("Could not calculate runtime");
  });
}

imdbIDs.forEach(id => getMovieDBIdentifier(id));
console.log("Sum movies runtime: " + moviesRunTime.reduce((a,b) => a + b,0) + " minutes");
console.log("Sum series runtime: " + seriesRunTime.reduce((a,b) => a + b,0) + " minutes");
</script>

Discretization Techniques

In Digital Filter-Implementation we have shown how digital filters are actually implemented using difference equations. In the blogs, Filters and Controllers in control system, we have shown a couple of basic filters and the PID controller in the continuous time domain. Finally, in Digital Control Systems 1.01 and 1.02 we shown what comes along with digital systems.

In this article we show how to transfer, transfer functions defined in the continuous-time domain to discrete-time domain; discretization. There are several techniques to accomplish this; i) modeling the sampled system or ii) by using Z-transform mappings.

  1. Modeling the sampled system
    • Zero-order hold
    • First-order hold
    • Other higher order hold circuits
  2. Z-transform mappings
    • Forward euler
    • Backward euler
    • Trapeziod / Tustin
    • Tustin with pre-warp
    • Matched pole zero
    • Modified matched pole zero

In this article we only go in detail in the Z-transform mapping techniques.

Finite difference methods

The first three methods actually use the finite difference methods to approximation the derivative and obtain a mapping from the continuous (s = j\omega_c) to the discrete (z = e^{j\omega_dh}) time domain. Herein, the forward and backward Euler methods use the following approximations

    \[\dot{x}(kh) \approx \frac{x(kh +h) + x(kh)}{h} \rightarrow s = \frac{z - 1}{h}\]

    \[\dot{x}(kh) \approx \frac{x(kh) - x(kh - h)}{h} \rightarrow s = \frac{1 - z^{-1}}{h}\]

Whereas the trapeziod method, also referred as the Tustin’s method, uses the approximation

    \[\frac{\dot{x}(kh) + \dot{x}(kh + h)}{2} \approx \frac{x(kh + 1) - x(kh)}{h} \rightarrow s = \frac{2}{h}\frac{z-1}{z+1}\]

Note that the forward Euler, stable poles in s may be mapped to unstable poles in z. For both backward Euler as Tustin’s method, stable poles in s implicates stable poles in z.

Tustin with pre-warping

When determining discrete-time frequency response of the Tustin rule, H_d(z) with z = e^{j\omega_dh}, to a continuous time transfer function H_c(s), it reveals a relation between the continuous and discrete time domain; Every frequency point in continuous time domain is mapped to the discrete time domain via \omega _{c}={\frac{2}{h}}\text{tan}\left(\omega_dh/2\right) \Leftrightarrow \omega_d = \frac{2}{h}\text{arctan}\left(\omega_ch/2\right).

    \begin{gather*}H_d(z) = H_c(s)|_{s = \frac{h}{2}\frac{z-1}{z+1}} \Leftrightarrow H_d(z) = H_c\left(\frac{h}{2}\frac{z-1}{z+1}\right) \\ \Leftrightarrow H_d(e^{j\omega_dh}) = H_c\left(\frac{h}{2}\frac{e^{j\omega_dh}-1}{e^{j\omega_dh}+1}\right) \Leftrightarrow H_d(e^{j\omega_dh}) = H_c\left(j\frac{2}{h}\text{tan}\left(\frac{\omega_dh}{2}\right)\right)\end{gather*}

The tangent introduces a non-linear mapping where the distortion is small when \omega_d h is small. We can compensate for this by setting \omega_c =\frac{2}{h}\text{tan}\left(\omega_dh / 2\right) for every frequency we have control over. That is to say, first replace the critical frequencies in the continuous-time transfer functions via

    \begin{gather*}(s + \omega) \rightarrow (s + \hat{\omega}) \text{ with } \hat{\omega} = \frac{2}{h}\text{tan}\left(\omega h / 2\right) \\(s^2 + 2\beta\omega s + \omega^2) \rightarrow (s^2 + 2\beta\hat{\omega} s + \hat{\omega}^2) \text{ with } \hat{\omega} = \frac{2}{h}\text{tan}\left(\omega h / 2\right)\end{gather*}

Secondly apply the normal Tustin transformation s = \frac{2}{h}\frac{z-1}{z+1}. Finally, scale the static gain of the discrete transfer function to match the gain of the continuous-time transfer function, e.g., H_c(j\omega_0) = k \cdot H_d\left(e^{j\omega_0 h}\right) with \omega_0 = 0 and solving for k.

Remark that most programs, such as Matlab only offer to replace one critical frequency via their discretization (c2d) function. They apply the transformation

    \[s = \frac{\omega_0}{\text{tan}\left(\omega_0 h / 2\right)}⁡ \frac{z - 1}{z + 1}\]

In which \omega_0 is the frequency chosen by the user to be matched in both continuous as discrete time domain.

Matched Pole Zero

This method maps the poles and zeroes according the the relation z = e^{sh}. That is to say,

    \begin{gather*}(s + \omega) \rightarrow z - e^{-\omega h} \\(s + a)^2 + b^2 \rightarrow z^2 - 2\left(e^{-ah}\text{cos}\left( b h \right)\right)z + e^{-2ah}\end{gather*}

If the numerator (zeros) is of lower order than the denominator (poles), add powers of (z + 1) to the numerator, until numerator and denominator are of equal order. This causes an averaging of the current and past input values, as in Tustin’s method.

However, it might be possible that it is desirable to have the output only depend on the past values. For instance, due to costly computing power. In that case, only add as much powers of (z + 1) such that the numerator is of lower order than the denominator by 1. In which case, this method is referred to as the modified matched pole zero.

Likewise, as with the Tustin transform with pre-warping, scale the static gain of the discrete transfer function. Note that this method preserves stability and provides less high frequency response error.

Frequency response example

The figure below shows the frequency response of a continuous time transfer function as well as the discretized transfer functions using the various methods discussed. The continuous-time transfer function PID controller with a second order low-pass filter and two notches located at 950 and 1150 Hz. A sampling frequency of 5000 Hz was used.

The forward and backward Euler methods cannot track the controller correctly at around 300 Hz. Furthermore, they are unable to replicate the fast dynamical behavior of the two notches. As such, this is a clear example of why one should not use this methods. Tustin’s method shows the same dynamics as the continuous time transfer function, but due to the distortion in the frequency domain the notches are not located at the correct frequency. Tustin’s method combined with pre-warping is able to track the notches but loses magnitude when reaching the Nyquist frequency. In addition there is a phase offset. The Matched Pole Zero method is able to match the magnitude response very well, but has a large difference in phase which depending on the performance criteria might become problematic.

The Matlab code below was used to generate the plots.

clear all;
close all;
clc;

set(cstprefs.tbxprefs,'FrequencyUnits','Hz')

% Init variables and define continuous-time system
s = sym('s');
z = sym('z');
fs = 5e3;
h  = 1/fs;

Kp    = 1;
fd    = 100;
fi    = 10;
flp   = 400;
wlp   = 2*pi*flp;
blp   = 1;
 
fp{1} = 950;
fz{1} = 950;
bp{1} = 0.1;
bz{1} = 0.01;
wp{1} = 2*pi*fp{1};
wz{1} = 2*pi*fz{1};
 
fp{2} = 1150;
fz{2} = 1150;
bp{2} = 0.1;
bz{2} = 0.005;
wp{2} = 2*pi*fp{2};
wz{2} = 2*pi*fz{2};
 
Gc.sym = (wp{1}^2)/(wz{1}^2)*(s^2 + 2*bz{1}*wz{1}*s + wz{1}^2) / ...
                             (s^2 + 2*bp{1}*wp{1}*s + wp{1}^2) * ...
         (wp{2}^2)/(wz{2}^2)*(s^2 + 2*bz{2}*wz{2}*s + wz{2}^2) / ...
                             (s^2 + 2*bp{2}*wp{2}*s + wp{2}^2) * ...                     
         (Kp*(1/(2*pi*fd)*s + 1 + (2*pi*fi)/s)*(2*pi*flp)^2 / ...
         (s^2 + 2*blp*(2*pi*flp)*s + (2*pi*flp)^2));

[Gc.num,Gc.den] = numden(Gc.sym);
Gc.tf = tf(sym2poly(Gc.num),sym2poly(Gc.den));

% Forward Euler
Gd1.sym = subs(Gc.sym,s,(z-1)/h);
[Gd1.num,Gd1.den] = numden(Gd1.sym);
Gd1.tf = tf(sym2poly(Gd1.num),sym2poly(Gd1.den),h);

% Backward Euler
Gd2.sym = subs(Gc.sym,s,(z-1)/(h*z));
[Gd2.num,Gd2.den] = numden(Gd2.sym);
Gd2.tf = tf(sym2poly(Gd2.num),sym2poly(Gd2.den),h);

% Tustin
Gd3.sym = subs(Gc.sym,s,2*(z-1)/(h*(z+1)));
[Gd3.num,Gd3.den] = numden(Gd3.sym);
Gd3.tf = tf(sym2poly(Gd3.num),sym2poly(Gd3.den),h);

% Tustin with pre-warping
wlp   = 2/h*tan(wlp*h/2);
flp   = wlp/(2*pi);
wp{1} = 2/h*tan(wp{1}*h/2);
wz{1} = 2/h*tan(wz{1}*h/2);
wp{2} = 2/h*tan(wp{2}*h/2);
wz{2} = 2/h*tan(wz{2}*h/2);
      
Gc2.sym = (wp{1}^2)/(wz{1}^2)*(s^2 + 2*bz{1}*wz{1}*s + wz{1}^2) / ...
                              (s^2 + 2*bp{1}*wp{1}*s + wp{1}^2) * ...
          (wp{2}^2)/(wz{2}^2)*(s^2 + 2*bz{2}*wz{2}*s + wz{2}^2) / ...
                              (s^2 + 2*bp{2}*wp{2}*s + wp{2}^2) * ...                     
          (Kp*(1/(2*pi*fd)*s + 1 + (2*pi*fi)/s)*(2*pi*flp)^2 / ...
          (s^2 + 2*1*(2*pi*flp )*s + (2*pi*flp)^2));   

[Gc2.num,Gc2.den] = numden(Gc2.sym);
Gc2.tf = tf(sym2poly(Gc2.num),sym2poly(Gc2.den));

Gd4.sym = subs(Gc2.sym,s,2*(z-1)/(h*(z+1)));
[Gd4.num,Gd4.den] = numden(Gd4.sym);
Gd4.tf = tf(sym2poly(Gd4.num),sym2poly(Gd4.den),h);

% Matched Pole Zero
Gd5.tf = c2d(Gc.tf,h,'matched');

% Frequency spacing
f = logspace(0,log10(5000),3000);
wc = 2*pi*f;
wd = wc(wc < 2*pi*2500);

% Plot
figure;
hold all;
bode(Gc.tf,wc);
bode(Gd1.tf,wd);
bode(Gd2.tf,wd);
bode(Gd3.tf,wd);
bode(Gd4.tf,wd);
bode(Gd5.tf,wd);
xlim([1 3500]);
grid on;
legend({'Continuous-time','Forward Euler','Backward Euler', ...
    'Tustin','Tustin with pre-warping','Matched Pole Zero'});

Control System & PID controller

Control systems, as it is being taught on many universities in the world, regulates the behavior of a system using feedback. Systems may be mechanical, electrical, biological, economical or any other domain. Feedback as in many aspects of life is crucial. A target value r for an essential variable of the system, the process value y, is set. The target value is also referred as setpoint or reference value, whereas the process value is referred as measurement value. The control system calculates the difference between the setpoint and the process value, called the error e of the control system.

From this point we will focus mainly on the structure, design and implementation of the linear feedback controller. The figure below shows the structure of the control system with a linear feedback controller. We neglect any possible source of disturbance.

The linear feedback controller is often the combination a controller and multiple filters. The controller of the control system computes a control value u which is applied to the process and tries to regulate the error e to zero. A filter also often referred as compensator, is tries to improve the characteristics and performance.

The most famous feedback controller is the Proportional–Integral–Derivative (PID) controller is defined by (1). Based on the error it calculates a correction to be applied to the process based on proportional, integral, and derivative terms, respectively. Heuristically, the terms of a PID controller can be interpreted as corresponding to time: the proportional term depends on the present error, the integral term on the accumulation of past errors, and the derivative term is a prediction of future error, based on current rate of change.

(1)   \begin{equation*}  H(s) = K_d \cdot s + K_p + K_i \frac{1}{s} \end{equation*}

Herein, K_d = K_p / (2\pi f_d) and K_i = K_p 2 \pi f_i for which f_d and f_i denote the frequency at which the derivative and integral action start to become active. In addition K_p denotes the proportional gain of the controller. An ideal derivative is not causal – its output depends on future inputs see (2) – therefore, the PID controller is often combined with either a first or a second order low-pass filter (3). This makes the PID controller causal, depending only on past and current inputs but not future inputs.

(2)   \begin{equation*}  \frac{\mathrm{d}f(t)}{\mathrm{d}t} \triangleq \lim_{h \rightarrow 0} \frac{f(t + h) - f(t)}{h} \end{equation*}

(3)   \begin{equation*}  H(s) = \left(K_d \cdot s + K_p + K_i \frac{1}{s}\right) \frac{\omega_{\text{lp}}^2}{s^2 + 2\beta\omega_{\text{lp}}s + \omega_{\text{lp}}^2} = \frac{\left(K_d s^2 + K_p s + K_i\right) \omega_{\text{lp}}^2}{s^3 + 2\beta\omega_{\text{lp}}s^2 + \omega_{\text{lp}}^2s} \end{equation*}

Note that the equation (3) results in a third order polynomial. With some algebra this can be reduced into a first order and second order polynomial. That is to say;

(4)   \begin{equation*} H(s) = \frac{K_i}{s} + \frac{\left(\omega^2_\text{lp} K_d - K_i\right)s + \left(\omega^2_\text{lp} K_p - 2\beta\omega_\text{lp} K_i\right)}{s^2 + 2 \beta \omega_\text{lp} s + \omega_\text{lp}^2}\end{equation*}

As such, the integral action is decomposed from the derivative and gain action along with the second order low-pass filter. With the integrator in parallel, it is possible to perform a saturation or anti-windup on the integrator signal.

Below you see an interactive bode diagram of a PID controller combined with a second order low-pass filter with some typical values. You clearly see the integrator action up to 10 [Hz], followed by the proportional gain action from 10 to 25 [Hz]. The derivative term is visible from 25 to 300 [Hz] and eventually the low-pass filter from 300 [Hz] and further.

Pocket Leaflet First Aid (Dutch)

In 2017 I participated with the “Nijmeegse vierdaagse” also called the The Four Days Marches. This is a walking event where people (~43.000 people) walk four consecutive days a distance between 30 to 50 kilometers a day, depending on age and gender.

During this event I had to go numerous of times to the First Aid, provided by the Dutch Red Cross, for my blisters on my feet. The organization was really impressive. As follows I decided the join the Red Cross in the Netherlands as a First Aid volunteer.

At our branch of the Red Cross, so called “LiBoZa” cards where shared. “LiBoZa” is short for “Linker Boven Zak”, which translates to “Left Side Upper Pocket”. It is a small leaflet which fits in the pocket of your blouse. This type of leaflet shows all kind of useful details about a certain topic summarized. These are used to;

  • For one as to remember the most important content. As a trained individual you are supposed to know all the content. However, in the beginning when I had little to no experience I found these leaflets very useful to check upon.
  • Discussion, nowadays I use the leaflet more as a conversation starter

Since I liked providing aid to people I also joined the emergency response officers at my company. At that moment I decided to produce my own leaflets. For two reasons; i) optimizing the content of the leaflet. Online there are various leaflets and all of them have different content, ii) I wanted to add leaflets about safety and fire related topics.

So without further I want to share my produced leaflets with you. Three notes;

  1. I am not a (medical/fire/safety) professional, I just got the content from the internet from multiple sources and tried to combine the best out of all of them, so in no way I will be held responsible. In case you need help always request help from a professional.
  2. Furthermore, the leaflet is in Dutch. So I apologies if you are English. I do want to create a translation someday, but at this moment it is only in Dutch.
  3. If you are interested in the source documents, you can always contact me.

Good (must) reads

Before I go to bed, on a raining day or when I am alone, I like to read. From Fantasy Books to Magazines. However, after finishing university I started reading more self-help and professional books. Since then I have read numerous books. As such, I want to share the list below with you which I believe is worth reading when you are interested in professional development.

  • Getting Things Done by David Allen

Should need no introduction. It is the book on productivity and effectiveness in your daily work. It rests on the idea of moving planned tasks and projects out of the mind by recording them externally and then breaking them into actionable work items. This allows attention to be focused on taking action on tasks, instead of recalling them.

  • Strenghts Finder by Marcus Buckingham & Donald O. Clifton

A self-help book about finding your own talents which result in an individual’s tendency to develop certain skills more easily and excel in certain fields in a sustainable way while failing or not being able to sustain success or high levels of effectiveness in other fields. However, note that each talent also has pitfalls.

  • One Minut Manager by Ken Blanchard & Spencer Johnson

A very short book about three techniques of an effective manager: one-minute goals, one-minute praisings and one-minute reprimands.

  • I don’t have to make everything all better by Gary B. Lundberg & Joy S. Lundberg

A book about effective communication with your partner, children, friends, parents, colleagues and anyone else. The book addresses an all too common dilemma that arises when others expect you to solve their problems for them. The book is refreshingly straightforward and inspiring using entertaining.

  • Our Iceberg is Melting by John Kotter & Holger Rathgeber

A must read about change management. It tells the story of a colony of penguins facing a dilemma. But contained within the story and the characters is a powerful message about the fear of change and how to motivate people to face the future and take action.

  • The 7 Habits of Highly Effective People by Stephen R. Covey

Like Getting’s Things Done and the One-Minute-Manager, the 7 Habits of Highly Effective People is a self-help book about effectiveness. As the title says it explains 7 habits how one self can be more effective in both personal as professional life. It is a bestselling book and a must read for everyone who wants to work in becoming more effective.

  • The Emotional DNA by Pierre Capel

The book to understand emotions and where they come from. Feelings namely do not exist, they emerge. When we talk about our feelings, we know exactly what we are talking about. But if we want to know how they emerge, where they come from and what they do to us, then we are not so sure. For many people, feelings are like a fog that floats through our body. But is that true? Feelings are linked to a rock-solid biochemistry, that has an enormous impact on our functioning.

  • The Art of War by Sun Tzu

Twenty-Five Hundred years ago, Sun Tzu wrote this classic book of military strategy based on Chinese warfare and military thought. Since that time, all levels of military have used the teaching on Sun Tzu to warfare and civilization have adapted these teachings for use in politics, business and everyday life. The Art of War is a book which should be used to gain advantage of opponents in the boardroom and battlefield alike. The Art of War is still a recommended read for military officers in training.

  • How to win friends and influence people by Dale Carnegie

The bestselling book of Dale Carnegie’s about proper day-to-day communication. Its advice has remained constant and applicable across the years for a reason. It’s simple and his techniques make perfect sense. Definitely a must-read.

Birthday Calendar

Since recently I did not yet had a birthday calendar in my apartment. This was because I namely dislike the very ordinary “toilet kind” of birthday calendars, see below on the left. More than a year ago I stumbled upon a very original birthday calendar on Pinterest. Immediately I became spontaneous, it has a very nice look, it is original with its clothespins and easy to maintain as well as built.

A while ago I finally gave myself the time to replicate the idea. Using the clothespins I determined what the minimum size of the wooden plank had to be, 125 [cm] in length and 25 [cm] in width. At first I tried to find an old plank of a pallet. Those often have that old look which I wanted to go for. Unfortunately none of them did met the requirements w.r.t. the size. So in the end I just bought a plank from a hardware store and sawn it to the correct dimensions.

To do the writing of the header “birthday”, the months and the names of the people I bought a white and black acrylic marker called “DECO painter matt” of the brand Marabu. To make sure that the letters on the wood of the word “birthday” would be consistent, I made a small mold out of paper. The months I just drawn out of hand, same for the names and days on the clothespins.

DECO painter

In the example on Pinterest the clothespins are colored. This can be achieved by coloring the clothespins with paint or by buying colored clothespins. You can find the latter by searching on children toys. I did not color them and searched for old and worn clothespins. If you do not have those you can buy new ones and put them in the watery garden and wait a week or two.

The result

“Down” time games

When having a training, introduction or travel with a large group there might be moments in which everyone is a bit bored or might be waiting for something or someone. For these moments you can use so called “down” time games (in Dutch dodemoment spelletjes). These are small simple games which you can do with your group. In this blog I explain a couple of down time games for you.

Floating

You will need four chairs arranged in a square (close together). Four people sit on the chairs. Proceeding clockwise, they recline onto their neighbors’ laps (keeping their feet on the ground). The chairs are pushed out from under the sitting/reclining people, leaving a floating group. How long can they keep it up? When there are no chairs available, you can use four people to play the part of the chair by standing on their hands and feet. In the video below you see it in action.

The Human Knot

One person will move out of the group and shuts his eyes. The group will stand in a circle next to each other and holds hands. After this points hands should stay connected at all times. Following everyone will move crisscross, above or underneath each other to form a human knot. The person who was placed out of the group then has the task to untie the “knot”.

The Land of No Idea

Far, far away lays the Land of No Idea. They do have people there, but no children; they have membranes, but no skin; they have no vehicles, though they do have cars and scooters. They have computers, but no modems, monitors, or keyboards. Some words do exist while others do not. The answer lies in the name of the game; The Land of No Idea. The catch is in pronunciation of the word “idea”. The correct sentence would be; The Land of no “id”. So all words with either an “i” or “d” do not exist.

Monkey, monkey, elephant

A leader tells the children that he/she can do something the others can’t, and then shows them: He/she says the sentence “monkey monkey monkey monkey elephant monkey elephant monkey monkey monkey monkey” and explains the movements that go with it: Each time you say “monkey” you touch one of the fingers on your left hand with your right index finger. The sequence is: little finger, ring finger, middle finger, index finger and thumb, and then back again from the thumb to the little finger. When you say “elephant”, you slide your index finger from the top of your index finger to the top of your thumb, or the other way round. When the leader has explained it, he/she shows them how to do it once. He/she then makes an additional movement that is hardly noticeable. Everyone has to repeat the game with their fingers. It is only when the children figure out they also need to make the additional movement that they are told they have got it completely right. A suggestion: The ‘hardly noticeable’ movement could be that, after finishing the sentence, you fold your arms, and then say to one of the children: “Now it’s your turn.”

Black magic

All the players sit in a circle, and there are once again two game leaders (A and B). B leaves the room or space briefly. A asks someone from the circle to choose a nearby object, which B will have to guess. B is now called back. A begins to point out different nearby objects. For example: “Is it these trousers?” -“No”- “Is it that watch?” – “No”- and so on. B will continue to answer “No” to A’s questions, until A mentions the correct object – the one that the players previously agreed on. B will now answer “Yes”. How is that possible? How does it work? The clue is in the title – black magic. A will mention all kinds of objects that are not black. After mentioning several objects, A will mention one that is completely black. The next object that A mentions is the one that has been agreed on with the group. In other words, the game leaders know which object it will be beforehand: it is always the object that comes after the black object.

Who am I

Everyone takes a small piece of paper and writes down a name of a person that everyone knows, taking care not to show it to the person next to them. It could be someone famous or a personal acquaintance, or a fictional character, for example. You then attach the note onto the forehead of the person next to you using sticky tape. When everyone has a name on their forehead the game can begin. Taking turns, everyone asks yes/no questions about themselves, for example, “am I a woman?”, which the group then answers with “yes” or “no”. If the answer to the question is yes, the same person can ask another question; if it is no, the turn passes to the next person. The winner is the first person to work out who he or she is – the rest of the group can continue playing if they wish.

Black Stories

The game leader tells how a person died. The group then has to guess how the person has died and may only ask questions which can be answered with yes or no. Online you can find numerous amount of riddles or apps.

  • A guy is lying dead in a phone booth; the handset is off the hook, and there is glass lying on the ground outside the booth.

Solution: He called his wife to tell her how big the fish was that he had caught. The wife asks, “How big was it?” The man stretches out both arms to indicate the length (“THIS big!”), ramming both arms through the glass. In doing so, he cut his wrists and died.

  • A man is lying dead in the forest, wearing his swimming trunks.

Solution: The man had been swimming in a lake/ocean. A firefighting aircraft scooped him up and dumped him in a burning forest. The man died from the fall.

  • A man has hanged himself from the roof of a warehouse four meters high (he is hanging two meters above the ground). The warehouse is in the desert, and there is no ladder or similar object to be found. How did he do it?

Solution: He was standing on a block of ice two meters high. The ice melted and evaporated.

  • A man went out on the street, saw a hotel, and knew that he was bankrupt.

Solution: He was playing Monopoly.

  • A sailor goes into a restaurant, eats an albatross sandwich, and then falls over dead.

Solution: He had been shipwrecked a while ago. There had been nothing to eat on the uninhabited island. Several of his companions had died of hunger. He and his buddy were also ravenous. His buddy made two “albatross sandwiches,” which they quickly devoured. It now appears that the delicacy had not been albatross at all, but one of their former shipmates. This was too much for the man.

  • A man lives on the twelfth floor of an apartment building. In the morning, he takes the elevator to the ground floor to go to work. When he returns in the evening, he takes the elevator to the sixth floor and takes the stairs to the twelfth. When it’s raining, however, he takes the elevator to the twelfth floor. Why?

Solution: The man is a midget and can reach the button for the sixth floor, but no higher … unless he has an umbrella with him.

  • A man is sitting in the non-smoking section of the Swiss railways. He grabs his gun and shoots himself through the head. If he had been sitting in a smoking compartment, this would not have happened. Why not?

Solution: The man had been blind for years and was just returning from having surgery on his eyes. The surgeon had said that he could not yet remove the bandage from his eyes. Once in the train, however, he couldn’t wait, and he removed his bandage. At that precise moment, the train entered a tunnel and the compartment was shrouded in darkness. The man thinks that the operation had failed and that he will never be able to see, and so he shoots himself in the head. If there had been a smoker in the compartment, he would have seen the red tip of the burning cigarette.

  • The smallest man in the circus discovers sawdust under doormat: he now knows that he is growing!

Solution: As a midget, the smallest man in the circus earns his money with his stature. He does not notice that he is growing. To disguise this, his girlfriend regularly saws thin chips off the chair legs. She sweeps the sawdust under the doormat.

  • Romeo and Juliet are lying dead on the bed, and the window is closed.

Solution: Romeo is a cat, and Juliet is a fish. Romeo choked to death while eating Juliet.

Vikings

The group is in a circle. At the beginning one Viking is appointed. The two people sitting on the left and right of the Viking are the rowers. The rest is the sea. The Viking starts holding his hands like two horns to his head (like a viking helmet). Following he makes a growling Viking sound; aarrrrghh, raaaaaarrrrrrrw, et cetera. At the same time the rowers make a rowing movement (to the correct side) and say; row, row, row, row, et cetera. The people appointed as sea imitate waves with their hands and constantly say; woesh, woesh, woesh, et cetera. At a random point in time the Viking appoints a new Viking who adopts the new role and as such there will also be new rowers and a new sea.

Implementation of a filters

The discrete-time transfer function H(z) is often obtained from its counterpart, the continuous-time transfer function H(s) via discretization. A discrete-time transfer function has the following form:

(1)   \begin{equation*}H(z) = \frac{Y(z)}{X(z)} = \frac{\sum_{i = 0}^{N} b_i z^i}{\sum_{j = 0}^{M} a_j z^j}\end{equation*}

Herein, X(z) is the input and Y(z) is the output of the system, N and M are the degree of the numerator and denominator, respectively. Where N \leq M, meaning we are dealing with a proper transfer function. While (1) is valid for any order it is not recommended to directly use transfer functions of high order. These can namely introduce numerical problems very quickly. Rather factorize the numerator and denominator of (1) into a cascade of first and second order polynomials.

    \begin{equation*}H(z) = K \frac{\displaystyle \prod_{i = 0}^V \left( z + b_{0i} \right)}{\displaystyle \prod_{i = 0} ^W\left( z + a_{0i} \right)} \frac{\displaystyle \prod _{i = 0}^N \left( z^2 + b_{1i} z + b_{2i} \right)}{\displaystyle\prod_{i = 0}^M \left( z^2 + a_{1i} z + a_{2i} \right)}\end{equation*}

Now let us look at the simple discrete-time transfer function of order two:

    \begin{equation*}H(z) = \frac{b_0 z^2 + b_1 z + b_2}{z^2 + a_1 z + a_2}\end{equation*}

This function is non-causal, because it depends on future inputs. Therefor, both the numerator and denominator are multiplied by reciprocal of the highest order of z occuring in the denominator, in this case z^{-2}, to make the system causal. Hence, we obtain:

    \begin{equation*}H(z) = \frac{b_0 + b_1 z^{-1} + b_2 z^{-2}}{1 + a_1 z^{-1} + a_2 z^{-2}}\end{equation*}

Followingly, using the linearity and time-shifting properties of the \mathcal{Z}-transform, i.e., \mathcal{Z}(a_1 x_1[n] + a_2 x_2[n]) = a_1 X_1(z) + a_2 X_2(z) and \mathcal{Z}(q^{-k}x[n]) = z^{-k}X(z), we obtain the difference equation. Remark that the shift operator q is defined as q^kx[n] = x[n+k], the forward shift operation and q^{-k}x[n] = x[n-k], the backward shift (delay) operator. As a result we obtain,

(2)   \begin{equation*}y[n] = \frac{b_0 + b_1 q^{-1} + b_2 q^{-2}}{1 + a_1 q^{-1} + a_2 q^{-2}} x[n]\end{equation*}

Rewriting (2) gives us:

    \begin{gather*}\left( 1 + a_1 q^{-1} + a_2 q^{-2} \right) y[n] = \left( b_0 + b_1 q^{-1} + b_2 q^{-2} \right) x[n] \\\Leftrightarrow y[n] + a_1 y[n-1] + a_2 y[n-2] = b_0 x[n] + b_1 x[n-1] + b_2 x[n-2] \\\Leftrightarrow y[n] = b_0 x[n] + b_1 x[n-1] + b_2 x[n-2] - a_1 y[n-1] - a_2 y[n-2]\end{gather*}

This last equation is the difference equation which we can easily implement on our digital platform. Numerous methods exists on how to implement a filter. Four of these methods are closely related to each other. These are:

  • Direct form I
  • Direct form II
  • Transposed direct form I
  • Transposed direct form II

Direct form I

The direct form I is an FIR filter followed by an IIR filter. That is to say, it implements Y(z) followed by \frac{1}{X(z)}

(3)   \begin{equation*}y[n] = b_0 x[n] + b_1 x[n-1] + b_2 x[n - 2] - a_1 y[n-1] - a_2 y[n-2]\end{equation*}

In an algorithm you can implement it as:

yk = b0 * xn + b1 * x1 + b2 * x2 - a1 * y1 - a2 * y2
x2 = x1
x1 = xn
y2 = y1
y1 = yn

Where, x1, y1, x2 and y2 are the four state variables.

Direct form II

The direct form I is an IIR filter followed by an FIR filter. Which implements \frac{1}{X(z)} followed by Y(z).

Signal flow diagram of direct form II. Where s[n] a state variable

(4)   \begin{align*}s[n] &= x[n] - a_1 s[n-1] - a_2 s[n-2] \\y[n] &= b_0 s[n] + b_1 s[n-1] + b_2 s[n-2]\end{align*}

In an algorithm you can implement it as:

s0 =      xn - a1 * s1 - a2 * s2
yn = b0 * s0 + b1 * s1 + b2 * s2
s2 = s1
s1 = s0

Where, s0, s1, s2 are the three state variables.

Direct form I transposed

Both direct forms can be converted to an equivalent transposed form via:

  • Reverse direction of each interconnection
  • Reverse direction of each multiplier
  • Change junctions to adders and vice-versa
  • Interchange the input and output signals
Signal flow diagram of direct form I transposed.

(5)   \begin{align*}y[n] &= b_0 v[n] + b_1 v[n-1] + b_2 v[n-2] \\v[n] &= x[n] - a_1 v[n-1] - a_2 v[n-2] \\\end{align*}



In an algorithm you can implement it as:

vn = xn + s2
yn = s4 + b0 * vn
s4 = s3 + b1 * vn
s3 = b2 * vn
s2 = s1 - a1 * vn
s1 = - a2 * vn

Note that this form is very inefficient. You can easily shift the delays to the center, obtaining the direct form II.

Direct form II transposed

Signal flow diagram of direct form II transposed.

(6)   \begin{align*}s_1[n] &= b_2 x[n-1] - a_2 y[n-1] \\s_2[n] &= b_1 x[n-1]  - a_1 y[n-1] + s_1[n-1] \\y[n] &= b_0 x[n] + s_2[n]\end{align*}

In an algorithm you can implement it as:

yn = s2 + b0 * xn
s2 = s1 + b1 * xn - a1 * yn
s1 = b2 * xn - a2 * yn