morse added

This commit is contained in:
Daniel Tsvetkov 2021-02-25 11:44:30 +01:00
parent 7a3883f424
commit e56ef23c2d
14 changed files with 113 additions and 21 deletions

View File

@ -2310,3 +2310,65 @@ state=`./current.sh | cut -f4 -d' '`
Voala! That was fun 🙂😊
"
20201201,20201201_afterlife.md,Afterlife,"There is nothing more final than death; I had both my grandmas die within a year about a decade ago and it's really this terrible empty feeling and all the good memories just come every once in a while and wash you away unexpectedly - time is the only healer. People left behind who have spent a long time feel the miss the most and again, time is the only medicine, no substitute can be enough to fill the void but friends and family help.
I'm quite scientific minded and of course - I wonder a lot. Although science doesn't stop belief (it actually requires it in a certain way) my mind reasons about the experience about death in a way that tries to be consistent with what I know. And that means that since we have no idea what the internal experience of dying and death might be - all bets are off. Therefore if you tell me you feel like going to heaven - okay. If you tell me you feel like there is nothing - okay. It's unknowable at this stage so any hypothesis is probably equally valid.
I find the following reasoning for me to make it not explode into infinities. Sense of time is experienced by the brain. People in sleep and especially in general anesthesia or coma or even psychodelics report having a very different experience of time passing. It stands to reason that time after death is probably not experienced (assuming what we know about the brain and no extra-dimensions or magic soul whatever).
However - if we continue this train of thought we can extrapolate that since (some of) the atoms that make you ""You"" are going to be recycled in the great circle of life, there might be a time that these same atoms start may make another being that is also conscious which would allow it to experience time. There is a limit to this probability and it may hit the end of Earth, Sun, and even eventually heath death of the Universe. Since you (by definition) are not experiencing time in the mean time without consciousness that would feel like a second to ""You"".
After the heath death of the Universe mainstream physics is quite speculative. However there is a chance [1] for quantum fluctuations to allow for another Big Bang that may arrange certain atoms to make you experience time again...
So: in that sense - I can say I believe in such ""Afterlife"" with all of the caveats that you would probably never know or remember any of your past lives and would not experience a gap in existence.
BUT that presupposes that consciousness is nothing more than atoms/particles, that same particles in same configuration would create consciousness etc... which - we also don't know unfortunately :( and that is the weakest part of my argument and it freaks me out...
Don't get me wrong - I understand the romanticism of The Mysterious, I like the intellectual stimulation of The Puzzle, and I enjoy having sex with some clothes on - some mystery turns me on, something for my imagination to also work with is more fun than complete nakedness for example
[1 - ""Time for quantum effects to generate a new Big Bang, resulting in a new universe.""](https://en.wikipedia.org/wiki/Timeline_of_the_far_future#Earth,_the_Solar_System_and_the_universe)"
20210225,20210225_morse.md,Morse,"Yesterday, out of nowhere, I decided to try to learn Morse code.
In general, I hate learning languages - I can express something already in one language and learning how to do that in another seems useless with very little added benefit.
But Morse is a different _type_ of language - it's a different communication medium, an almost universal human-binary protocol that can be communicated through timings in different mediums including wires, light or sound.
It can be argued that is is actually a tertiary protocol because it actually uses 3 types of signals - Dots are short signals, dashes are longer ones (3 times as long by standard) but then you also put silence between the letters (which is by standard the length of a dash or 3 beats). However if we think in binary representations - i.e. high and low set of signal - then a dot is a `1`, a dash is a `111` and silence depends on where it should be. A silence between individual dots and dashes is a single `0`. So for example letter `P` which is represented as `.--.` in binary would be `10111011101` - three one-bit silences between the dashes and the dots. When it's between letters you put a three-beats silence so `Pi` which in morse would be `.--. ..` in binary would be `101110111010001010` - notice the `000` between the letters. So it's a binary protocol and can be implemented in a any medium that supports an unambiguous high and low.
The binary protocol kind-of-follows the frequency of the letters in English language - the most frequent letters are represented with a single character - `E` is `.`, `T` is `-` - while the less frequent ones require more - e.g. `Q` is `--.-`. It's not perfect but it's International and that's better than anything else we have.
So I found this video that proposes two techniques: a more visual and a more audible version:
{% rawhtml %}<iframe width=""560"" height=""315"" src=""https://www.youtube.com/embed/D8tPkb98Fkk"" frameborder=""0"" allow=""accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"" allowfullscreen></iframe>{% endrawhtml %}
The first one draws on the idea of a _binary tree_. You construct all the characters in a tree structure that starts from a root node. Every time you go left, it's a `.`, every time you go right, it's a `-`:
![morse as binary tree](/media/20210225_morse/tree.jpg)
The other one is associating words or phrases that can be roughly translated to the stresses and the lengths of the dots and dashes. For example the phrase `Dog did it` can be pronounced with a loong `Doog` which represents the dash and then with short `did it` which represents the shorter dots:
![morse as mnemonic](/media/20210225_morse/mnemonics.jpg)
The person in the video says that most professionals recommends this audible method for learning instead of the more visual binary-tree one.
So I found another raw video from youtube that represents the sounds in triplets...:
{% rawhtml %}<iframe width=""560"" height=""315"" src=""https://www.youtube.com/embed/EmXsSSHCnsI"" frameborder=""0"" allow=""accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"" allowfullscreen></iframe>{% endrawhtml %}
...and then tried recording my own cringy voice in almost a singing fashion at the middle repeat:
{% rawhtml %}<audio controls=""controls"" src=""/media/20210225_morse/morse2.mp3""></audio>{% endrawhtml %}
What I found out is that this mnemonic method really helps in one direction - if I know the letter, I can get the sound. I almost learned these already because the phrases are phrases I know, easy to associate with the letter and stresses make sense (mostly). So let's say my access in this direction (`letter->sound`) in programmatic terms is now `O(1)`. This direction corresponds to the writing operation - so if I have a word or a sentence I can now (almost) translate it already to sounds.
However the other direction (`sound->letter`) is much harder. Listening to this long training video for single letters...:
{% rawhtml %}<iframe width=""560"" height=""315"" src=""https://www.youtube.com/embed/X1RNL5C80xE"" frameborder=""0"" allow=""accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"" allowfullscreen></iframe>{% endrawhtml %}
... I find that my association with the letter when I hear the sound is almost linear (`O(n)`) in speed - I try to go through each of the letters I know in order to get which one I am at. After I hear the correct letter, then it's easy to hear it the second time with the mnemonic I have. This would be the ""reading"" direction (or more like listening).
So I'm now looking at a way to speed up the reading direction. I'm really trying to hear the sounds as the phrases but I'm still struggling.
Anyway, it's day two and just a fun side thing. Whenever, whatever :)"
1 created_dt filename title body
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 MiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 MiB

View File

@ -10,5 +10,8 @@ class BlogPost(db.Model, ModelController, Ownable):
created_dt = db.Column(db.UnicodeText,)
updated_dt = db.Column(db.UnicodeText,)
def __repr__(self):
return "{} ({})".format(self.title, self.created_dt)
index_service.searchables.append(BlogPost)

View File

@ -0,0 +1 @@
<a href="{{ url_for('delete_blog_post', uuid=instance.id, _next=request.path) }}">x</a>

View File

@ -0,0 +1 @@
<a href="{{ url_for('update_blog_post', uuid=instance.id, _next=request.path) }}">e</a>

View File

@ -0,0 +1,4 @@
[
{% include "blog_post/_action_edit.html" %} |
{% include "blog_post/_action_delete.html" %}
]

View File

@ -1,40 +1,50 @@
<form action="{{ url_for('create_blog_post') }}" method="post">
<input type="hidden" name="_next" value="{{ _next or request.args.get('_next') or url_for('list_blog_post') }}"/>
<table>
<tr><td>
{% if "filename" not in disabled_columns %}
<tr {% if "filename" in hidden_columns %}style="display: none;"{% endif %}><td>
<label for="input-blog_post-filename">{{ _("filename") }}</label>:
</td><td>
<input id="input-blog_post-filename"
type="text" name="filename" autocomplete="off"
/>
</td></tr>
<tr><td>
{% endif %}
{% if "title" not in disabled_columns %}
<tr {% if "title" in hidden_columns %}style="display: none;"{% endif %}><td>
<label for="input-blog_post-title">{{ _("title") }}</label>:
</td><td>
<input id="input-blog_post-title"
type="text" name="title" autocomplete="off"
/>
</td></tr>
<tr><td>
{% endif %}
{% if "body" not in disabled_columns %}
<tr {% if "body" in hidden_columns %}style="display: none;"{% endif %}><td>
<label for="input-blog_post-body">{{ _("body") }}</label>:
</td><td>
<textarea id="input-blog_post-body"
name="body"></textarea>
</td></tr>
<tr><td>
{% endif %}
{% if "created_dt" not in disabled_columns %}
<tr {% if "created_dt" in hidden_columns %}style="display: none;"{% endif %}><td>
<label for="input-blog_post-created_dt">{{ _("created_dt") }}</label>:
</td><td>
<input id="input-blog_post-created_dt"
type="text" name="created_dt" autocomplete="off"
/>
</td></tr>
<tr><td>
{% endif %}
{% if "updated_dt" not in disabled_columns %}
<tr {% if "updated_dt" in hidden_columns %}style="display: none;"{% endif %}><td>
<label for="input-blog_post-updated_dt">{{ _("updated_dt") }}</label>:
</td><td>
<input id="input-blog_post-updated_dt"
type="text" name="updated_dt" autocomplete="off"
/>
</td></tr>
{% endif %}
</table>
<input type="submit">
</form>

View File

@ -1,11 +1,3 @@
{% for instance in instances %}
<li>
<a href="{{ url_for('get_blog_post', uuid=instance.id) }}">
{% include "blog_post/_title.html" %}</a>
|
[
<a href="{{ url_for('update_blog_post', uuid=instance.id, _next=request.path) }}">e</a> |
<a href="{{ url_for('delete_blog_post', uuid=instance.id, _next=request.path) }}">x</a>
]
</li>
{% include "blog_post/_list_item.html" %}
{% endfor %}

View File

@ -0,0 +1,5 @@
<li>
<a href="{{ url_for('get_blog_post', uuid=instance.id) }}">
{% include "blog_post/_title.html" %}</a>
{% include "blog_post/_actions.html" %}
</li>

View File

@ -1,2 +1,3 @@
{{ _("BlogPost") }} {{ instance.id }}
{{ instance.title }}
- {{ instance.created_dt }}

View File

@ -1,7 +1,8 @@
<form action="{{ url_for('update_blog_post', uuid=instance.id) }}" method="post">
<input type="hidden" name="_next" value="{{ _next or request.args.get('_next') or url_for('get_blog_post', uuid=instance.id) }}"/>
<table>
<tr><td>
{% if "filename" not in disabled_columns %}
<tr {% if "filename" in hidden_columns %}style="display: none;"{% endif %}><td>
<label for="input-blog_post-filename">{{ _("filename") }}</label>:
</td><td>
<input id="input-blog_post-filename"
@ -9,7 +10,9 @@
type="text" name="filename" autocomplete="off"
/>
</td></tr>
<tr><td>
{% endif %}
{% if "title" not in disabled_columns %}
<tr {% if "title" in hidden_columns %}style="display: none;"{% endif %}><td>
<label for="input-blog_post-title">{{ _("title") }}</label>:
</td><td>
<input id="input-blog_post-title"
@ -17,13 +20,17 @@
type="text" name="title" autocomplete="off"
/>
</td></tr>
<tr><td>
{% endif %}
{% if "body" not in disabled_columns %}
<tr {% if "body" in hidden_columns %}style="display: none;"{% endif %}><td>
<label for="input-blog_post-body">{{ _("body") }}</label>:
</td><td>
<textarea id="input-blog_post-body"
name="body">{{ instance.body }}</textarea>
</td></tr>
<tr><td>
{% endif %}
{% if "created_dt" not in disabled_columns %}
<tr {% if "created_dt" in hidden_columns %}style="display: none;"{% endif %}><td>
<label for="input-blog_post-created_dt">{{ _("created_dt") }}</label>:
</td><td>
<input id="input-blog_post-created_dt"
@ -31,7 +38,9 @@
type="text" name="created_dt" autocomplete="off"
/>
</td></tr>
<tr><td>
{% endif %}
{% if "updated_dt" not in disabled_columns %}
<tr {% if "updated_dt" in hidden_columns %}style="display: none;"{% endif %}><td>
<label for="input-blog_post-updated_dt">{{ _("updated_dt") }}</label>:
</td><td>
<input id="input-blog_post-updated_dt"
@ -39,6 +48,7 @@
type="text" name="updated_dt" autocomplete="off"
/>
</td></tr>
{% endif %}
</table>
<input type="submit">
</form>

View File

@ -22,4 +22,7 @@ columns:
- name: body
type: long_text
- name: created_dt
- name: updated_dt
- name: updated_dt
display:
primary: title
secondary: created_dt