plan the posts

    
      
diff --git a/pythonetc/atexit.md b/pythonetc/atexit.md
index cad979f..b90bd48 100644
--- a/pythonetc/atexit.md
+++ b/pythonetc/atexit.md
@@ -1,6 +1,8 @@
 # atexit
 
-The module [atexit](https://docs.python.org/3/library/atexit.html) allows to register hooks that will be executed when the program terminates.
+Published: 14 December 2021, 18:00.
+
+The module [atexit](https://docs.python.org/3/library/atexit.html) allows registering hooks that will be executed when the program terminates.
 
 There are only a few cases when it is NOT executed:
 
@@ -16,7 +18,7 @@ A few use cases:
 + Send pending log messages into the log system
 + Save interactive interpreter history
 
-However, keep in mind that there is no way to handle unhandled exceptions using `atexit` because it is executed after the exception is printed and disacarded.
+However, keep in mind that there is no way to handle unhandled exceptions using `atexit` because it is executed after the exception is printed and discarded.
 
 ```python
 import atexit
diff --git a/pythonetc/faulthandler.md b/pythonetc/faulthandler.md
index e5a4315..ec1b7f3 100644
--- a/pythonetc/faulthandler.md
+++ b/pythonetc/faulthandler.md
@@ -1,8 +1,10 @@
 # faulthandler
 
-The module [faulthandler](https://docs.python.org/3/library/faulthandler.html) allows to register a handler that will dump the current stack trace in a specific file (stderr by default) upon receiving a specific signal.
+Published: 16 December 2021, 18:00.
 
-Dump stack trace every second:
+The module [faulthandler](https://docs.python.org/3/library/faulthandler.html) allows registering a handler that will dump the current stack trace in a specific file (stderr by default) upon receiving a specific signal or every N seconds.
+
+For example, dump stack trace every second:
 
 ```python
 import faulthandler
diff --git a/pythonetc/faulthandler2.md b/pythonetc/faulthandler2.md
index 640fc6f..f426ae7 100644
--- a/pythonetc/faulthandler2.md
+++ b/pythonetc/faulthandler2.md
@@ -1,6 +1,8 @@
 # faulthandler part 2
 
-Now, let's see how to dump stack trace when a specific signal received. We will use [SIGUSR1](https://www.gnu.org/software/libc/manual/html_node/Miscellaneous-Signals.html) but you can do the same for any signal.
+Published: 21 December 2021, 18:00.
+
+Now, let's see how to dump stack trace when a specific signal is received. We will use [SIGUSR1](https://www.gnu.org/software/libc/manual/html_node/Miscellaneous-Signals.html) but you can do the same for any signal.
 
 ```python
 import faulthandler
@@ -29,3 +31,5 @@ And back in the terminal with the running script. You will see the stack trace:
 Current thread 0x00007f22edb29740 (most recent call first):
   File "tmp.py", line 6 in 
 ```
+
+This trick can help you to see where your program has frozen without adding logs to every line. However, a better alternative can be something like [py-spy](https://github.com/benfred/py-spy) which allows you to dump the current stack trace without any changes in the code.
diff --git a/pythonetc/future-annotations.md b/pythonetc/future-annotations.md
index f7009c2..28f337f 100644
--- a/pythonetc/future-annotations.md
+++ b/pythonetc/future-annotations.md
@@ -1,10 +1,12 @@
 # `from __future__ import annotations` (PEP-563)
 
+Published: 23 December 2021, 18:00.
+
 [PEP-563](https://www.python.org/dev/peps/pep-0563/) (landed in Python 3.7) introduced postponed evaluation of type annotations. That means, all your type annotations aren't executed at runtime but rather considered strings.
 
-The initial idea was to make it the default behavior in Python 3.10 but it was postponed after negative reaction from the community. In short, it would be in some cases impossible to get type information at runtime which is crucial for some tools like [pydantic](https://github.com/samuelcolvin/pydantic) or [typeguard](https://github.com/agronholm/typeguard). For example, see [pydantic#2678](https://github.com/samuelcolvin/pydantic/issues/2678).
+The initial idea was to make it the default behavior in Python 3.10 but it was postponed after a negative reaction from the community. In short, it would be in some cases impossible to get type information at runtime which is crucial for some tools like [pydantic](https://github.com/samuelcolvin/pydantic) or [typeguard](https://github.com/agronholm/typeguard). For example, see [pydantic#2678](https://github.com/samuelcolvin/pydantic/issues/2678).
 
-Either way, starting from Python 3.7 you can activate this behavior by adding `from __future__ import annotations` at the beginning of a file. It will improve the import time and allow you to use in annotations objects that aren't defined yet.
+Either way, starting from Python 3.7, you can activate this behavior by adding `from __future__ import annotations` at the beginning of a file. It will improve the import time and allow you to use in annotations objects that aren't defined yet.
 
 For example:
 
diff --git a/pythonetc/union.md b/pythonetc/union.md
index ea3b0c3..56688e0 100644
--- a/pythonetc/union.md
+++ b/pythonetc/union.md
@@ -1,5 +1,7 @@
 # Union alias (PEP-604)
 
+Published: 28 December 2021, 18:00.
+
 [PEP-604](https://www.python.org/dev/peps/pep-0604/) (landed in Python 3.10) introduced a new short syntax for `typing.Union` ([as we predicted](https://t.me/pythonetc/569)):
 
 ```python