<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Thaodan's personal blog</title><link href="https://thaodan.de/" rel="alternate"></link><link href="https://thaodan.de/feeds/all.atom.xml" rel="self"></link><id>https://thaodan.de/</id><updated>2022-12-08T00:00:00+02:00</updated><subtitle>Software engineer and sailor at @JollaHQ. My personal blog</subtitle><subtitle>Software engineer and sailor at @JollaHQ. My personal blog</subtitle><entry><title>Org-Mode: Show clock status in frame title</title><link href="https://thaodan.de/org-clock-frame-title.html" rel="alternate"></link><published>2022-11-12T00:00:00+02:00</published><updated>2022-12-08T00:00:00+02:00</updated><author><name>Björn Bidar</name></author><id>tag:thaodan.de,2022-11-12:/org-clock-frame-title.html</id><summary type="html">How to show the Org-Clock status in frame&amp;nbsp;title</summary><content type="html">&lt;p&gt;
I use Org-Mode to track my work time. While refactoring my Emacs setup to increase my
productivity I tried for example to make my Org-Mode setup better. One issue I have
is that I tend to forget the things around me, I have trouble tracking&amp;nbsp;time.
&lt;/p&gt;

&lt;p&gt;
To make that easier I wanted to see the time spend on the current task and it&amp;#8217;s
heading into the frame&amp;nbsp;title.
&lt;/p&gt;

&lt;p&gt;
While searching for solution on my issue I found &lt;a href="https://lists.gnu.org/r/emacs-orgmode/2012-02/msg00854.html"&gt;this&lt;/a&gt; post on the org-mode mailing list
ow to add the time spend on the current task and it&amp;#8217;s heading into the frame&amp;nbsp;title.
&lt;/p&gt;

&lt;p&gt;
I&amp;#8217;ve modified it to also include the file modified status in the title and make
it look a little&amp;nbsp;better.
&lt;/p&gt;

&lt;p&gt;
To do so we have to modify the Emacs frame title and update it in an given&amp;nbsp;interval.
&lt;/p&gt;


&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;defvar&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;base-frame-title-format&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;nil&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Like frame-title-format to be used as a base for to modify it by&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;

&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;setq&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;base-frame-title-format&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="o"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nb"&gt;:eval&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;buffer-file-name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;abbreviate-file-name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;buffer-file-name&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;%b&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;:eval&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;buffer-modified-p&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;                      &lt;/span&gt;&lt;span class="s"&gt;&amp;quot; •&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="s"&gt;&amp;quot; — Emacs&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;

&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;defun&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;clock-in-frame-title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-clocking-p&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;setq&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;frame-title-format&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;base-frame-title-format&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;                                         &lt;/span&gt;&lt;span class="s"&gt;&amp;quot; — 🕓: &amp;quot;&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;                                         &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;org-clock-get-clock-string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;                                         &lt;/span&gt;&lt;span class="s"&gt;&amp;quot; — ⟳:&amp;quot;&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;                                         &lt;/span&gt;&lt;span class="nv"&gt;org-timer-mode-line-string&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;setq&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;frame-title-format&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;base-frame-title-format&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;run-at-time&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;t&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;clock-in-frame-title&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;add-hook&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;org-clock-in-hook&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;clock-in-frame-title&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;add-hook&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;org-clock-out-hook&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;clock-in-frame-title&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;add-hook&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;org-clock-cancel-hook&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;clock-in-frame-title&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
</content><category term="Org-mode"></category><category term="Org-Mode"></category><category term="Emacs"></category><category term="timetracking"></category><category term="productivity"></category></entry><entry><title>How to use Sailfish OS Exchange Active Sync with Office 365</title><link href="https://thaodan.de/how_to_use_office_365_with_sailfishos_exchange.html" rel="alternate"></link><published>2021-03-11T00:00:00+02:00</published><updated>2021-03-11T00:00:00+02:00</updated><author><name>Björn Bidar</name></author><id>tag:thaodan.de,2021-03-11:/how_to_use_office_365_with_sailfishos_exchange.html</id><summary type="html">Guide how to use Sailfish &lt;span class="caps"&gt;OS&lt;/span&gt; Exchange Active Sync with Office&amp;nbsp;365</summary><content type="html">
&lt;div id="outline-container-orgbee2eb8" class="outline-2"&gt;
&lt;h2 id="orgbee2eb8"&gt;Intro&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-orgbee2eb8"&gt;
&lt;p&gt;
I recently saw that some users had problems using their Office 365 with Sailfish &lt;span class="caps"&gt;OS&lt;/span&gt;, so I decided to create a guide
about how to use that when multi factor authentication is enabled. This guide should also help other users
that have to use multi factor authentication with their Exchange&amp;nbsp;account.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-org722d70c" class="outline-2"&gt;
&lt;h2 id="org722d70c"&gt;Multi-Factor&amp;nbsp;Authentication&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org722d70c"&gt;
&lt;p&gt;
If multi-factor authentication(sometimes also called two-factor authentication) is enabled Exchange enforces the use of &lt;b&gt;OAuth&lt;/b&gt; to be able to login.
Apps that do not support OAuth such as the Sailfish &lt;span class="caps"&gt;OS&lt;/span&gt; Exchange Active Sync break because of that.
You have to use &lt;b&gt;App-Passwords&lt;/b&gt; to make it work with&amp;nbsp;that.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-org3dd7a4a" class="outline-2"&gt;
&lt;h2 id="org3dd7a4a"&gt;App-Passwords&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org3dd7a4a"&gt;
&lt;/div&gt;
&lt;div id="outline-container-org95c4fdb" class="outline-3"&gt;
&lt;h3 id="org95c4fdb"&gt;Before you create an App-Pasword read&amp;nbsp;this!&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-org95c4fdb"&gt;
&lt;p&gt;
&lt;b&gt;Things to Know about App&amp;nbsp;Passwords:&lt;/b&gt;
&lt;/p&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;You should create a separate App Password for each device that uses&amp;nbsp;one.&lt;/li&gt;
&lt;li&gt;The same App Password can be used for multiple applications on the same&amp;nbsp;device.&lt;/li&gt;
&lt;li&gt;Once an App Password is created, there is no way to go back and get the value.&lt;br /&gt;
You must create a new App Password and delete the old&amp;nbsp;one.&lt;/li&gt;
&lt;li&gt;If an account becomes compromised, it is a standard operating procedure to clear all App&amp;nbsp;Passwords.&lt;/li&gt;
&lt;li&gt;Never install an App Password on a device you do not have complete control&amp;nbsp;over.&lt;/li&gt;
&lt;li&gt;If exposed, App Passwords are dangerous as they bypass the account password and multi-factor authentication.&lt;br /&gt;
Keep them in a safe place like &lt;i&gt;KeePassXC&lt;/i&gt; until you have them safely configured on the&amp;nbsp;device.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-org2c8653e" class="outline-3"&gt;
&lt;h3 id="org2c8653e"&gt;How to create an&amp;nbsp;App-Password&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-org2c8653e"&gt;

&lt;div id="org73c88b5" class="figure"&gt;
&lt;p&gt;&lt;img src="./images/how_to_use_office_365_with_sailfishos_exchange_papp_password.png" alt="how_to_use_office_365_with_sailfishos_exchange_papp_password.png" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span class="figure-number"&gt;Figure 1: &lt;/span&gt;Office 365 app passwords&amp;nbsp;Page&lt;/p&gt;
&lt;/div&gt;
&lt;ol class="org-ol"&gt;
&lt;li&gt;Visit &lt;i&gt;&lt;a href="https://account.activedirectory.windowsazure.com/AppPasswords.aspx"&gt;https://account.activedirectory.windowsazure.com/AppPasswords.aspx&lt;/a&gt;&lt;/i&gt; with your&amp;nbsp;browser.&lt;/li&gt;
&lt;li&gt;Click on the &lt;b&gt;&lt;i&gt;Create&lt;/i&gt;&lt;/b&gt;&amp;nbsp;button.&lt;/li&gt;
&lt;li&gt;Give the App Password a name that references the device for which it will be&amp;nbsp;used.&lt;/li&gt;
&lt;li&gt;Click on the &lt;b&gt;&lt;i&gt;Next&lt;/i&gt;&lt;/b&gt;&amp;nbsp;button.&lt;/li&gt;
&lt;li&gt;Copy the App Password to the clipboard for use when configuring your&amp;nbsp;device.&lt;/li&gt;
&lt;li&gt;Close the&amp;nbsp;window.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-orge34428e" class="outline-2"&gt;
&lt;h2 id="orge34428e"&gt;Create an Exchange Account in Sailfish &lt;span class="caps"&gt;OS&lt;/span&gt;&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-orge34428e"&gt;
&lt;p&gt;
Now create a exchange account like you usually would&amp;nbsp;except:
&lt;/p&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;Instead of using your password use the&amp;nbsp;app-password.&lt;/li&gt;
&lt;li&gt;Click &lt;b&gt;&lt;i&gt;More&lt;/i&gt;&lt;/b&gt; to set address to &amp;#8216;&lt;i&gt;outlook.office365.com&lt;/i&gt;&amp;#8216;.&lt;/li&gt;
&lt;li&gt;Swift left to finish creating your&amp;nbsp;account.&lt;/li&gt;
&lt;/ul&gt;


&lt;div id="org98fccb2" class="figure"&gt;
&lt;p&gt;&lt;img src="./images/how_to_use_office_365_with_sailfishos_exchange_exchange_account_creation.png" alt="how_to_use_office_365_with_sailfishos_exchange_exchange_account_creation.png" style="height:70%;width:70%" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span class="figure-number"&gt;Figure 2: &lt;/span&gt;Your exchange account creation page now should look like&amp;nbsp;this.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-orgf323d6a" class="outline-2"&gt;
&lt;h2 id="orgf323d6a"&gt;Final&amp;nbsp;Words&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-orgf323d6a"&gt;
&lt;p&gt;
This should be everything.&lt;br /&gt;
If you restore a Sailfish &lt;span class="caps"&gt;OS&lt;/span&gt; backup make sure that you either copy your old application password
from a safe place or create new one.&lt;br /&gt;
&lt;br /&gt;
If there any issues after this feel free to create a post in the &lt;a href="https://forum.sailfishos.org"&gt;sailfish os forum&lt;/a&gt;.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="Sailfish-OS"></category><category term="Microsoft"></category><category term="SailfishOS"></category><category term="Jolla"></category><category term="Guide"></category><category term="Office365"></category></entry><entry><title>Org-Mode Presentation C4 Cologne</title><link href="https://thaodan.de/org_mode_presentation.html" rel="alternate"></link><published>2019-12-06T00:00:00+02:00</published><updated>2019-12-12T00:00:00+02:00</updated><author><name>Björn Bidar</name></author><id>tag:thaodan.de,2019-12-06:/org_mode_presentation.html</id><summary type="html">Org-Mode Presentation I held last week in&amp;nbsp;cologne</summary><content type="html">&lt;p&gt;
Last Monday I held a presentation about Org-Mode in at &lt;a href="https://koeln.ccc.de"&gt;C4&lt;/a&gt; in Cologne.&lt;br /&gt;
I have to add that I that the presentation was in German for those that can&amp;#8217;t read German.
If you want to view the slides of this presentation click &lt;a href="https://cloud.thaodan.de/index.php/s/DByss4S5C3YSnSC"&gt;here&lt;/a&gt; to view them.&lt;br /&gt;
&lt;/p&gt;

&lt;p&gt;
The topics of this talk&amp;nbsp;were:
&lt;/p&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;A basic introduction to Emacs to explain the basics needed for this&amp;nbsp;talk&lt;/li&gt;
&lt;li&gt;What is&amp;nbsp;Org-Mode?&lt;/li&gt;
&lt;li&gt;How does it&amp;nbsp;work?&lt;/li&gt;
&lt;li&gt;Examples what you can do with org-mode besides tracking&amp;nbsp;agendas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
My performance was recorded and uploaded to &lt;a href="https://www.youtube.com/watch?v=5e7uBosamic"&gt;Youtube&lt;/a&gt; and &lt;a href="https://media.ccc.de/v/fsacgn.2019.12.org-mode"&gt;media.ccc.de&lt;/a&gt;.
&lt;/p&gt;
&lt;div id="outline-container-org6368646" class="outline-2"&gt;
&lt;h2 id="org6368646"&gt;Update 2019-12-12&amp;nbsp;Do&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org6368646"&gt;
&lt;p&gt;
I added links to both sources where the presentation was uploaded as the upload is done&amp;nbsp;now.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="org-mode"></category><category term="C4"></category><category term="Org-Mode"></category><category term="Emacs"></category><category term="LaTeX"></category><category term="Cologne"></category><category term="CCC"></category></entry><entry><title>Test main page</title><link href="https://thaodan.de/main.html" rel="alternate"></link><published>2019-07-31T00:00:00+03:00</published><updated>2019-07-31T00:00:00+03:00</updated><author><name>Bjoern Bidar</name></author><id>tag:thaodan.de,2019-07-31:/main.html</id><content type="html">&lt;p&gt;
test6
&lt;/p&gt;
</content><category term="misc"></category></entry></feed>