<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://tsangiotis.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://tsangiotis.com/" rel="alternate" type="text/html" /><updated>2026-07-28T09:47:21+00:00</updated><id>https://tsangiotis.com/feed.xml</id><title type="html">Tasos Sangiotis</title><subtitle>Inputs &amp; Outputs</subtitle><author><name>Tasos Sangiotis</name></author><entry><title type="html">Cheat Meal</title><link href="https://tsangiotis.com/cheat-meal/" rel="alternate" type="text/html" title="Cheat Meal" /><published>2026-07-02T00:00:00+00:00</published><updated>2026-07-02T00:00:00+00:00</updated><id>https://tsangiotis.com/cheat-meal</id><content type="html" xml:base="https://tsangiotis.com/cheat-meal/"><![CDATA[<p><a href="https://world.hey.com/tasos/45504577/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MjYxNzUzNjYwOSwicHVyIjoiYmxvYl9pZCJ9fQ--914c8b155a06916dd32233d2878e43737cb348f463ebee32688c0a63ec89f98f/Scan.jpeg?disposition=attachment" download="Scan.jpeg" data-click-proxy-target="lightbox_link_blob_2617536609" title="Download Scan.jpeg"><img src="/assets/images/posts/cheat-meal/01-Scan.jpeg" alt="Scan.jpeg" /></a></p>]]></content><author><name>Tasos Sangiotis</name></author><summary type="html"><![CDATA[]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Install LOGO SoftComfort 8.4.1 on MacOS</title><link href="https://tsangiotis.com/install-logo-softcomfort-8-4-1-on-macos/" rel="alternate" type="text/html" title="Install LOGO SoftComfort 8.4.1 on MacOS" /><published>2025-07-30T00:00:00+00:00</published><updated>2025-07-30T00:00:00+00:00</updated><id>https://tsangiotis.com/install-logo-softcomfort-8-4-1-on-macos</id><content type="html" xml:base="https://tsangiotis.com/install-logo-softcomfort-8-4-1-on-macos/"><![CDATA[<p>I splurged and got the prestigious Siemens LogoSoftComfort 8.4.1 DVD as my old V8.0 copy was only installing on Windows due to changes and restrictions making no sense. Here is the domination of Windows for all of you Unix freaks. Old things still work.<br />
<br />
I received an actual DVD in 2025 - which is also the license. Upon gazing on it, and digging up a computer with a DVD reader from storage, memories of glory played through my head:<br />
\</p>

<p><a href="https://world.hey.com/tasos/9b85b4ed/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MjIwODg4NDg0OSwicHVyIjoiYmxvYl9pZCJ9fQ--6c676058f856527719d7c2633623fa9e12e9e2f32fe29c9de5deec0b5758c4f5/smartstart.jpg?disposition=attachment" download="smartstart.jpg" data-click-proxy-target="lightbox_link_blob_2208884849" title="Download smartstart.jpg"><img src="/assets/images/posts/install-logo-softcomfort-8-4-1-on-macos/01-smartstart.jpg" alt="smartstart.jpg" /></a></p>

<p><a href="https://world.hey.com/tasos/9b85b4ed/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MjIwODkwNDI5NywicHVyIjoiYmxvYl9pZCJ9fQ--6bda2d3f3e5f7c1540804d9f66be13171f4da0c2c2a7b905a4d0a247254e0b08/5e4f10275dcb1fb211d4a8b4f1bda236.png?disposition=attachment" download="5e4f10275dcb1fb211d4a8b4f1bda236.png" data-click-proxy-target="lightbox_link_blob_2208904297" title="Download 5e4f10275dcb1fb211d4a8b4f1bda236.png"><img src="/assets/images/posts/install-logo-softcomfort-8-4-1-on-macos/02-5e4f10275dcb1fb211d4a8b4f1bda236.png" alt="5e4f10275dcb1fb211d4a8b4f1bda236.png" /></a></p>

<p><br />
Anyways I ripped the dvd into an ISO and got working. You might thing this would be a stroll in the park but it is not. It is quite difficult and idiotic.<br />
<br />
People at Siemens market this as a MacOS and Linux ready solution but they have not tested it ever. Forums online are indicative to that.<br />
<br />
Forums are from automation specialists who hold Siemens to a high standard and assume there is some logic to this software design and installer. <strong>But this installer shall never be used!</strong><br />
<br />
What you need: <br />
\</p>

<ul>
  <li>The DVD files placed to a location we refer to as &lt;logo-files&gt; from now on.</li>
  <li><a href="https://corretto.aws/downloads/latest/amazon-corretto-11-x64-macos-jdk.pkg">Amazon Coretto 11 JDK</a> (x64 build even if you are on ARM) ,</li>
</ul>

<p><br />
You might be tempted to make the install work. You don’t have to.<br />
<br />
Open your terminal and do this:<br />
\</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>➜  ~ xattr -r -d com.apple.quarantine &lt;logo-files&gt;/Mac
➜  ~ cp -R &lt;logo-files&gt;/Mac /Applications/LOGOComfort_V8.4
➜  ~ chmod +x /Applications/LOGOComfort_V8.4/LOGOComfort.app/Contents/MacOS/LOGOComfort
➜  ~ nano /Applications/LOGOComfort_V8.4/LOGOComfort.app/Contents/Info.plist
</code></pre></div></div>

<p><br />
In the text editor in front of you change the following:<br />
\</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;key&gt;jre_path&lt;/key&gt;
&lt;string&gt;&lt;/string&gt;
</code></pre></div></div>

<p><br />
to<br />
\</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;key&gt;jre_path&lt;/key&gt;
&lt;string&gt;/Library/Java/JavaVirtualMachines/amazon-corretto-11.jdk/Contents/Home/&lt;/string&gt;
</code></pre></div></div>

<p><br />
This makes your software run with the specific JAVA.<br />
<br />
If you want the LogoWebEditor you will need to make some other arrangements:<br />
<br />
Install the software from the &lt;logo-files&gt;/Tools/LOGO! Web Editor/Installer. <br />
<br />
The thing will not start. You have to edit a script file.<br />
<br />
\</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>➜  ~ nano /Applications/lwe.app/Contents/MacOS/executable
</code></pre></div></div>

<p><br />
Here the system implies a jdkhome inside the lwe.app. There is no such thing. Add the bold thing bellow the non-bold thing.<br />
\</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>...
if [ -n "$jdkhome" -a \! -d "$jdkhome" -a -d "$progdir/../jre" ]; then
    # #74333: permit jdkhome to be defined as relative to app dir
    jdkhome="$progdir/../jre"
fi
        
jdkhome="/Library/Java/JavaVirtualMachines/amazon-corretto-11.jdk/Contents/Home/"
</code></pre></div></div>

<p>\</p>

<p>This is a note for future me and the tired Siemens traveler out there.<br />
\</p>]]></content><author><name>Tasos Sangiotis</name></author><summary type="html"><![CDATA[I splurged and got the prestigious Siemens LogoSoftComfort 8.4.1 DVD as my old V8.0 copy was only installing on Windows due to changes and restrictions making no sense. Here is the domination of Windows for all of you Unix freaks. Old things still work. I received an actual DVD in 2025 - which is also the license. Upon gazing on it, and digging up a computer with a DVD reader from storage, memories of glory played through my head: \ Anyways I ripped the dvd into an ISO and got working. You might thing this would be a stroll in the park but it is not. It is quite difficult and idiotic. People at Siemens market this as a MacOS and Linux ready solution but they have not tested it ever. Forums online are indicative to that. Forums are from automation specialists who hold Siemens to a high standard and assume there is some logic to this software design and installer. But this installer shall never be used! What you need:  \ The DVD files placed to a location we refer to as &lt;logo-files&gt; from now on. Amazon Coretto 11 JDK (x64 build even if you are on ARM) , You might be tempted to make the install work. You don’t have to. Open your terminal and do this: \ ➜ ~ xattr -r -d com.apple.quarantine &lt;logo-files&gt;/Mac ➜ ~ cp -R &lt;logo-files&gt;/Mac /Applications/LOGOComfort_V8.4 ➜ ~ chmod +x /Applications/LOGOComfort_V8.4/LOGOComfort.app/Contents/MacOS/LOGOComfort ➜ ~ nano /Applications/LOGOComfort_V8.4/LOGOComfort.app/Contents/Info.plist In the text editor in front of you change the following: \ &lt;key&gt;jre_path&lt;/key&gt; &lt;string&gt;&lt;/string&gt; to \ &lt;key&gt;jre_path&lt;/key&gt; &lt;string&gt;/Library/Java/JavaVirtualMachines/amazon-corretto-11.jdk/Contents/Home/&lt;/string&gt; This makes your software run with the specific JAVA. If you want the LogoWebEditor you will need to make some other arrangements: Install the software from the &lt;logo-files&gt;/Tools/LOGO! Web Editor/Installer.  The thing will not start. You have to edit a script file. \ ➜ ~ nano /Applications/lwe.app/Contents/MacOS/executable Here the system implies a jdkhome inside the lwe.app. There is no such thing. Add the bold thing bellow the non-bold thing. \ ... if [ -n "$jdkhome" -a \! -d "$jdkhome" -a -d "$progdir/../jre" ]; then # #74333: permit jdkhome to be defined as relative to app dir jdkhome="$progdir/../jre" fi jdkhome="/Library/Java/JavaVirtualMachines/amazon-corretto-11.jdk/Contents/Home/" \ This is a note for future me and the tired Siemens traveler out there. \]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Remote images in Apple Mail Signatures</title><link href="https://tsangiotis.com/remote-images-in-apple-mail-signatures/" rel="alternate" type="text/html" title="Remote images in Apple Mail Signatures" /><published>2025-03-13T00:00:00+00:00</published><updated>2025-03-13T00:00:00+00:00</updated><id>https://tsangiotis.com/remote-images-in-apple-mail-signatures</id><content type="html" xml:base="https://tsangiotis.com/remote-images-in-apple-mail-signatures/"><![CDATA[<p>I recently started testing Apple mail and found it impossible to use a hosted image in my professional signature.<br />
<br />
By default, dragging or pasting an image into Apple Mail’s signature editor causes Mail to embed the image (i.e. attach it) to every outgoing email. To use a remote image (so that the logo is loaded from your server rather than sent as an attachment), you must create an HTML signature that references the image via a URL. <br />
<br />
Here’s how to fix that:<br />
\</p>

<p><strong>Create a Placeholder Signature</strong></p>

<p>In Mail’s Preferences → Signatures, create a new signature. This gives you a file to work with.</p>

<p>\</p>

<p><strong>Locate the Signature File</strong></p>

<p>For non‑iCloud accounts, the signature files are stored in:</p>

<p>~/Library/Mail/Vx/MailData/Signatures/</p>

<p>For iCloud accounts, look in:</p>

<p>~/Library/Mobile Documents/com~apple~mail/Data/MailData/Signatures/<br />
\</p>

<p><strong>Edit the Signature File</strong></p>

<p>Open the appropriate .mailsignature file in a plain text editor. Replace the HTML portion (usually found after the header lines) with your custom HTML. For example:</p>

<p>\</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Content-Transfer-Encoding: 7bit
Content-Type: text/html; charset=us-ascii
Message-Id: &lt;...&gt;
Mime-Version: 1.0 (Mac OS X Mail)

&lt;body&gt;
  &lt;img src="https://yourserver.com/path/to/logo.png" alt="Company Logo"&gt;
  &lt;!-- Add any additional signature text or formatting here --&gt;
&lt;/body&gt;
</code></pre></div></div>

<p><br />
<strong>Lock the File (if needed)</strong><br />
For non‑iCloud accounts, lock the file (via Finder’s “Get Info” → check “Locked”) so that Mail doesn’t overwrite your changes.<br />
<br />
<strong>Restart Mail &amp; Test</strong><br />
Relaunch Apple Mail and select your edited signature when composing a new message. Now, instead of embedding the image as an attachment, the email will include an HTML reference to your remote image. (Note that the recipient’s mail client must load remote images for it to display.)<br />
\</p>

<p>This method bypasses Mail’s default behavior by using your own HTML signature file. <br />
\</p>]]></content><author><name>Tasos Sangiotis</name></author><summary type="html"><![CDATA[I recently started testing Apple mail and found it impossible to use a hosted image in my professional signature. By default, dragging or pasting an image into Apple Mail’s signature editor causes Mail to embed the image (i.e. attach it) to every outgoing email. To use a remote image (so that the logo is loaded from your server rather than sent as an attachment), you must create an HTML signature that references the image via a URL.  Here’s how to fix that: \ Create a Placeholder Signature In Mail’s Preferences → Signatures, create a new signature. This gives you a file to work with. \ Locate the Signature File For non‑iCloud accounts, the signature files are stored in: ~/Library/Mail/Vx/MailData/Signatures/ For iCloud accounts, look in: ~/Library/Mobile Documents/com~apple~mail/Data/MailData/Signatures/ \ Edit the Signature File Open the appropriate .mailsignature file in a plain text editor. Replace the HTML portion (usually found after the header lines) with your custom HTML. For example: \ Content-Transfer-Encoding: 7bit Content-Type: text/html; charset=us-ascii Message-Id: &lt;...&gt; Mime-Version: 1.0 (Mac OS X Mail) &lt;body&gt; &lt;img src="https://yourserver.com/path/to/logo.png" alt="Company Logo"&gt; &lt;!-- Add any additional signature text or formatting here --&gt; &lt;/body&gt; Lock the File (if needed) For non‑iCloud accounts, lock the file (via Finder’s “Get Info” → check “Locked”) so that Mail doesn’t overwrite your changes. Restart Mail &amp; Test Relaunch Apple Mail and select your edited signature when composing a new message. Now, instead of embedding the image as an attachment, the email will include an HTML reference to your remote image. (Note that the recipient’s mail client must load remote images for it to display.) \ This method bypasses Mail’s default behavior by using your own HTML signature file.  \]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">I just started running again after I just started running again</title><link href="https://tsangiotis.com/i-just-started-running-again-after-i-just-started-running-again/" rel="alternate" type="text/html" title="I just started running again after I just started running again" /><published>2024-08-20T00:00:00+00:00</published><updated>2024-08-20T00:00:00+00:00</updated><id>https://tsangiotis.com/i-just-started-running-again-after-i-just-started-running-again</id><content type="html" xml:base="https://tsangiotis.com/i-just-started-running-again-after-i-just-started-running-again/"><![CDATA[<p>Gear Acquisition Syndrome is a thing and it works if you clench your teeth and restrain yourself.<br />
<br />
When I got a new running watch on May 2024 I started running again. I got a Garmin Instinct 2X, black and white no-touchscreen G-SHOCK like behemoth which I fancy a lot.<br />
<br />
When I got it I run a lot. I also shed about 8kgs.<br />
<br />
When the heatwaves hit Athens this summer I stopped and all my progress fell apart and weight came back.<br />
<br />
Now end of August I started running again. And got a jump rope to avoid excuses.<br />
<br />
I learned to track my <a href="https://en.wikipedia.org/wiki/VO2_max">VO2 Max</a> for general health and wellbeing and saw many of the tables bellow.<br />
<br />
<img src="/assets/images/posts/i-just-started-running-again-after-i-just-started-running-again/01-VO2MaxChartforMen.jpg" alt="" /><br />
I am in the no bad, no good territory.<br />
\</p>

<p><a href="https://world.hey.com/tasos/a3d45201/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTc3ODU3NzY1MCwicHVyIjoiYmxvYl9pZCJ9fQ--690bd220897bbb3fc633f58eb569bc5623b29133c3ac28477e1b13f179f1f021/image.png?disposition=attachment" download="image.png" data-click-proxy-target="lightbox_link_blob_1778577650" title="Download image.png"><img src="/assets/images/posts/i-just-started-running-again-after-i-just-started-running-again/02-image.png" alt="image.png" /></a></p>

<p><br />
My goal for September is to get at a VO2 Max of about 40 which is the average for my age group and then go for SPEEEEEED.<br />
<br />
Will keep this log and see.<br />
<br />
\</p>]]></content><author><name>Tasos Sangiotis</name></author><summary type="html"><![CDATA[Gear Acquisition Syndrome is a thing and it works if you clench your teeth and restrain yourself. When I got a new running watch on May 2024 I started running again. I got a Garmin Instinct 2X, black and white no-touchscreen G-SHOCK like behemoth which I fancy a lot. When I got it I run a lot. I also shed about 8kgs. When the heatwaves hit Athens this summer I stopped and all my progress fell apart and weight came back. Now end of August I started running again. And got a jump rope to avoid excuses. I learned to track my VO2 Max for general health and wellbeing and saw many of the tables bellow. I am in the no bad, no good territory. \ My goal for September is to get at a VO2 Max of about 40 which is the average for my age group and then go for SPEEEEEED. Will keep this log and see. \]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Gmail Forwarding - Avoid messages being trapped to spam</title><link href="https://tsangiotis.com/gmail-forwarding-avoid-messages-being-trapped-to-spam/" rel="alternate" type="text/html" title="Gmail Forwarding - Avoid messages being trapped to spam" /><published>2024-04-23T00:00:00+00:00</published><updated>2024-04-23T00:00:00+00:00</updated><id>https://tsangiotis.com/gmail-forwarding-avoid-messages-being-trapped-to-spam</id><content type="html" xml:base="https://tsangiotis.com/gmail-forwarding-avoid-messages-being-trapped-to-spam/"><![CDATA[<p>My work email is on Gmail.<br />
<br />
I cannot in any way understand people with multiple inboxes. I have tried it, it is the most cumbersome thing.<br />
<br />
So I forward my work Gmail to my personal and use the SMTP to send from the personal email.<br />
<br />
Here and again however spam email are not being forwarded. This is some security trick but in any way it brakes the illusion I have only one account.<br />
<br />
I need to log in to my work gmail, find the stuff I missed and deal with it 3 days latter unless an embarrassing phone call gets in the way.<br />
<br />
Found a solution however.<br />
<br />
While you cannot mark spam messages to be forwarded you can make any message which is to <em>your</em> email not be sent to spam.<br />
<br />
You make a gmail filter with all your addresses and aliases. Never sent to spam.<br />
The filter screen looks like this:<br />
\</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>to:tsangiotis@arpedon.com OR to:info@arpedon.com OR .....
</code></pre></div></div>

<p>\</p>

<p><a href="https://world.hey.com/tasos/2d999011/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTYyOTkwMjQxMSwicHVyIjoiYmxvYl9pZCJ9fQ--5a721309440fe7d5eba2d62a79661ae0ca440faee8e16220cbf103b74b82b7bf/Screenshot%202024-04-22%20103210.png?disposition=attachment" download="Screenshot 2024-04-22 103210.png" data-click-proxy-target="lightbox_link_blob_1629902411" title="Download Screenshot 2024-04-22 103210.png"><img src="/assets/images/posts/gmail-forwarding-avoid-messages-being-trapped-to-spam/01-Screenshot202024-04-2220103210.png" alt="Screenshot 2024-04-22 103210.png" /></a></p>

<p><br />
Then create the filter and mark it <strong>Never send to spam</strong>.<br />
<br />
From now on your email arrives correctly.</p>]]></content><author><name>Tasos Sangiotis</name></author><summary type="html"><![CDATA[My work email is on Gmail. I cannot in any way understand people with multiple inboxes. I have tried it, it is the most cumbersome thing. So I forward my work Gmail to my personal and use the SMTP to send from the personal email. Here and again however spam email are not being forwarded. This is some security trick but in any way it brakes the illusion I have only one account. I need to log in to my work gmail, find the stuff I missed and deal with it 3 days latter unless an embarrassing phone call gets in the way. Found a solution however. While you cannot mark spam messages to be forwarded you can make any message which is to your email not be sent to spam. You make a gmail filter with all your addresses and aliases. Never sent to spam. The filter screen looks like this: \ to:tsangiotis@arpedon.com OR to:info@arpedon.com OR ..... \ Then create the filter and mark it Never send to spam. From now on your email arrives correctly.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Review: The Goal: A Process of Ongoing Improvement - Eliyahu M. Goldratt, Jeff Cox</title><link href="https://tsangiotis.com/review-the-goal-a-process-of-ongoing-improvement-eliyahu-m-goldratt-jeff-cox/" rel="alternate" type="text/html" title="Review: The Goal: A Process of Ongoing Improvement - Eliyahu M. Goldratt, Jeff Cox" /><published>2024-01-23T00:00:00+00:00</published><updated>2024-01-23T00:00:00+00:00</updated><id>https://tsangiotis.com/review-the-goal-a-process-of-ongoing-improvement-eliyahu-m-goldratt-jeff-cox</id><content type="html" xml:base="https://tsangiotis.com/review-the-goal-a-process-of-ongoing-improvement-eliyahu-m-goldratt-jeff-cox/"><![CDATA[<p><a href="https://world.hey.com/tasos/f5c1be4b/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTUxODgyOTQ1MiwicHVyIjoiYmxvYl9pZCJ9fQ--13d24eb19a9c4597b14a4a022c51b32e2e1d867257463082b18259cd661039ac/113934.jpg?disposition=attachment" download="113934.jpg" data-click-proxy-target="lightbox_link_blob_1518829452" title="Download 113934.jpg"><img src="/assets/images/posts/review-the-goal-a-process-of-ongoing-improvement-eliyahu-m-goldratt-jeff-cox/01-113934.jpg" alt="113934.jpg" /></a></p>

<p><br />
\</p>

<p>It is a novel that guides you through the theory of constraints and production flow. It is also a good story. Rarely you would be interested in the life of a plant manager (Alex Rogo) and his marital issues but the authors captivate you with it. <br />
<br />
Simplifications were not disregarded as tools for the story and were explained and challenged.<br />
<br />
Dealing with software you hear about Kanban and Toyota and you think you know all about Lean principles but it is much more nuanced than having used Trello. Actually cards were never mentioned in the story.<br />
<br />
The book dictates that to have continuous improvement you must operate on the following steps: <br />
\</p>

<ol>
  <li>Identify the system’s bottlenecks.</li>
  <li>Decide how to exploit the bottlenecks.</li>
  <li>Subordinate everything else to the above decision. </li>
  <li>Elevate the system’s bottlenecks. </li>
  <li>If, in a previous step, a bottleneck has been broken go back to step 1.</li>
</ol>

<p><br />
As a result Rogo’s plant was saved and even made a lot more money due to capacity being freed up.<br />
<br />
While this worked for Rogo’s plant the steps might be a little different in each case.<br />
<br />
I thought about how we process things in our services and installation department and it is quite different than the processes where the works and parts are not fixed.<br />
<br />
Many of these questions are covered inn the included paper <em>Standing on the Shoulders of Giants – Production concepts versus production applications The Hitachi Tool Engineering example</em>, Eliyahu M. Goldratt analyses how Henry Ford and Taiichi Ohno concepts for the flow of the production affected the industry and why some companies following their teachings failed.<br />
\</p>

<p><a href="https://world.hey.com/tasos/f5c1be4b/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTUxODkzMTg1MywicHVyIjoiYmxvYl9pZCJ9fQ--52224eda3efb36b05c266edf9b36f7da84e4f32b1165acc2925c647771ed22ac/standing_on_the_shoulders_of.pdf?disposition=attachment" download="standing_on_the_shoulders_of.pdf" data-click-proxy-target="lightbox_link_blob_1518931853" title="Download standing_on_the_shoulders_of.pdf"><embed src="/assets/images/posts/review-the-goal-a-process-of-ongoing-improvement-eliyahu-m-goldratt-jeff-cox/02-standing_on_the_shoulders_of.pdf" /></a></p>
<figcaption><a href="https://world.hey.com/tasos/f5c1be4b/blobs/eyJfcmFpbHMiOnsiZGF0YSI6MTUxODkzMTg1MywicHVyIjoiYmxvYl9pZCJ9fQ--52224eda3efb36b05c266edf9b36f7da84e4f32b1165acc2925c647771ed22ac/standing_on_the_shoulders_of.pdf?disposition=attachment" download="standing_on_the_shoulders_of.pdf" title="Download standing_on_the_shoulders_of.pdf"><span class="attachment__name">standing_on_the_shoulders_of.pdf</span> <span class="attachment__size"> 301 KB </span></a></figcaption>

<p><br />
<br />
He notes in my understanding that a plant like Hitachi Tool Engineering who followed all the good practices described by the two gentlemen was affected by the constant addition and deprecation of products which were not using the same components. The gains from all the improvements were killed as the production changed, making the improvement of the operation a Sisyphean task. <br />
<br />
However to improve any process you can take away minding your bottlenecks while refraining from dealing with tasks that don’t make money.</p>]]></content><author><name>Tasos Sangiotis</name></author><summary type="html"><![CDATA[\ It is a novel that guides you through the theory of constraints and production flow. It is also a good story. Rarely you would be interested in the life of a plant manager (Alex Rogo) and his marital issues but the authors captivate you with it.  Simplifications were not disregarded as tools for the story and were explained and challenged. Dealing with software you hear about Kanban and Toyota and you think you know all about Lean principles but it is much more nuanced than having used Trello. Actually cards were never mentioned in the story. The book dictates that to have continuous improvement you must operate on the following steps:  \ Identify the system’s bottlenecks. Decide how to exploit the bottlenecks. Subordinate everything else to the above decision.  Elevate the system’s bottlenecks.  If, in a previous step, a bottleneck has been broken go back to step 1. As a result Rogo’s plant was saved and even made a lot more money due to capacity being freed up. While this worked for Rogo’s plant the steps might be a little different in each case. I thought about how we process things in our services and installation department and it is quite different than the processes where the works and parts are not fixed. Many of these questions are covered inn the included paper Standing on the Shoulders of Giants – Production concepts versus production applications The Hitachi Tool Engineering example, Eliyahu M. Goldratt analyses how Henry Ford and Taiichi Ohno concepts for the flow of the production affected the industry and why some companies following their teachings failed. \ standing_on_the_shoulders_of.pdf 301 KB He notes in my understanding that a plant like Hitachi Tool Engineering who followed all the good practices described by the two gentlemen was affected by the constant addition and deprecation of products which were not using the same components. The gains from all the improvements were killed as the production changed, making the improvement of the operation a Sisyphean task.  However to improve any process you can take away minding your bottlenecks while refraining from dealing with tasks that don’t make money.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Microsoft ruins my computer</title><link href="https://tsangiotis.com/microsoft-ruins-my-computer/" rel="alternate" type="text/html" title="Microsoft ruins my computer" /><published>2023-03-29T00:00:00+00:00</published><updated>2023-03-29T00:00:00+00:00</updated><id>https://tsangiotis.com/microsoft-ruins-my-computer</id><content type="html" xml:base="https://tsangiotis.com/microsoft-ruins-my-computer/"><![CDATA[<p><img src="/assets/images/posts/microsoft-ruins-my-computer/01-large_img_0026.jpg" alt="" /></p>

<p>I had performed one clean install of Windows since 2018. Since then I didn’t have any particular problems until last week when my laptop started acting up…</p>

<p>I figured some driver is corrupted. A format is past due for that champ anyways. Let’s start over. Easy peasy lemon squeezy. Too much lemon though.</p>

<p>I procceded with the recommended ways to make a windows install drive. Took my backups and everything. The works. I installed, removed the drive and grabbed an aspirin in case of headaces with multiple input methods.</p>

<p>However I couldn’t get far. Apparently a Microsoft account is required these days. At this point my guard was down. I was still at the office at 20:00, tired and figured what the heck I will sign in.</p>

<blockquote>
  <p><strong><em>“That username looks like it belongs to another organization. Try signing in again or start over with a different account”</em></strong></p>

  <p><em>The Windows install wizard (remember wizards?)</em></p>
</blockquote>

<p>I couldn’t figure out what this means. For the love of me, it didn’t compute. So I turned to <a href="https://learn.microsoft.com/en-us/mem/autopilot/known-issues#that-username-looks-like-it-belongs-to-another-organization-try-signing-in-again-or-start-over-with-a-different-account">official support</a>.</p>

<p>After some registry dives I figured that my <a href="https://www.lenovo.com/gr/el/laptops/thinkpad/t-series/ThinkPad-T480/p/22TP2TT4800" title="Link: https://www.lenovo.com/gr/el/laptops/thinkpad/t-series/ThinkPad-T480/p/22TP2TT4800">device</a> which I bought brand new directly from Lenovo 5 years ago is setup for the domain <em>soulfresh.com.au</em>. I blame some IT guy in Australia mistyping a serial number in their company deploy configuration or something. Don’t care about the particulars. I am angry that I cannot get out of it.</p>

<p>That means my work account cannot be setup. Same for a local account. So my expensive computer is essentially useless.</p>

<p>Having the device essentially bricked I decided to install Linux to work the next day. After years off Linux for Desktop the experience for a working professional who is not a programmer or an academic was a constant fight. If this is the price of freedom it is too expensive.</p>

<p>Next day after having called Lenovo and gotten nowhere I decided to find out how to avoid the Microsoft account completely which was the initial intention. I found out about <a href="https://www.theverge.com/2022/7/1/23191794/windows-11-install-microsoft-account-tpm-restrictions-rufus" target="_blank" title="Link: https://www.theverge.com/2022/7/1/23191794/windows-11-install-microsoft-account-tpm-restrictions-rufus">Rufus</a> and the ability to do what I want and all went smoothly.</p>

<p>At this point I am furious and realized why everyone hates Microsoft as a necessary evil company. However I am glad it is over and I have some thoughts.</p>

<p>Windows can do everything in computerland and the alternatives are not reasonable. The accounting software is on Windows. The CAD software is on Windows. Excel is on Windows. You can have Linux on Windows nowadays. What other OS can do all that?</p>

<p>Apparently we are not paying for Windows enough. Microsoft is putting ads everywhere while at the same time keeping tabs on us through a Microsoft Account.</p>

<p>Putting insult to injury the performance is not going up or even stay constant. They just released a video where they are bragging for their chat app starting up in 10 seconds and for less placeholders when scrolling through messages.\</p>

<p>I hope the Windows team finds their step towards a leaner, faster, simpler product.</p>

<p>Until then I will just act annoyed until someone at Microsoft notices. You can send them this article.\</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Fix" /><category term="Windows" /><category term="Opinion" /><summary type="html"><![CDATA[I had performed one clean install of Windows since 2018. Since then I didn’t have any particular problems until last week when my laptop started acting up… I figured some driver is corrupted. A format is past due for that champ anyways. Let’s start over. Easy peasy lemon squeezy. Too much lemon though. I procceded with the recommended ways to make a windows install drive. Took my backups and everything. The works. I installed, removed the drive and grabbed an aspirin in case of headaces with multiple input methods. However I couldn’t get far. Apparently a Microsoft account is required these days. At this point my guard was down. I was still at the office at 20:00, tired and figured what the heck I will sign in. “That username looks like it belongs to another organization. Try signing in again or start over with a different account” The Windows install wizard (remember wizards?) I couldn’t figure out what this means. For the love of me, it didn’t compute. So I turned to official support. After some registry dives I figured that my device which I bought brand new directly from Lenovo 5 years ago is setup for the domain soulfresh.com.au. I blame some IT guy in Australia mistyping a serial number in their company deploy configuration or something. Don’t care about the particulars. I am angry that I cannot get out of it. That means my work account cannot be setup. Same for a local account. So my expensive computer is essentially useless. Having the device essentially bricked I decided to install Linux to work the next day. After years off Linux for Desktop the experience for a working professional who is not a programmer or an academic was a constant fight. If this is the price of freedom it is too expensive. Next day after having called Lenovo and gotten nowhere I decided to find out how to avoid the Microsoft account completely which was the initial intention. I found out about Rufus and the ability to do what I want and all went smoothly. At this point I am furious and realized why everyone hates Microsoft as a necessary evil company. However I am glad it is over and I have some thoughts. Windows can do everything in computerland and the alternatives are not reasonable. The accounting software is on Windows. The CAD software is on Windows. Excel is on Windows. You can have Linux on Windows nowadays. What other OS can do all that? Apparently we are not paying for Windows enough. Microsoft is putting ads everywhere while at the same time keeping tabs on us through a Microsoft Account. Putting insult to injury the performance is not going up or even stay constant. They just released a video where they are bragging for their chat app starting up in 10 seconds and for less placeholders when scrolling through messages.\ I hope the Windows team finds their step towards a leaner, faster, simpler product. Until then I will just act annoyed until someone at Microsoft notices. You can send them this article.\]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="el"><title type="html">Recently</title><link href="https://tsangiotis.com/recently-20221101/" rel="alternate" type="text/html" title="Recently" /><published>2022-10-23T00:00:00+00:00</published><updated>2022-10-23T00:00:00+00:00</updated><id>https://tsangiotis.com/recently-20221101</id><content type="html" xml:base="https://tsangiotis.com/recently-20221101/"><![CDATA[<p>Ήταν ένας μήνας εκθέσεων για την <a href="https://arpedon.com">Arpedon</a>.</p>

<p>Αρχικά το maintenance forum.</p>

<p><img src="/images/2022/10/IMG_6002.PNG" alt="Maintenance forum" /></p>

<p>Και έπειτα η Euronaval όπου ήμασταν μέρος του εθνικού περιπτέρου.</p>

<p><img src="/images/2022/10/IMG_6037.JPG" alt="Euronaval" /></p>

<p>Αυτό το μήνα έχω δύο βιβλία στη ζώνη μου:</p>
<ul>
  <li><a href="https://tsangiotis.com/books/2022-4/">Several Short Sentences About Writing Paperback - Verlyn Klinkenborg</a></li>
  <li><a href="https://tsangiotis.com/books/2022-5/">Never Split the Difference: Negotiating as if Your Life Depended on It - Christopher Voss</a></li>
</ul>

<h2 id="new-pins-">New pins 📌</h2>

<ul>
  <li>
    <table>
      <tbody>
        <tr>
          <td>[How to Extract Audio from video files</td>
          <td>iOS 15 New Tutorial - YouTube](https://m.youtube.com/watch?v=btESGhI0vGw)</td>
        </tr>
      </tbody>
    </table>
  </li>
  <li><a href="https://github.com/zendes/SBUS">zendes/SBUS: Arduino library for the Futaba SBUS protocol</a></li>
  <li><a href="https://twitter.com/Unexplained/status/1515887908829466627">The Unexplained on Twitter: “This is what it’s like to experience a Nuke in virtual reality 🤯 https://t.co/pdWmxxccaG” / Twitter</a></li>
</ul>]]></content><author><name>Tasos Sangiotis</name></author><category term="recently" /><summary type="html"><![CDATA[Ήταν ένας μήνας εκθέσεων για την Arpedon. Αρχικά το maintenance forum. Και έπειτα η Euronaval όπου ήμασταν μέρος του εθνικού περιπτέρου. Αυτό το μήνα έχω δύο βιβλία στη ζώνη μου: Several Short Sentences About Writing Paperback - Verlyn Klinkenborg Never Split the Difference: Negotiating as if Your Life Depended on It - Christopher Voss New pins 📌 [How to Extract Audio from video files iOS 15 New Tutorial - YouTube](https://m.youtube.com/watch?v=btESGhI0vGw) zendes/SBUS: Arduino library for the Futaba SBUS protocol The Unexplained on Twitter: “This is what it’s like to experience a Nuke in virtual reality 🤯 https://t.co/pdWmxxccaG” / Twitter]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/images/2022/10/IMG_6002.PNG" /><media:content medium="image" url="https://tsangiotis.com/images/2022/10/IMG_6002.PNG" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="el"><title type="html">Recently</title><link href="https://tsangiotis.com/recently-20221001/" rel="alternate" type="text/html" title="Recently" /><published>2022-10-01T00:00:00+00:00</published><updated>2022-10-01T00:00:00+00:00</updated><id>https://tsangiotis.com/recently-20221001</id><content type="html" xml:base="https://tsangiotis.com/recently-20221001/"><![CDATA[<p>Τελευταία ακούω Audiobooks. Έχω μαζέψει πάνω από 12 ώρες αυτό το μήνα. 30 λεπτά το πρωί, 30 το απόγευμα και λίγα ακόμα στις μεγαλύτερες διαδρομές μου. Το αποτέλεσμα είναι σχεδόν να έχω ολοκληρώσει 3 βιβλία. Σε αυτά είναι και το <em>Surely You’re Joking, Mr. Feynman!</em> για το οποίο έγραψα ένα <a href="https://tsangiotis.com/books/2022-3/">μικρό review</a>.</p>

<h2 id="new-pins-">New pins 📌</h2>

<ul>
  <li><a href="http://www.sengpielaudio.com/calculator-distance.htm" title="Link: http://www.sengpielaudio.com/calculator-distance.htm">Sound level distance damping dB calculation</a><br />
How does the sound decrease with change of distance?<br />
How do we calculate the distance drop of the noise?<br />
How is the sound reduction in dB with distance?</li>
  <li><a href="https://twitter.com/Foone/status/1572260363764400129" title="Link: https://twitter.com/Foone/status/1572260363764400129">Our absurd calendar system</a></li>
  <li>
    <table>
      <tbody>
        <tr>
          <td>[Παστίτσιο</td>
          <td>Χριστόφορος Πέσκιας](https://www.gastronomos.gr/syntagh/pastitsio-vinteo/119030/ “Link: https://www.gastronomos.gr/syntagh/pastitsio-vinteo/119030/”)</td>
        </tr>
      </tbody>
    </table>
  </li>
  <li><a href="https://constructionphysics.substack.com/p/why-arent-large-buildings-much-cheaper" title="Link: https://constructionphysics.substack.com/p/why-arent-large-buildings-much-cheaper">Why aren’t there economies of scale in building size?</a></li>
  <li><a href="https://mobile.twitter.com/grabbou/status/1567486204349644801">Configure VSCode to launch all your dev commands on startup</a></li>
</ul>

<p><img src="/images/recently-20221001/IMG_5298.jpeg" alt="Bye summer" /></p>]]></content><author><name>Tasos Sangiotis</name></author><category term="recently" /><summary type="html"><![CDATA[Τελευταία ακούω Audiobooks. Έχω μαζέψει πάνω από 12 ώρες αυτό το μήνα. 30 λεπτά το πρωί, 30 το απόγευμα και λίγα ακόμα στις μεγαλύτερες διαδρομές μου. Το αποτέλεσμα είναι σχεδόν να έχω ολοκληρώσει 3 βιβλία. Σε αυτά είναι και το Surely You’re Joking, Mr. Feynman! για το οποίο έγραψα ένα μικρό review. New pins 📌 Sound level distance damping dB calculation How does the sound decrease with change of distance? How do we calculate the distance drop of the noise? How is the sound reduction in dB with distance? Our absurd calendar system [Παστίτσιο Χριστόφορος Πέσκιας](https://www.gastronomos.gr/syntagh/pastitsio-vinteo/119030/ “Link: https://www.gastronomos.gr/syntagh/pastitsio-vinteo/119030/”) Why aren’t there economies of scale in building size? Configure VSCode to launch all your dev commands on startup]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/images/recently-20221001/IMG_5298.jpeg" /><media:content medium="image" url="https://tsangiotis.com/images/recently-20221001/IMG_5298.jpeg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Surely You’re Joking, Mr. Feynman! - Richard Feynman</title><link href="https://tsangiotis.com/surely-youre-joking-mr-feynman-by-richard-feynman/" rel="alternate" type="text/html" title="Surely You’re Joking, Mr. Feynman! - Richard Feynman" /><published>2022-10-01T00:00:00+00:00</published><updated>2022-10-01T00:00:00+00:00</updated><id>https://tsangiotis.com/surely-youre-joking-mr-feynman-by-richard-feynman</id><content type="html" xml:base="https://tsangiotis.com/surely-youre-joking-mr-feynman-by-richard-feynman/"><![CDATA[<p><img src="/assets/images/posts/surely-youre-joking-mr-feynman-by-richard-feynman/01-large_2022-3.jpg" alt="" /></p>

<p>Ο Richard P. Feynman, φυσικός και κάτοχος βραβείου Nobel είναι τουλάχιστον πνευματώδης.</p>

<p>Το βιβλίο είναι γραμμένο από τον ίδιο.</p>

<p>Review: ★★★</p>

<p>Ο Feynman είναι απόδειξη ότι όταν ξέρεις να λες καλές ιστορίες μπορείς να πας πολύ μακριά. Κατά δηλώσεις της περιόδου στο Caltech οι φοιτητές κρέμονταν από τα χείλη του. Πολλοί συνάδελφοι τον φθονούσαν.</p>

<p>Έχει όντως απίστευτες ιστορίες από το Los Alamos (Manhattan project - Ατομική βόμβα) έως τη Βραζιλία. Παρουσιάζεται ένας ιδιαίτερα περίεργος τύπος. Έχει καυγάδες και κατακτήσεις σε μπαρ, βάζει στοιχήματα με στρατιωτικούς, ανοίγει απόρρητα ερμάρια για να αφήσει σημειώματα και λέει καλά την ιστορία μετά.</p>

<p>Όταν φτάνω να συμπαθώ κάποιον χαρακτήρα και ιδιαίτερα όταν μιλά για λογαριασμό του σπεύδω να ρίξω μια ματιά στα ψεγάδια.</p>

<p>Ο Feynman έκανε ό, τι ήθελε όταν το ήθελε. Προσπαθούσε να ικανοποιήσει την περιέργεια του. Αυτό είναι κοινό στους ιδιαίτερους ανθρώπους και συχνά εξοργίζει τον κόσμο γύρω τους. Κοιμόταν με φοιτήτριες και υπονοείται στη σελίδα του στη wikipedia ότι κοιμήθηκε και με τη γυναίκα φίλου του. Όμως δεν είναι ο πρώτος που έκανε τα παραπάνω. Μάλιστα οι ιστορίες αυτές περνάνε και στα βιβλία του. </p>

<p>Κατηγορήθηκε για σεξισμό ιδιαίτερα για το κεφάλαιο <em>You Just Ask Them?</em> του βιβλίου αυτού. Εκεί ο ιδιοκτήτης του μπαρ όπου σύχναζε του λέει ότι ένας τρόπος υπάρχει για να φύγει με το κορίτσι από το μπαρ. <em>Να μην την κεράσει τίποτα έως ότου τη ρωτήσει αν θα κοιμηθεί μαζί του και έχει πειστεί ότι δεν του λέει ψέματα</em>, καθιστώντας την όλη συνάντηση σε ένα απλό αλισβερίσι.</p>

<p>Κατά τον Feynman τα παραπάνω ήρθαν ως προσπάθεια κορεσμού της περιέργειας του τουλάχιστον όπως προκύπτει από την αφήγηση του. Θεωρώ τουλάχιστον αφελές να θεωρήσουμε ότι το περιεχόμενο δεν έχει εμποτιστεί με μπόλικο ρομαντισμό.</p>

<p>Έπειτα στράφηκα στο επιστημονικό του έργο.</p>

<p>O Feynman είναι από τους σημαντικότερους θεωρητικούς φυσικούς που έχουν υπάρξει. Η συνεισφορά του στην κβαντομηχανική και την κβαντική ηλεκτροδυναμική έδωσαν εργαλεία για αλματώδη πρόοδο στον τομέα.</p>

<p>Το περιοδικό Physics World (Δεκέμβριος 1999), διεξήγαγε ένα γκάλοπ για να εξάγει μία λίστα με τους 10 σημαντικότερους φυσικούς στην ιστορία και ο Feynman ήταν 7ος πριν τον Dirac και μετά τον Γαλιλαίο.</p>

<p>Λίγες αναφορές βρήκα που θεωρούν τον Feynman υπερτιμημένο και πολλές από αυτές είχαν σκοπό την <a href="https://www.theatlantic.com/magazine/archive/2000/07/the-jaguar-and-the-fox/378264/">ανύψωση άλλων επιστημόνων</a> της εποχής όπως του συνεργάτη του στο Los Alamos, Murray Gell-Mann.</p>

<p>Σε τελική ανάλυση το βιβλίο είναι τουλάχιστον διασκεδαστικό.</p>

<p>Highlights:</p>

<ul>
  <li>Manhattan project και παραβίαση κλειδαριών</li>
  <li>Cargo cult science</li>
  <li>Μαθηματικά κόλπα</li>
</ul>

<!-- -->]]></content><author><name>Tasos Sangiotis</name></author><category term="Biography" /><category term="Review" /><category term="Books" /><summary type="html"><![CDATA[Ο Richard P. Feynman, φυσικός και κάτοχος βραβείου Nobel είναι τουλάχιστον πνευματώδης. Το βιβλίο είναι γραμμένο από τον ίδιο. Review: ★★★ Ο Feynman είναι απόδειξη ότι όταν ξέρεις να λες καλές ιστορίες μπορείς να πας πολύ μακριά. Κατά δηλώσεις της περιόδου στο Caltech οι φοιτητές κρέμονταν από τα χείλη του. Πολλοί συνάδελφοι τον φθονούσαν. Έχει όντως απίστευτες ιστορίες από το Los Alamos (Manhattan project - Ατομική βόμβα) έως τη Βραζιλία. Παρουσιάζεται ένας ιδιαίτερα περίεργος τύπος. Έχει καυγάδες και κατακτήσεις σε μπαρ, βάζει στοιχήματα με στρατιωτικούς, ανοίγει απόρρητα ερμάρια για να αφήσει σημειώματα και λέει καλά την ιστορία μετά. Όταν φτάνω να συμπαθώ κάποιον χαρακτήρα και ιδιαίτερα όταν μιλά για λογαριασμό του σπεύδω να ρίξω μια ματιά στα ψεγάδια. Ο Feynman έκανε ό, τι ήθελε όταν το ήθελε. Προσπαθούσε να ικανοποιήσει την περιέργεια του. Αυτό είναι κοινό στους ιδιαίτερους ανθρώπους και συχνά εξοργίζει τον κόσμο γύρω τους. Κοιμόταν με φοιτήτριες και υπονοείται στη σελίδα του στη wikipedia ότι κοιμήθηκε και με τη γυναίκα φίλου του. Όμως δεν είναι ο πρώτος που έκανε τα παραπάνω. Μάλιστα οι ιστορίες αυτές περνάνε και στα βιβλία του.  Κατηγορήθηκε για σεξισμό ιδιαίτερα για το κεφάλαιο You Just Ask Them? του βιβλίου αυτού. Εκεί ο ιδιοκτήτης του μπαρ όπου σύχναζε του λέει ότι ένας τρόπος υπάρχει για να φύγει με το κορίτσι από το μπαρ. Να μην την κεράσει τίποτα έως ότου τη ρωτήσει αν θα κοιμηθεί μαζί του και έχει πειστεί ότι δεν του λέει ψέματα, καθιστώντας την όλη συνάντηση σε ένα απλό αλισβερίσι. Κατά τον Feynman τα παραπάνω ήρθαν ως προσπάθεια κορεσμού της περιέργειας του τουλάχιστον όπως προκύπτει από την αφήγηση του. Θεωρώ τουλάχιστον αφελές να θεωρήσουμε ότι το περιεχόμενο δεν έχει εμποτιστεί με μπόλικο ρομαντισμό. Έπειτα στράφηκα στο επιστημονικό του έργο. O Feynman είναι από τους σημαντικότερους θεωρητικούς φυσικούς που έχουν υπάρξει. Η συνεισφορά του στην κβαντομηχανική και την κβαντική ηλεκτροδυναμική έδωσαν εργαλεία για αλματώδη πρόοδο στον τομέα. Το περιοδικό Physics World (Δεκέμβριος 1999), διεξήγαγε ένα γκάλοπ για να εξάγει μία λίστα με τους 10 σημαντικότερους φυσικούς στην ιστορία και ο Feynman ήταν 7ος πριν τον Dirac και μετά τον Γαλιλαίο. Λίγες αναφορές βρήκα που θεωρούν τον Feynman υπερτιμημένο και πολλές από αυτές είχαν σκοπό την ανύψωση άλλων επιστημόνων της εποχής όπως του συνεργάτη του στο Los Alamos, Murray Gell-Mann. Σε τελική ανάλυση το βιβλίο είναι τουλάχιστον διασκεδαστικό. Highlights: Manhattan project και παραβίαση κλειδαριών Cargo cult science Μαθηματικά κόλπα]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Deep Work by Cal Newport</title><link href="https://tsangiotis.com/deep-work-by-cal-newport/" rel="alternate" type="text/html" title="Deep Work by Cal Newport" /><published>2022-09-18T00:00:00+00:00</published><updated>2022-09-18T00:00:00+00:00</updated><id>https://tsangiotis.com/deep-work-by-cal-newport</id><content type="html" xml:base="https://tsangiotis.com/deep-work-by-cal-newport/"><![CDATA[<p>Cal Newport gives a lot of examples getting also information from different figures scattered across the years. You definitely get convinced that you can do this kind of work and you can.</p>

<p>At the same time, the gist is there from the first pages and it is be less distracted.</p>

<p>Review: ★★</p>

<p>Highlights:</p>

<ul>
  <li>The <a href="https://www.mute.design/2022/05/23/eudaimonia-machine/">Eudaimonia machine</a></li>
</ul>

<p><img src="/assets/images/posts/deep-work-by-cal-newport/01-ep_work_rules_for_focused_success_in_a_distracted_world.jpeg" alt="Deep Work Rules for Focused Success in a Distracted World - Cal Newport Skroutzgr" />\</p>

<h1>\</h1>]]></content><author><name>Tasos Sangiotis</name></author><category term="Self Help" /><category term="Work" /><category term="Focus" /><category term="Review" /><category term="Books" /><summary type="html"><![CDATA[Cal Newport gives a lot of examples getting also information from different figures scattered across the years. You definitely get convinced that you can do this kind of work and you can. At the same time, the gist is there from the first pages and it is be less distracted. Review: ★★ Highlights: The Eudaimonia machine \ \]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="en"><title type="html">Recently</title><link href="https://tsangiotis.com/recently-20220901/" rel="alternate" type="text/html" title="Recently" /><published>2022-09-04T00:00:00+00:00</published><updated>2022-09-04T00:00:00+00:00</updated><id>https://tsangiotis.com/recently-20220901</id><content type="html" xml:base="https://tsangiotis.com/recently-20220901/"><![CDATA[<p>Let’s make this newsletter an actual newsletter.</p>

<p>Bellow are <em>new </em>posts, <em>new</em> photos, <em>new </em>pins.</p>

<p><strong>New posts ✍️</strong></p>

<ul>
  <li><a href="https://tsangiotis.com/tuscan-roads/">Tuscan roads 🇬🇷</a>  Aug 24, 2022<br />
The above post is also on the mialigoura instagram on three sections:
    <ol>
      <li><a href="https://www.instagram.com/p/ChetjHIsPHR/">Firenze</a></li>
      <li><a href="https://www.instagram.com/p/CiFQIpDMdU4/">Siena and Val d’Orcia</a></li>
      <li>Rome (<a href="https://www.instagram.com/mialigoura/">Follow to see when posted</a>)</li>
    </ol>
  </li>
</ul>

<p><strong>New pins 📌</strong></p>

<ul>
  <li><a href="https://www.youtube.com/watch?v=BfDLoIvb0w4">The Ultimate Moka Pot Technique (Episode #3) - YouTube</a>  Sep 4, 2022</li>
  <li><a href="http://www.vibrationschool.com/mans/SpecInter/SpecInter15c.htm">Belt-Drives - General</a>  Aug 30, 2022<br />
<em>Belt-drive problems, which include shaft misalignment, pulley misalignment, belt wear, belt resonance, belts too tight, belts too loose, pulley eccentricity and bent shafts, can be relatively straight forward to detect but can be far more difficult to specifically diagnose and correct. That is mainly due to the wide variety of problems that can occur in the installation and assembling of the belt drive, the difficulty of doing field testing on belts and the possibility of other influences (i.e. the base) having some effect. </em></li>
  <li><a href="https://future.com/jason-fried-basecamp-hey-interview/">Jason Fried on Why He Doesn’t Do Planning or Politics at Work</a>  Aug 29, 2022<br />
<em>The Basecamp and HEY cofounder discusses the power of short-term thinking, his framework for startup longevity, and the key thing he looks for when hiring remote.</em></li>
  <li><a href="https://sive.rs/a">Anything You Want | Derek Sivers</a>  Aug 27, 2022<br />
<em>Quick business book</em></li>
  <li><a href="https://defensivecss.dev/tip/auto-fit-fill/">Auto-fit Vs Auto-fill</a>  Aug 25, 2022<br />
<em>Fit stuff with CSS. Always tricky</em><br />
The section above is always updated on <a href="https://tsangiotis.com/">tsangiotis.com</a>. It pulls my public <a href="https://pinboard.in/">Pinboard</a> RSS feed hourly and it is the first javascript element on my personal site.</li>
</ul>

<p><img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/98ed42ba-8761-413c-f530-61c5fe6d5300/optimized" alt="image.png" /></p>

<p>As for the personal site it is back to Jekyll. I played with <a href="https://bearblog.dev/">bearblog</a> for a while but it became a lot like Jekyll recently so I might as well embrace the path fully.</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="recently" /><summary type="html"><![CDATA[Let’s make this newsletter an actual newsletter. Bellow are new posts, new photos, new pins. New posts ✍️ Tuscan roads 🇬🇷  Aug 24, 2022 The above post is also on the mialigoura instagram on three sections: Firenze Siena and Val d’Orcia Rome (Follow to see when posted) New pins 📌 The Ultimate Moka Pot Technique (Episode #3) - YouTube  Sep 4, 2022 Belt-Drives - General  Aug 30, 2022 Belt-drive problems, which include shaft misalignment, pulley misalignment, belt wear, belt resonance, belts too tight, belts too loose, pulley eccentricity and bent shafts, can be relatively straight forward to detect but can be far more difficult to specifically diagnose and correct. That is mainly due to the wide variety of problems that can occur in the installation and assembling of the belt drive, the difficulty of doing field testing on belts and the possibility of other influences (i.e. the base) having some effect.  Jason Fried on Why He Doesn’t Do Planning or Politics at Work  Aug 29, 2022 The Basecamp and HEY cofounder discusses the power of short-term thinking, his framework for startup longevity, and the key thing he looks for when hiring remote. Anything You Want | Derek Sivers  Aug 27, 2022 Quick business book Auto-fit Vs Auto-fill  Aug 25, 2022 Fit stuff with CSS. Always tricky The section above is always updated on tsangiotis.com. It pulls my public Pinboard RSS feed hourly and it is the first javascript element on my personal site. As for the personal site it is back to Jekyll. I played with bearblog for a while but it became a lot like Jekyll recently so I might as well embrace the path fully.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/98ed42ba-8761-413c-f530-61c5fe6d5300/optimized" /><media:content medium="image" url="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/98ed42ba-8761-413c-f530-61c5fe6d5300/optimized" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="el"><title type="html">Tuscan roads</title><link href="https://tsangiotis.com/tuscan-roads/" rel="alternate" type="text/html" title="Tuscan roads" /><published>2022-08-24T00:00:00+00:00</published><updated>2022-08-24T00:00:00+00:00</updated><id>https://tsangiotis.com/tuscan-roads</id><content type="html" xml:base="https://tsangiotis.com/tuscan-roads/"><![CDATA[<p>Μόλις γυρίσαμε από ένα ταξίδι στη βόρεια Ιταλία. Θυσιάσαμε το ελληνικό καλοκαίρι για brunello και ζυμαρικά και άξιζε. Οπότε αυτό το site μετατρέπεται προσωρινά στο food blog που θα ντροπιάσει τα food blogs.</p>

<h1 id="φλωρεντία">Φλωρεντία</h1>

<p><img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/65a8ebf1-67b7-4619-4b51-a87d37183a00/optimized" alt="IMG_3589.JPG" /></p>

<p>Το ταξίδι ξεκίνησε εδώ. Η Φλωρεντία είναι η μεγαλύτερη πόλη της περιφέρειας της Τοσκάνης με γραφικούς πλακόστρωτους δρόμους, εντυπωσιακές γέφυρες και φοβερό φαγητό.</p>

<p>Ήπιαμε το πρώτο Spritz στο Caffe Concerto Paszkowski.</p>

<p><img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/545651ee-bec6-49e4-4589-30ca448d7200/optimized" alt="IMG_1293.jpg" /></p>

<p>Περπατήσαμε στην πόλη και την Ponte Vecchio με τα πολλά κοσμηματοπωλεία, ανεβήκαμε στην Piazzale Michelangelo για να δούμε το ηλιοβασίλεμα και έπειτα δειπνήσαμε στην Enoteca Fuori Porta.</p>

<p class="gallery gallery--2"><img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/f1c73692-c586-486c-5a60-349c8b8cba00/optimized" alt="IMG_3540.JPG" />
<img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/96208af9-dbef-4d6f-de11-722b07692a00/optimized" alt="IMG_1303.jpg" /></p>

<p>Την επόμενη μέρα οδεύσαμε προς τους κήπους Boboli και έπειτα στην πινακοθήκη Uffizi με αναγεννησιακά αριστουργήματα.</p>

<p><img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/69a86282-7c8b-4594-d02e-e2aebbd4f300/optimized" alt="Uffizi" /></p>

<p>Έπειτα οδεύσαμε στο La Giostra, ένα παραδοσιακό εστιατόριο σε χώρο με κρύπτες από τούβλα του 16ου αιώνα όπου φάγαμε παραδοσιακά ζυμαρικά και το πρώτο τιραμισού της εκδρομής.</p>

<p class="gallery gallery--2"><img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/9cf72018-3ce4-4833-1a11-27ffeec6b800/optimized" alt="IMG_1356.jpg" />
<img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/902fa5f0-8f19-4bf4-f84a-e00e96e04400/optimized" alt="IMG_1360.jpg" />
<img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/a1da3db9-e927-4a59-75df-f01cd1951900/optimized" alt="IMG_1376.jpg" />
<img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/748ba72e-9297-4687-3827-4cfff2232300/optimized" alt="IMG_3706.JPG" /></p>

<p>Το απόγευμα περπατήσαμε στον ποταμό Άρνο πριν πάρουμε το δρόμο της επιστροφής.</p>

<p><img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/e3abfb37-fd52-4f75-6b84-04b652e85100/optimized" alt="IMG_3732.JPG" /></p>

<p>Αποφασίσαμε να σταματήσουμε για ένα ποτό στο δρόμο για το ξενοδοχείο και πέσαμε στο Note di Vino. Εδώ λοιπόν απρόσμενα φάγαμε το highlight νούμερο 1, το πιο επικό σάντουιτς που έχουμε δοκιμάσει. Με ελαφρώς ζεστό και κρατσανιστό ψωμάκι, finocchiona (σαλάμι), stacchino (τυρί), ψιλοκομμένη μελιτζάνα και ελαιόλαδο.</p>

<p class="gallery gallery--2"><img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/798fa81f-c9b1-48ff-dc7c-8ed091018900/optimized" alt="IMG_1424.jpg" />
<img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/7dc9b3b6-d78e-472a-c8ff-bf43496ac300/optimized" alt="IMG_4318.jpg" /></p>

<p>Έπρεπε να πάρουμε και δεύτερο για το ταξίδι μας την επομένη.</p>

<h1 id="σιένα">Σιένα</h1>

<p>Το επόμενο πρωινό μας βρήκε στο τραίνο για τη Σιένα.</p>

<p>Μείναμε σε ένα παραδοσιακό ξενοδοχείο λίγο έξω από τα τείχη της πόλης με όμορφο πρωινό στην αυλή του.</p>

<p><img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/ad20e711-ae20-46e8-afa8-15fa9b905f00/optimized" alt="IMG_3855.JPG" /></p>

<p>Η κεντρική πλατεία της Sienna έχει αμφιθεατρική δομή με καφέ τριγύρω όμως πιο μέσα κρύβονται οι πιο μερακλήδικες γεύσεις.</p>

<p>Φάγαμε απλά πιάτα στο Babazuf και έπειτα πήγαμε για κρασί στο Il Bargello όπου προέκυψε και <em>δεύτερο δείπνο</em>.</p>

<p class="gallery gallery--3"><img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/223baae0-919b-419a-ebd1-aa87157bd800/optimized" alt="IMG_3819.JPG" />
<img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/4adf7c24-f020-4310-f301-9d9449403600/optimized" alt="IMG_3820.JPG" />
<img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/99a60fd0-22d9-41ec-f460-cd96e9511000/optimized" alt="IMG_1484.jpg" /></p>

<p>Την επόμενη μέρα κατευθυνθήκαμε προς την κοιλάδα Val d’Orcia και σταματήσαμε στα χωριά Πιένσα - απ’ όπου προέρχεται το Πεκορίνο - και Μοντεπουλτσιάνο. Στο τελευταίο φάγαμε μία απίστευτη πίτσα με μπουράτα και λάδι από τσίλι.</p>

<p><img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/58afa201-9309-45e0-1d98-51f1fb90c500/optimized" alt="IMG_4446.jpg" /></p>

<p>Επιστρέφοντας, δειπνήσαμε στο Osteria Il Carroccio όπου φάγαμε την πιο ζουμερή καρμπονάρα.</p>

<h1 id="ρώμη">Ρώμη</h1>

<p>Λίγα μέρη έχουν καλύτερο φαγητό από τη Ρώμη. Με γυμνασμένο πλέον στομάχι μακαρονάδων συνεχίσαμε.</p>

<p>Ξεκινήσαμε με παγωτό στο διάσημο Giolitti. Πολλοί λένε ότι είναι το καλύτερο όμως ανέπτυξα αδυναμία στη μαύρη σοκολάτα του Venchi.</p>

<p><img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/46011a32-c2c2-4982-457f-e843f962e200/optimized" alt="IMG_4506.jpg" /></p>

<p>Επόμενο αγαπημένο μέρος όπου βρεθήκαμε δύο φορές ήταν το Cantina e Cucina. Ένα μικρό και διαρκώς πλήρες εστιατόριο δίπλα στην Piazza Navona.</p>

<p>Εκεί δοκιμάσαμε Tonnarello pasta  το οποίο μεταφράζεται σε μακαρόνια με κεφτέδες και Saltimbocca alla Romana το οποίο είναι μελιτζάνα σε μορφή λαζανιών και ήταν πεντανόστιμο</p>

<p class="gallery gallery--2"><img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/e8eeaeed-444a-4953-c74a-7aa912950e00/optimized" alt="IMG_3960.JPG" />
<img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/24f2056f-5d34-4e11-6042-7f254d077b00/optimized" alt="IMG_3954.JPG" /></p>

<p>Η Ρώμη το καλοκαίρι είναι πολύ ζεστή πράγμα που δε βοήθησε το περπάτημα και τη χώνεψη όμως περπατήσαμε πολύ.</p>

<p class="gallery gallery--3"><img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/fee8839a-09e9-4056-8b26-d69aa054f000/optimized" alt="IMG_3996.JPG" />
<img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/70bce368-6c64-4695-af76-0cb96cc7bb00/optimized" alt="IMG_3971.JPG" />
<img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/753f2611-94a9-4cdc-320a-1847f02e3300/optimized" alt="IMG_3939.JPG" /></p>

<p class="gallery gallery--2"><img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/2a65b23e-e8e6-474d-1074-c8faa62b1500/optimized" alt="IMG_3909.JPG" />
<img src="https://imagedelivery.net/9y59yvFNbWTltjX6sh684Q/ce3651f0-f51b-4f96-75db-73c429900000/optimized" alt="IMG_3981.JPG" /></p>

<p>Και το ταξίδι τελείωσε. Αν δικαιολογημένα σας τρέχουν τα σάλια κλείστε ένα τραπέζι στο αγαπημένο σας Ιταλικό και την επόμενη Άνοιξη ή το επερχόμενο φθινόπωρο πηγαίντε μια βόλτα στην γειτονική μας χώρα!</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Tuscany," /><category term="Italy," /><category term="Photography," /><category term="Travel," /><category term="Food" /><summary type="html"><![CDATA[Μόλις γυρίσαμε από ένα ταξίδι στη βόρεια Ιταλία. Θυσιάσαμε το ελληνικό καλοκαίρι για brunello και ζυμαρικά και άξιζε. Οπότε αυτό το site μετατρέπεται προσωρινά στο food blog που θα ντροπιάσει τα food blogs. Φλωρεντία Το ταξίδι ξεκίνησε εδώ. Η Φλωρεντία είναι η μεγαλύτερη πόλη της περιφέρειας της Τοσκάνης με γραφικούς πλακόστρωτους δρόμους, εντυπωσιακές γέφυρες και φοβερό φαγητό. Ήπιαμε το πρώτο Spritz στο Caffe Concerto Paszkowski. Περπατήσαμε στην πόλη και την Ponte Vecchio με τα πολλά κοσμηματοπωλεία, ανεβήκαμε στην Piazzale Michelangelo για να δούμε το ηλιοβασίλεμα και έπειτα δειπνήσαμε στην Enoteca Fuori Porta. Την επόμενη μέρα οδεύσαμε προς τους κήπους Boboli και έπειτα στην πινακοθήκη Uffizi με αναγεννησιακά αριστουργήματα. Έπειτα οδεύσαμε στο La Giostra, ένα παραδοσιακό εστιατόριο σε χώρο με κρύπτες από τούβλα του 16ου αιώνα όπου φάγαμε παραδοσιακά ζυμαρικά και το πρώτο τιραμισού της εκδρομής. Το απόγευμα περπατήσαμε στον ποταμό Άρνο πριν πάρουμε το δρόμο της επιστροφής. Αποφασίσαμε να σταματήσουμε για ένα ποτό στο δρόμο για το ξενοδοχείο και πέσαμε στο Note di Vino. Εδώ λοιπόν απρόσμενα φάγαμε το highlight νούμερο 1, το πιο επικό σάντουιτς που έχουμε δοκιμάσει. Με ελαφρώς ζεστό και κρατσανιστό ψωμάκι, finocchiona (σαλάμι), stacchino (τυρί), ψιλοκομμένη μελιτζάνα και ελαιόλαδο. Έπρεπε να πάρουμε και δεύτερο για το ταξίδι μας την επομένη. Σιένα Το επόμενο πρωινό μας βρήκε στο τραίνο για τη Σιένα. Μείναμε σε ένα παραδοσιακό ξενοδοχείο λίγο έξω από τα τείχη της πόλης με όμορφο πρωινό στην αυλή του. Η κεντρική πλατεία της Sienna έχει αμφιθεατρική δομή με καφέ τριγύρω όμως πιο μέσα κρύβονται οι πιο μερακλήδικες γεύσεις. Φάγαμε απλά πιάτα στο Babazuf και έπειτα πήγαμε για κρασί στο Il Bargello όπου προέκυψε και δεύτερο δείπνο. Την επόμενη μέρα κατευθυνθήκαμε προς την κοιλάδα Val d’Orcia και σταματήσαμε στα χωριά Πιένσα - απ’ όπου προέρχεται το Πεκορίνο - και Μοντεπουλτσιάνο. Στο τελευταίο φάγαμε μία απίστευτη πίτσα με μπουράτα και λάδι από τσίλι. Επιστρέφοντας, δειπνήσαμε στο Osteria Il Carroccio όπου φάγαμε την πιο ζουμερή καρμπονάρα. Ρώμη Λίγα μέρη έχουν καλύτερο φαγητό από τη Ρώμη. Με γυμνασμένο πλέον στομάχι μακαρονάδων συνεχίσαμε. Ξεκινήσαμε με παγωτό στο διάσημο Giolitti. Πολλοί λένε ότι είναι το καλύτερο όμως ανέπτυξα αδυναμία στη μαύρη σοκολάτα του Venchi. Επόμενο αγαπημένο μέρος όπου βρεθήκαμε δύο φορές ήταν το Cantina e Cucina. Ένα μικρό και διαρκώς πλήρες εστιατόριο δίπλα στην Piazza Navona. Εκεί δοκιμάσαμε Tonnarello pasta  το οποίο μεταφράζεται σε μακαρόνια με κεφτέδες και Saltimbocca alla Romana το οποίο είναι μελιτζάνα σε μορφή λαζανιών και ήταν πεντανόστιμο Η Ρώμη το καλοκαίρι είναι πολύ ζεστή πράγμα που δε βοήθησε το περπάτημα και τη χώνεψη όμως περπατήσαμε πολύ. Και το ταξίδι τελείωσε. Αν δικαιολογημένα σας τρέχουν τα σάλια κλείστε ένα τραπέζι στο αγαπημένο σας Ιταλικό και την επόμενη Άνοιξη ή το επερχόμενο φθινόπωρο πηγαίντε μια βόλτα στην γειτονική μας χώρα!]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="en"><title type="html">How to revert a revert to avoid a revert of revert</title><link href="https://tsangiotis.com/how-to-revert-a-revert-to-avoid-a-revert-of-revert/" rel="alternate" type="text/html" title="How to revert a revert to avoid a revert of revert" /><published>2022-07-30T00:00:00+00:00</published><updated>2022-07-30T00:00:00+00:00</updated><id>https://tsangiotis.com/how-to-revert-a-revert-to-avoid-a-revert-of-revert</id><content type="html" xml:base="https://tsangiotis.com/how-to-revert-a-revert-to-avoid-a-revert-of-revert/"><![CDATA[<p>I fucked up a git thing.</p>

<p>I merged a big ui change that hadn’t tested with real data and resulted in crashes.</p>

<p>No problem, I revert but how you continue working after?</p>

<p>The Linux kernel team has <a href="https://mirrors.edge.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.txt">an answer</a>.</p>

<p>As per their explanations this is my preferred method of those explained:</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>The history immediately after the "revert of the merge" would look like
this:

 ---o---o---o---M---x---x---W
               /
       ---A---B

where A and B are on the side development that was not so good, M is the
merge that brings these premature changes into the mainline, x are changes
unrelated to what the side branch did and already made on the mainline,
and W is the "revert of the merge M" (doesn't W look M upside down?).
IOW, `"diff W^..W"` is similar to `"diff -R M^..M"`.

Such a "revert" of a merge can be made with:

    $ git revert -m 1 M

After the developers of the side branch fix their mistakes, the history
may look like this:

 ---o---o---o---M---x---x---W---x
               /
       ---A---B-------------------C---D

where C and D are to fix what was broken in A and B, and you may already
have some other changes on the mainline after W.

If you merge the updated side branch (with D at its tip), none of the
changes made in A or B will be in the result, because they were reverted
by W.  That is what Alan saw.

Linus explains the situation:

    Reverting a regular commit just effectively undoes what that commit
    did, and is fairly straightforward. But reverting a merge commit also
    undoes the _data_ that the commit changed, but it does absolutely
    nothing to the effects on _history_ that the merge had.

    So the merge will still exist, and it will still be seen as joining
    the two branches together, and future merges will see that merge as
    the last shared state - and the revert that reverted the merge brought
    in will not affect that at all.

    So a "revert" undoes the data changes, but it's very much _not_ an
    "undo" in the sense that it doesn't undo the effects of a commit on
    the repository history.

    So if you think of "revert" as "undo", then you're going to always
    miss this part of reverts. Yes, it undoes the data, but no, it doesn't
    undo history.

In such a situation, you would want to first revert the previous revert,
which would make the history look like this:

 ---o---o---o---M---x---x---W---x---Y
               /
       ---A---B-------------------C---D

where Y is the revert of W.  Such a "revert of the revert" can be done
with:

    $ git revert W

This history would (ignoring possible conflicts between what W and W..Y
changed) be equivalent to not having W or Y at all in the history:

 ---o---o---o---M---x---x-------x----
               /
       ---A---B-------------------C---D

and merging the side branch again will not have conflict arising from an
earlier revert and revert of the revert.

 ---o---o---o---M---x---x-------x-------*
               /                       /
       ---A---B-------------------C---D

Of course the changes made in C and D still can conflict with what was
done by any of the x, but that is just a normal merge conflict.

On the other hand, if the developers of the side branch discarded their
faulty A and B, and redone the changes on top of the updated mainline
after the revert, the history would have looked like this:

 ---o---o---o---M---x---x---W---x---x
               /                 \
       ---A---B                   A'--B'--C'

If you reverted the revert in such a case as in the previous example:

 ---o---o---o---M---x---x---W---x---x---Y---*
               /                 \         /
       ---A---B                   A'--B'--C'

where Y is the revert of W, A' and B' are rerolled A and B, and there may
also be a further fix-up C' on the side branch.  `"diff Y^..Y"` is similar
to `"diff -R W^..W"` (which in turn means it is similar to `"diff M^..M"`),
and `"diff A'^..C'"` by definition would be similar but different from that,
because it is a rerolled series of the earlier change.  There will be a
lot of overlapping changes that result in conflicts.  So do not do "revert
of revert" blindly without thinking..

 ---o---o---o---M---x---x---W---x---x
               /                 \
       ---A---B                   A'--B'--C'

In the history with rebased side branch, W (and M) are behind the merge
base of the updated branch and the tip of the mainline, and they should
merge without the past faulty merge and its revert getting in the way.

To recap, these are two very different scenarios, and they want two very
different resolution strategies:

 - If the faulty side branch was fixed by adding corrections on top, then
   doing a revert of the previous revert would be the right thing to do.

 - If the faulty side branch whose effects were discarded by an earlier
   revert of a merge was rebuilt from scratch (i.e. rebasing and fixing,
   as you seem to have interpreted), then re-merging the result without
   doing anything else fancy would be the right thing to do.
   (See the ADDENDUM below for how to rebuild a branch from scratch
   without changing its original branching-off point.)

However, there are things to keep in mind when reverting a merge (and
reverting such a revert).

For example, think about what reverting a merge (and then reverting the
revert) does to bisectability. Ignore the fact that the revert of a revert
is undoing it - just think of it as a "single commit that does a lot".
Because that is what it does.

When you have a problem you are chasing down, and you hit a "revert this
merge", what you're hitting is essentially a single commit that contains
all the changes (but obviously in reverse) of all the commits that got
merged. So it's debugging hell, because now you don't have lots of small
changes that you can try to pinpoint which _part_ of it changes.

But does it all work? Sure it does. You can revert a merge, and from a
purely technical angle, Git did it very naturally and had no real
troubles. It just considered it a change from "state before merge" to
"state after merge", and that was it. Nothing complicated, nothing odd,
nothing really dangerous. Git will do it without even thinking about it.

So from a technical angle, there's nothing wrong with reverting a merge,
but from a workflow angle it's something that you generally should try to
avoid.

If at all possible, for example, if you find a problem that got merged
into the main tree, rather than revert the merge, try _really_ hard to
bisect the problem down into the branch you merged, and just fix it, or
try to revert the individual commit that caused it.

Yes, it's more complex, and no, it's not always going to work (sometimes
the answer is: "oops, I really shouldn't have merged it, because it wasn't
ready yet, and I really need to undo _all_ of the merge"). So then you
really should revert the merge, but when you want to re-do the merge, you
now need to do it by reverting the revert.

ADDENDUM

Sometimes you have to rewrite one of a topic branch's commits *and* you can't
change the topic's branching-off point.  Consider the following situation:

 P---o---o---M---x---x---W---x
  \         /
   A---B---C

where commit W reverted commit M because it turned out that commit B was wrong
and needs to be rewritten, but you need the rewritten topic to still branch
from commit P (perhaps P is a branching-off point for yet another branch, and
you want be able to merge the topic into both branches).

The natural thing to do in this case is to checkout the A-B-C branch and use
"rebase -i P" to change commit B.  However this does not rewrite commit A,
because "rebase -i" by default fast-forwards over any initial commits selected
with the "pick" command.  So you end up with this:

 P---o---o---M---x---x---W---x
  \         /
   A---B---C   &lt;-- old branch
    \
     B'---C'   &lt;-- naively rewritten branch

To merge A-B'-C' into the mainline branch you would still have to first revert
commit W in order to pick up the changes in A, but then it's likely that the
changes in B' will conflict with the original B changes re-introduced by the
reversion of W.

However, you can avoid these problems if you recreate the entire branch,
including commit A:

   A'---B'---C'  &lt;-- completely rewritten branch
  /
 P---o---o---M---x---x---W---x
  \         /
   A---B---C

You can merge A'-B'-C' into the mainline branch without worrying about first
reverting W.  Mainline's history would look like this:

   A'---B'---C'------------------
  /                              \
 P---o---o---M---x---x---W---x---M2
  \         /
   A---B---C

But if you don't actually need to change commit A, then you need some way to
recreate it as a new commit with the same changes in it.  The rebase command's
--no-ff option provides a way to do this:

    $ git rebase [-i] --no-ff P

The --no-ff option creates a new branch A'-B'-C' with all-new commits (all the
SHA IDs will be different) even if in the interactive case you only actually
modify commit B.  You can then merge this new branch directly into the mainline
branch and be sure you'll get all of the branch's changes.

You can also use --no-ff in cases where you just add extra commits to the topic
to fix it up.  Let's revisit the situation discussed at the start of this howto:

 P---o---o---M---x---x---W---x
  \         /
   A---B---C----------------D---E   &lt;-- fixed-up topic branch

At this point, you can use --no-ff to recreate the topic branch:

    $ git checkout E
    $ git rebase --no-ff P

yielding

   A'---B'---C'------------D'---E'  &lt;-- recreated topic branch
  /
 P---o---o---M---x---x---W---x
  \         /
   A---B---C----------------D---E

You can merge the recreated branch into the mainline without reverting commit W,
and mainline's history will look like this:

   A'---B'---C'------------D'---E'
  /                              \
 P---o---o---M---x---x---W---x---M2
  \         /
   A---B---C
</code></pre></div></div>]]></content><author><name>Tasos Sangiotis</name></author><category term="git," /><category term="til" /><summary type="html"><![CDATA[I fucked up a git thing. I merged a big ui change that hadn’t tested with real data and resulted in crashes. No problem, I revert but how you continue working after? The Linux kernel team has an answer. As per their explanations this is my preferred method of those explained: The history immediately after the "revert of the merge" would look like this: ---o---o---o---M---x---x---W / ---A---B where A and B are on the side development that was not so good, M is the merge that brings these premature changes into the mainline, x are changes unrelated to what the side branch did and already made on the mainline, and W is the "revert of the merge M" (doesn't W look M upside down?). IOW, `"diff W^..W"` is similar to `"diff -R M^..M"`. Such a "revert" of a merge can be made with: $ git revert -m 1 M After the developers of the side branch fix their mistakes, the history may look like this: ---o---o---o---M---x---x---W---x / ---A---B-------------------C---D where C and D are to fix what was broken in A and B, and you may already have some other changes on the mainline after W. If you merge the updated side branch (with D at its tip), none of the changes made in A or B will be in the result, because they were reverted by W. That is what Alan saw. Linus explains the situation: Reverting a regular commit just effectively undoes what that commit did, and is fairly straightforward. But reverting a merge commit also undoes the _data_ that the commit changed, but it does absolutely nothing to the effects on _history_ that the merge had. So the merge will still exist, and it will still be seen as joining the two branches together, and future merges will see that merge as the last shared state - and the revert that reverted the merge brought in will not affect that at all. So a "revert" undoes the data changes, but it's very much _not_ an "undo" in the sense that it doesn't undo the effects of a commit on the repository history. So if you think of "revert" as "undo", then you're going to always miss this part of reverts. Yes, it undoes the data, but no, it doesn't undo history. In such a situation, you would want to first revert the previous revert, which would make the history look like this: ---o---o---o---M---x---x---W---x---Y / ---A---B-------------------C---D where Y is the revert of W. Such a "revert of the revert" can be done with: $ git revert W This history would (ignoring possible conflicts between what W and W..Y changed) be equivalent to not having W or Y at all in the history: ---o---o---o---M---x---x-------x---- / ---A---B-------------------C---D and merging the side branch again will not have conflict arising from an earlier revert and revert of the revert. ---o---o---o---M---x---x-------x-------* / / ---A---B-------------------C---D Of course the changes made in C and D still can conflict with what was done by any of the x, but that is just a normal merge conflict. On the other hand, if the developers of the side branch discarded their faulty A and B, and redone the changes on top of the updated mainline after the revert, the history would have looked like this: ---o---o---o---M---x---x---W---x---x / \ ---A---B A'--B'--C' If you reverted the revert in such a case as in the previous example: ---o---o---o---M---x---x---W---x---x---Y---* / \ / ---A---B A'--B'--C' where Y is the revert of W, A' and B' are rerolled A and B, and there may also be a further fix-up C' on the side branch. `"diff Y^..Y"` is similar to `"diff -R W^..W"` (which in turn means it is similar to `"diff M^..M"`), and `"diff A'^..C'"` by definition would be similar but different from that, because it is a rerolled series of the earlier change. There will be a lot of overlapping changes that result in conflicts. So do not do "revert of revert" blindly without thinking.. ---o---o---o---M---x---x---W---x---x / \ ---A---B A'--B'--C' In the history with rebased side branch, W (and M) are behind the merge base of the updated branch and the tip of the mainline, and they should merge without the past faulty merge and its revert getting in the way. To recap, these are two very different scenarios, and they want two very different resolution strategies: - If the faulty side branch was fixed by adding corrections on top, then doing a revert of the previous revert would be the right thing to do. - If the faulty side branch whose effects were discarded by an earlier revert of a merge was rebuilt from scratch (i.e. rebasing and fixing, as you seem to have interpreted), then re-merging the result without doing anything else fancy would be the right thing to do. (See the ADDENDUM below for how to rebuild a branch from scratch without changing its original branching-off point.) However, there are things to keep in mind when reverting a merge (and reverting such a revert). For example, think about what reverting a merge (and then reverting the revert) does to bisectability. Ignore the fact that the revert of a revert is undoing it - just think of it as a "single commit that does a lot". Because that is what it does. When you have a problem you are chasing down, and you hit a "revert this merge", what you're hitting is essentially a single commit that contains all the changes (but obviously in reverse) of all the commits that got merged. So it's debugging hell, because now you don't have lots of small changes that you can try to pinpoint which _part_ of it changes. But does it all work? Sure it does. You can revert a merge, and from a purely technical angle, Git did it very naturally and had no real troubles. It just considered it a change from "state before merge" to "state after merge", and that was it. Nothing complicated, nothing odd, nothing really dangerous. Git will do it without even thinking about it. So from a technical angle, there's nothing wrong with reverting a merge, but from a workflow angle it's something that you generally should try to avoid. If at all possible, for example, if you find a problem that got merged into the main tree, rather than revert the merge, try _really_ hard to bisect the problem down into the branch you merged, and just fix it, or try to revert the individual commit that caused it. Yes, it's more complex, and no, it's not always going to work (sometimes the answer is: "oops, I really shouldn't have merged it, because it wasn't ready yet, and I really need to undo _all_ of the merge"). So then you really should revert the merge, but when you want to re-do the merge, you now need to do it by reverting the revert. ADDENDUM Sometimes you have to rewrite one of a topic branch's commits *and* you can't change the topic's branching-off point. Consider the following situation: P---o---o---M---x---x---W---x \ / A---B---C where commit W reverted commit M because it turned out that commit B was wrong and needs to be rewritten, but you need the rewritten topic to still branch from commit P (perhaps P is a branching-off point for yet another branch, and you want be able to merge the topic into both branches). The natural thing to do in this case is to checkout the A-B-C branch and use "rebase -i P" to change commit B. However this does not rewrite commit A, because "rebase -i" by default fast-forwards over any initial commits selected with the "pick" command. So you end up with this: P---o---o---M---x---x---W---x \ / A---B---C &lt;-- old branch \ B'---C' &lt;-- naively rewritten branch To merge A-B'-C' into the mainline branch you would still have to first revert commit W in order to pick up the changes in A, but then it's likely that the changes in B' will conflict with the original B changes re-introduced by the reversion of W. However, you can avoid these problems if you recreate the entire branch, including commit A: A'---B'---C' &lt;-- completely rewritten branch / P---o---o---M---x---x---W---x \ / A---B---C You can merge A'-B'-C' into the mainline branch without worrying about first reverting W. Mainline's history would look like this: A'---B'---C'------------------ / \ P---o---o---M---x---x---W---x---M2 \ / A---B---C But if you don't actually need to change commit A, then you need some way to recreate it as a new commit with the same changes in it. The rebase command's --no-ff option provides a way to do this: $ git rebase [-i] --no-ff P The --no-ff option creates a new branch A'-B'-C' with all-new commits (all the SHA IDs will be different) even if in the interactive case you only actually modify commit B. You can then merge this new branch directly into the mainline branch and be sure you'll get all of the branch's changes. You can also use --no-ff in cases where you just add extra commits to the topic to fix it up. Let's revisit the situation discussed at the start of this howto: P---o---o---M---x---x---W---x \ / A---B---C----------------D---E &lt;-- fixed-up topic branch At this point, you can use --no-ff to recreate the topic branch: $ git checkout E $ git rebase --no-ff P yielding A'---B'---C'------------D'---E' &lt;-- recreated topic branch / P---o---o---M---x---x---W---x \ / A---B---C----------------D---E You can merge the recreated branch into the mainline without reverting commit W, and mainline's history will look like this: A'---B'---C'------------D'---E' / \ P---o---o---M---x---x---W---x---M2 \ / A---B---C]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="en"><title type="html">Get mains out of my signal</title><link href="https://tsangiotis.com/get-mains-out-of-my-signal/" rel="alternate" type="text/html" title="Get mains out of my signal" /><published>2022-07-15T00:00:00+00:00</published><updated>2022-07-15T00:00:00+00:00</updated><id>https://tsangiotis.com/get-mains-out-of-my-signal</id><content type="html" xml:base="https://tsangiotis.com/get-mains-out-of-my-signal/"><![CDATA[<p>Power-frequency interference gets picked up through insufficiently shielded instrumentation or electrically generated mechanical faults.</p>

<p>While correct installation, ground loop avoidance and elimination of other sources is the goal sometimes it is not possible.</p>

<p>Bellow is the timeseries and spectrum of an heterodyned output ultrasound sensor. It transfers the high frequency signals to the acoustic range.</p>

<p><img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/tasos-1658071053.png" alt="Image title" /></p>

<p><img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/tasos-1658071062.png" alt="Image title" /></p>

<p>As you see, 50 Hz is very prominent here resulting in a constant hum. You can also spot a lot of harmonics.</p>

<p>Queue the notch filter.</p>

<p>A notch filter is a type of band-stop filter, which is a filter that attenuates frequencies within a specific range while passing all other frequencies unaltered. For a notch filter, this range of frequencies is very narrow<sup id="fnref:1"><a href="#fn:1" class="footnote" rel="footnote" role="doc-noteref">1</a></sup>. The range of frequencies that a band-stop filter attenuates is called the stopband.</p>

<p>Because we want to also catch the harmonica we can use a filter sampling frequency that is<br />
a multiple of our power-frequency.</p>

<p>The ideal result in a the time domain will look as bellow<sup id="fnref:2"><a href="#fn:2" class="footnote" rel="footnote" role="doc-noteref">2</a></sup>.</p>

<p><img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/tasos-1658071103.png" alt="Image title" /></p>

<p>Doing that to our signal results in a much cleaner representation for the other phenomena.</p>

<p><img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/tasos-1658071119.png" alt="Image title" /></p>

<p><img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/tasos-1658071125.png" alt="Image title" /></p>

<p>Harmonics are still there but affect much less the signal. One could certainly phase them out but I used <a href="https://www.audacityteam.org/">Audacity</a> which does not feature sampling rate settings for notch filters so I went manual and I stopped.
I will dig into that more in the future.</p>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1">
      <p><a href="https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.iirnotch.html">Scipy notch function</a> <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:2">
      <p><a href="https://www.ece.rutgers.edu/~orfanidi/intro2sp/">Introduction to Signal Processing - Sophocles J. Orfanidis (Rutgers University)</a> <a href="#fnref:2" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Tasos Sangiotis</name></author><category term="til," /><category term="signal-processing" /><summary type="html"><![CDATA[Power-frequency interference gets picked up through insufficiently shielded instrumentation or electrically generated mechanical faults. While correct installation, ground loop avoidance and elimination of other sources is the goal sometimes it is not possible. Bellow is the timeseries and spectrum of an heterodyned output ultrasound sensor. It transfers the high frequency signals to the acoustic range. As you see, 50 Hz is very prominent here resulting in a constant hum. You can also spot a lot of harmonics. Queue the notch filter. A notch filter is a type of band-stop filter, which is a filter that attenuates frequencies within a specific range while passing all other frequencies unaltered. For a notch filter, this range of frequencies is very narrow1. The range of frequencies that a band-stop filter attenuates is called the stopband. Because we want to also catch the harmonica we can use a filter sampling frequency that is a multiple of our power-frequency. The ideal result in a the time domain will look as bellow2. Doing that to our signal results in a much cleaner representation for the other phenomena. Harmonics are still there but affect much less the signal. One could certainly phase them out but I used Audacity which does not feature sampling rate settings for notch filters so I went manual and I stopped. I will dig into that more in the future. Scipy notch function &#8617; Introduction to Signal Processing - Sophocles J. Orfanidis (Rutgers University) &#8617;]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="en"><title type="html">TIL I learn</title><link href="https://tsangiotis.com/til-i-learn/" rel="alternate" type="text/html" title="TIL I learn" /><published>2022-07-11T00:00:00+00:00</published><updated>2022-07-11T00:00:00+00:00</updated><id>https://tsangiotis.com/til-i-learn</id><content type="html" xml:base="https://tsangiotis.com/til-i-learn/"><![CDATA[<p>Recently I stumbled upon <a href="https://simonwillison.net/">Simon Willison</a>’s of <a href="https://www.djangoproject.com/">Django</a> and <a href="https://datasette.io/">Datasette</a> fame <a href="https://til.simonwillison.net/">TIL</a> project.</p>

<p>It is a public scratchpad of sorts and I like the idea. That guy scratches a lot though.</p>

<p>I bookmark all kinds of stuff without really getting back to it and take notes on many places. Some notes though and especially those for programming reference I want to go back to and even have some examples attached.</p>

<p>Those notes I want to make into little posts tagged <a href="https://tsangiotis.com/blog/?q=til">#til</a>.</p>

<p><a href="https://tsangiotis.com/">On my site</a> along with the vast amount of prose you will find those snippets. To get you started, here is the latest additions:</p>

<p><a href="https://tsangiotis.com/simple-django-search/">Simple django search</a><br />
For the last couple of years, whatever decomposing has happend on <a href="https://arpedon.com/en/products/mechbase/">Mechbase</a> has happened through Turbo.</p>

<p><a href="https://tsangiotis.com/simpler-search-using-turbo-frames/">Simpler search using Turbo Frames</a></p>

<p>Ok, I needed two search results</p>

<p><a href="https://tsangiotis.com/python-is-number/">Python instance check</a><br />
Ones and Zeros get messy on dynamically typed languages. Crash that if statement.<br />
<a href="https://tsangiotis.com/default-datetime-value/">Setting a variable default datetime value in Django/python</a></p>

<p>Beware, when you reach this problem, your actual problem is elsewhere.</p>

<p>That’s it for today. If you have any notes of your own let me know so I can steal them.</p>

<p><img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/tasos-1657570010.gif" alt="Image title" /></p>

<p>Until next time.</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="til" /><summary type="html"><![CDATA[Recently I stumbled upon Simon Willison’s of Django and Datasette fame TIL project. It is a public scratchpad of sorts and I like the idea. That guy scratches a lot though. I bookmark all kinds of stuff without really getting back to it and take notes on many places. Some notes though and especially those for programming reference I want to go back to and even have some examples attached. Those notes I want to make into little posts tagged #til. On my site along with the vast amount of prose you will find those snippets. To get you started, here is the latest additions: Simple django search For the last couple of years, whatever decomposing has happend on Mechbase has happened through Turbo. Simpler search using Turbo Frames Ok, I needed two search results Python instance check Ones and Zeros get messy on dynamically typed languages. Crash that if statement. Setting a variable default datetime value in Django/python Beware, when you reach this problem, your actual problem is elsewhere. That’s it for today. If you have any notes of your own let me know so I can steal them. Until next time.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="en"><title type="html">Django: Redirecting from urls.py</title><link href="https://tsangiotis.com/redirecting-from-urls-py/" rel="alternate" type="text/html" title="Django: Redirecting from urls.py" /><published>2022-06-29T00:00:00+00:00</published><updated>2022-06-29T00:00:00+00:00</updated><id>https://tsangiotis.com/redirecting-from-urls-py</id><content type="html" xml:base="https://tsangiotis.com/redirecting-from-urls-py/"><![CDATA[<p>I made some changes and slashed a page.</p>

<p>Now it is possible some users have the page bookmarked or on an email and I wanted this to work but to not retain the url.</p>

<p>At the same time I dind’t want to create a view just for that.</p>

<p>There is a better way:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="n">django.views.generic</span> <span class="kn">import</span> <span class="n">RedirectView</span>

<span class="bp">...</span>

<span class="n">urlpatterns</span> <span class="o">=</span> <span class="p">[</span>
    <span class="bp">...</span>
    <span class="nf">path</span><span class="p">(</span>
        <span class="sh">"</span><span class="s">measurementpoint/&lt;uuid:pk&gt;/history/</span><span class="sh">"</span><span class="p">,</span>
        <span class="n">RedirectView</span><span class="p">.</span><span class="nf">as_view</span><span class="p">(</span><span class="n">pattern_name</span><span class="o">=</span><span class="sh">"</span><span class="s">measurementpoint</span><span class="sh">"</span><span class="p">,</span> <span class="n">permanent</span><span class="o">=</span><span class="bp">True</span><span class="p">),</span>
    <span class="p">),</span>
    <span class="bp">...</span>
<span class="p">]</span>
</code></pre></div></div>]]></content><author><name>Tasos Sangiotis</name></author><category term="django," /><category term="mechbase" /><summary type="html"><![CDATA[I made some changes and slashed a page. Now it is possible some users have the page bookmarked or on an email and I wanted this to work but to not retain the url. At the same time I dind’t want to create a view just for that. There is a better way: from django.views.generic import RedirectView ... urlpatterns = [ ... path( "measurementpoint/&lt;uuid:pk&gt;/history/", RedirectView.as_view(pattern_name="measurementpoint", permanent=True), ), ... ]]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="en"><title type="html">Simpler search using Turbo Frames</title><link href="https://tsangiotis.com/simpler-search-using-turbo-frames/" rel="alternate" type="text/html" title="Simpler search using Turbo Frames" /><published>2022-06-19T00:00:00+00:00</published><updated>2022-06-19T00:00:00+00:00</updated><id>https://tsangiotis.com/simpler-search-using-turbo-frames</id><content type="html" xml:base="https://tsangiotis.com/simpler-search-using-turbo-frames/"><![CDATA[<p>Yesterday I wrote about a <a href="https://tsangiotis.com/simple-django-search/">search implementation</a> using icontains filters.</p>

<p>It made me think of a simpler implementation on the HTMl side.</p>

<p>In the past couple of years “extensions” to HTML that are not a full JS frameworks are getting poppular. We use the <a href="https://hotwired.dev/">Hotwire</a>.</p>

<p>A useful feature of Hotiwire is that you can make a request through a form and inject the response in a predefined position in the body. Let’s say a search box and its result 😉.</p>

<p>Assuming you setup a page for the results response:</p>

<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;form</span> <span class="na">class=</span><span class="s">"form"</span> <span class="na">role=</span><span class="s">"search"</span> <span class="na">action=</span><span class="s">"/search"</span> <span class="na">method=</span><span class="s">"get"</span>
    <span class="na">accept-charset=</span><span class="s">"UTF-8"</span> <span class="na">data-remote=</span><span class="s">"true"</span><span class="nt">&gt;</span>
    <span class="nt">&lt;input</span> 
        <span class="na">type=</span><span class="s">"search"</span> <span class="na">autocomplete=</span><span class="s">"off"</span> <span class="na">spellcheck=</span><span class="s">"false"</span> 
        <span class="na">role=</span><span class="s">"combobox"</span> <span class="na">placeholder=</span><span class="s">"Search"</span> <span class="na">name=</span><span class="s">"q"</span>
        <span class="na">autofocus=</span><span class="s">"autofocus"</span> <span class="na">required=</span><span class="s">"required"</span> 
        <span class="na">pattern=</span><span class="s">".*\S.*"</span><span class="nt">&gt;</span>
    <span class="nt">&lt;input</span> <span class="na">type=</span><span class="s">"submit"</span> <span class="na">value=</span><span class="s">"Search"</span><span class="nt">&gt;</span>
<span class="nt">&lt;/form&gt;</span>

<span class="nt">&lt;turbo-frame</span> <span class="na">role=</span><span class="s">"listbox"</span> <span class="na">id=</span><span class="s">"search"</span> <span class="na">target=</span><span class="s">"_top"</span><span class="nt">&gt;</span>
    <span class="nt">&lt;span</span> <span class="na">class=</span><span class="s">"sr-only"</span> <span class="na">role=</span><span class="s">"option"</span> <span class="na">aria-disabled=</span><span class="s">"true"</span><span class="nt">&gt;</span>
        No matches yet
    <span class="nt">&lt;/span&gt;</span>
<span class="nt">&lt;/turbo-frame&gt;</span>

</code></pre></div></div>

<p>Using some javascript and css to submit on type on <a href="https://arpedon.com/products/mechbase">Mechbase</a>:</p>

<p><img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/tasos-1655626374.gif" alt="Search example" /></p>]]></content><author><name>Tasos Sangiotis</name></author><category term="python," /><category term="hotwire," /><category term="html," /><category term="django," /><category term="til," /><category term="turbo" /><summary type="html"><![CDATA[Yesterday I wrote about a search implementation using icontains filters. It made me think of a simpler implementation on the HTMl side. In the past couple of years “extensions” to HTML that are not a full JS frameworks are getting poppular. We use the Hotwire. A useful feature of Hotiwire is that you can make a request through a form and inject the response in a predefined position in the body. Let’s say a search box and its result 😉. Assuming you setup a page for the results response: &lt;form class="form" role="search" action="/search" method="get" accept-charset="UTF-8" data-remote="true"&gt; &lt;input type="search" autocomplete="off" spellcheck="false" role="combobox" placeholder="Search" name="q" autofocus="autofocus" required="required" pattern=".*\S.*"&gt; &lt;input type="submit" value="Search"&gt; &lt;/form&gt; &lt;turbo-frame role="listbox" id="search" target="_top"&gt; &lt;span class="sr-only" role="option" aria-disabled="true"&gt; No matches yet &lt;/span&gt; &lt;/turbo-frame&gt; Using some javascript and css to submit on type on Mechbase:]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="en"><title type="html">Simple django search</title><link href="https://tsangiotis.com/simple-django-search/" rel="alternate" type="text/html" title="Simple django search" /><published>2022-06-18T00:00:00+00:00</published><updated>2022-06-18T00:00:00+00:00</updated><id>https://tsangiotis.com/simple-django-search</id><content type="html" xml:base="https://tsangiotis.com/simple-django-search/"><![CDATA[<p>Sometimes you want to create a search box for your model entries in a django app.</p>

<p>In order to not mess with complex search packages you can use the <a href="https://docs.djangoproject.com/en/3.2/ref/models/querysets/#icontains"><code class="language-plaintext highlighter-rouge">icontains</code></a> QuerySet test on a filter.</p>

<p>And because the UI is almost always the same, for my simple needs I have the following starting point.</p>

<p>On your <code class="language-plaintext highlighter-rouge">views.py</code> add a general form that contains the form action:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="n">django.views.generic</span> <span class="kn">import</span> <span class="n">TemplateView</span>

<span class="k">class</span> <span class="nc">SearchForm</span><span class="p">(</span><span class="n">TemplateView</span><span class="p">):</span>
    <span class="sh">"""</span><span class="s">Search form</span><span class="sh">"""</span>

    <span class="n">template_name</span> <span class="o">=</span> <span class="sh">"</span><span class="s">app/search/search_form.html</span><span class="sh">"</span>
</code></pre></div></div>

<p>Along with the form you specify a place to put the results.</p>

<p>This way you have a portable layout you can drop whenever in the app.</p>

<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="nt">&lt;style&gt;</span>
<span class="nc">.d-none</span> <span class="p">{</span>
  <span class="nl">display</span><span class="p">:</span> <span class="nb">none</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">&lt;/style&gt;</span>

<span class="nt">&lt;div</span> 
  <span class="na">data-controller=</span><span class="s">"search-basemodel"</span>
  <span class="na">data-search-basemodel-url=</span><span class="s">"{% url 'basemodel_search' %}"</span><span class="nt">&gt;</span>
  
  <span class="nt">&lt;input</span> <span class="na">type=</span><span class="s">"text"</span> 
    <span class="na">data-target=</span><span class="s">"search-basemodel.query"</span>
    <span class="na">data-action=</span><span class="s">"keydown-&gt;search-basemodel#fetchWithEnter"</span>
    <span class="na">placeholder=</span><span class="s">"{% trans 'Base model name' %}"</span>
    <span class="na">aria-describedby=</span><span class="s">"button-search"</span><span class="nt">&gt;</span>
  <span class="nt">&lt;button</span> 
    <span class="na">type=</span><span class="s">"submit"</span> <span class="na">id=</span><span class="s">"button-search"</span>
    <span class="na">data-action=</span><span class="s">"search-basemodel#fetchResults"</span> <span class="nt">&gt;</span>
    {% trans "Search" %}
  <span class="nt">&lt;/button&gt;</span>

  <span class="nt">&lt;div&gt;</span>
    <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"spinner d-none"</span> <span class="na">data-target=</span><span class="s">"search-basemodel.loader"</span> <span class="na">role=</span><span class="s">"status"</span><span class="nt">&gt;</span>
        <span class="nt">&lt;span</span> <span class="na">class=</span><span class="s">"sr-only"</span><span class="nt">&gt;</span>{% trans "Loading..." %}<span class="nt">&lt;/span&gt;</span>
    <span class="nt">&lt;/div&gt;</span>

    <span class="nt">&lt;div</span> <span class="na">data-target=</span><span class="s">"search-basemodel.results"</span><span class="nt">&gt;</span>
    <span class="nt">&lt;/div&gt;</span>
    
  <span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;</span>

</code></pre></div></div>

<p>It is accompanied by a small javascript <a href="https://stimulus.hotwired.dev/reference/controllers">controller</a> that makes a request and returns the results in a <code class="language-plaintext highlighter-rouge">div</code> inside the scaffold. I use Stimulus for my JS bits but everything is very simple as you will see.</p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// search_basemodel_controller.js</span>

<span class="k">import</span> <span class="p">{</span> <span class="nx">Controller</span> <span class="p">}</span> <span class="k">from</span> <span class="dl">"</span><span class="s2">stimulus</span><span class="dl">"</span><span class="p">;</span>

<span class="k">export</span> <span class="k">default</span> <span class="kd">class</span> <span class="nc">extends</span> <span class="nx">Controller</span> <span class="p">{</span>
  <span class="kd">static</span> <span class="nx">targets</span> <span class="o">=</span> <span class="p">[</span><span class="dl">"</span><span class="s2">query</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">results</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">loader</span><span class="dl">"</span><span class="p">];</span>

  <span class="nf">disconnect</span><span class="p">()</span> <span class="p">{</span>
    <span class="k">this</span><span class="p">.</span><span class="nf">reset</span><span class="p">();</span>
  <span class="p">}</span>

  <span class="nf">fetchWithEnter</span><span class="p">(</span><span class="nx">event</span><span class="p">)</span> <span class="p">{</span>
    <span class="k">if </span><span class="p">(</span><span class="nx">event</span><span class="p">.</span><span class="nx">keyCode</span> <span class="o">==</span> <span class="mi">13</span><span class="p">)</span> <span class="p">{</span>
      <span class="k">this</span><span class="p">.</span><span class="nf">fetchResults</span><span class="p">();</span>
    <span class="p">}</span>
  <span class="p">}</span>

  <span class="nf">fetchResults</span><span class="p">()</span> <span class="p">{</span>
    <span class="k">if </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">query</span> <span class="o">==</span> <span class="dl">""</span><span class="p">)</span> <span class="p">{</span>
      <span class="k">this</span><span class="p">.</span><span class="nf">reset</span><span class="p">();</span>
      <span class="k">return</span><span class="p">;</span>
    <span class="p">}</span>

    <span class="k">if </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">query</span> <span class="o">==</span> <span class="k">this</span><span class="p">.</span><span class="nx">previousQuery</span><span class="p">)</span> <span class="p">{</span>
      <span class="k">return</span><span class="p">;</span>
    <span class="p">}</span>
    <span class="k">this</span><span class="p">.</span><span class="nx">previousQuery</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">query</span><span class="p">;</span>

    <span class="kd">const</span> <span class="nx">url</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">data</span><span class="p">.</span><span class="nf">get</span><span class="p">(</span><span class="dl">"</span><span class="s2">url</span><span class="dl">"</span><span class="p">)</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">query</span><span class="p">;</span>

    <span class="k">this</span><span class="p">.</span><span class="nx">loaderTarget</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nf">remove</span><span class="p">(</span><span class="dl">"</span><span class="s2">d-none</span><span class="dl">"</span><span class="p">);</span>

    <span class="k">this</span><span class="p">.</span><span class="nf">abortPreviousFetchRequest</span><span class="p">();</span>

    <span class="k">this</span><span class="p">.</span><span class="nx">abortController</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">AbortController</span><span class="p">();</span>
    <span class="nf">fetch</span><span class="p">(</span><span class="nx">url</span><span class="p">,</span> <span class="p">{</span> <span class="na">signal</span><span class="p">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">abortController</span><span class="p">.</span><span class="nx">signal</span> <span class="p">})</span>
      <span class="p">.</span><span class="nf">then</span><span class="p">((</span><span class="nx">response</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nx">response</span><span class="p">.</span><span class="nf">text</span><span class="p">())</span>
      <span class="p">.</span><span class="nf">then</span><span class="p">((</span><span class="nx">html</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
        <span class="k">this</span><span class="p">.</span><span class="nx">resultsTarget</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="nx">html</span><span class="p">;</span>
        <span class="k">this</span><span class="p">.</span><span class="nx">loaderTarget</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nf">add</span><span class="p">(</span><span class="dl">"</span><span class="s2">d-none</span><span class="dl">"</span><span class="p">);</span>
      <span class="p">})</span>
      <span class="p">.</span><span class="k">catch</span><span class="p">(()</span> <span class="o">=&gt;</span> <span class="p">{});</span>
  <span class="p">}</span>

  <span class="c1">// private</span>

  <span class="nf">reset</span><span class="p">()</span> <span class="p">{</span>
    <span class="k">this</span><span class="p">.</span><span class="nx">resultsTarget</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="dl">""</span><span class="p">;</span>
    <span class="k">this</span><span class="p">.</span><span class="nx">queryTarget</span><span class="p">.</span><span class="nx">value</span> <span class="o">=</span> <span class="dl">""</span><span class="p">;</span>
    <span class="k">this</span><span class="p">.</span><span class="nx">previousQuery</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
    <span class="k">this</span><span class="p">.</span><span class="nx">loaderTarget</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nf">add</span><span class="p">(</span><span class="dl">"</span><span class="s2">d-none</span><span class="dl">"</span><span class="p">);</span>
    <span class="k">this</span><span class="p">.</span><span class="nx">resultsTarget</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nf">add</span><span class="p">(</span><span class="dl">"</span><span class="s2">d-none</span><span class="dl">"</span><span class="p">);</span>
  <span class="p">}</span>

  <span class="nf">abortPreviousFetchRequest</span><span class="p">()</span> <span class="p">{</span>
    <span class="k">if </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">abortController</span><span class="p">)</span> <span class="p">{</span>
      <span class="k">this</span><span class="p">.</span><span class="nx">abortController</span><span class="p">.</span><span class="nf">abort</span><span class="p">();</span>
    <span class="p">}</span>
  <span class="p">}</span>

  <span class="kd">get</span> <span class="nf">query</span><span class="p">()</span> <span class="p">{</span>
    <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">queryTarget</span><span class="p">.</span><span class="nx">value</span><span class="p">;</span>
  <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>

<p>This adds the query as a kwarg to a request on another view and returns the result inside the initial view.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># views.py
</span>
<span class="kn">from</span> <span class="n">django.views.generic</span> <span class="kn">import</span> <span class="n">ListView</span>

<span class="kn">from</span> <span class="n">app.models</span> <span class="kn">import</span> <span class="n">BaseModel</span>

<span class="k">class</span> <span class="nc">BaseModelSearch</span><span class="p">(</span><span class="n">ListView</span><span class="p">):</span>
    <span class="sh">"""</span><span class="s">
    Search entries by name
    </span><span class="sh">"""</span>

    <span class="n">template_name</span> <span class="o">=</span> <span class="sh">"</span><span class="s">app/search/search_results.html</span><span class="sh">"</span>

    <span class="k">def</span> <span class="nf">get_queryset</span><span class="p">(</span><span class="n">self</span><span class="p">):</span>
        <span class="sh">"""</span><span class="s">Return search results.</span><span class="sh">"""</span>
        <span class="n">plantlayers</span> <span class="o">=</span> <span class="n">BaseModel</span><span class="p">.</span><span class="n">objects</span><span class="p">.</span><span class="nf">filter</span><span class="p">(</span>
            <span class="n">name__icontains</span><span class="o">=</span><span class="n">self</span><span class="p">.</span><span class="n">kwargs</span><span class="p">.</span><span class="nf">get</span><span class="p">(</span><span class="sh">"</span><span class="s">query</span><span class="sh">"</span><span class="p">)</span>
        <span class="p">)</span>

        <span class="k">return</span> <span class="n">plantlayers</span><span class="p">.</span><span class="nf">filter</span><span class="p">(</span><span class="n">name__icontains</span><span class="o">=</span><span class="n">self</span><span class="p">.</span><span class="n">kwargs</span><span class="p">.</span><span class="nf">get</span><span class="p">(</span><span class="sh">"</span><span class="s">query</span><span class="sh">"</span><span class="p">))</span>

</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># urls.py
</span>
<span class="n">urlpatterns</span> <span class="o">=</span> <span class="p">[</span>
    <span class="p">...,</span>
    <span class="nf">path</span><span class="p">(</span><span class="sh">"</span><span class="s">search</span><span class="sh">"</span><span class="p">,</span> <span class="n">views</span><span class="p">.</span><span class="n">SearchForm</span><span class="p">.</span><span class="nf">as_view</span><span class="p">(),</span> <span class="n">name</span><span class="o">=</span><span class="sh">"</span><span class="s">search</span><span class="sh">"</span><span class="p">),</span>
    <span class="nf">path</span><span class="p">(</span>
        <span class="sh">"</span><span class="s">search/basemodel/</span><span class="sh">"</span><span class="p">,</span>
        <span class="n">views</span><span class="p">.</span><span class="n">BaseModelSearch</span><span class="p">.</span><span class="nf">as_view</span><span class="p">(),</span>
        <span class="n">name</span><span class="o">=</span><span class="sh">"</span><span class="s">basemodel_search</span><span class="sh">"</span><span class="p">,</span>
    <span class="p">),</span>
    <span class="nf">path</span><span class="p">(</span>
        <span class="sh">"</span><span class="s">search/basemodel/&lt;str:query&gt;</span><span class="sh">"</span><span class="p">,</span>
        <span class="n">views</span><span class="p">.</span><span class="n">BaseModelSearch</span><span class="p">.</span><span class="nf">as_view</span><span class="p">(),</span>
        <span class="n">name</span><span class="o">=</span><span class="sh">"</span><span class="s">basemodel_search</span><span class="sh">"</span><span class="p">,</span>
    <span class="p">),</span>
    <span class="p">...,</span>
</code></pre></div></div>

<p>The cool thing you can do with this setup is make one request and apply it to multiple models.</p>

<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="nt">&lt;style&gt;</span>
<span class="nc">.d-none</span> <span class="p">{</span>
  <span class="nl">display</span><span class="p">:</span> <span class="nb">none</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">&lt;/style&gt;</span>

<span class="nt">&lt;div</span> 
  <span class="na">data-controller=</span><span class="s">"search-model1 search-model2"</span>
  <span class="na">data-search-model1-url=</span><span class="s">"{% url 'model1_search' %}"</span>
  <span class="na">data-search-model2-url=</span><span class="s">"{% url 'model2_search' %}"</span><span class="nt">&gt;</span>
  
  <span class="nt">&lt;input</span> <span class="na">type=</span><span class="s">"text"</span> 
    <span class="na">data-target=</span><span class="s">"search-model1.query search-model2.query"</span>
    <span class="na">data-action=</span><span class="s">"keydown-&gt;search-model1#fetchWithEnter keydown-&gt;search-model2#fetchWithEnter"</span>
    <span class="na">placeholder=</span><span class="s">"{% trans 'Model1 or Model2 name' %}"</span>
    <span class="na">aria-describedby=</span><span class="s">"button-search"</span><span class="nt">&gt;</span>
  <span class="nt">&lt;button</span> 
    <span class="na">type=</span><span class="s">"submit"</span> <span class="na">id=</span><span class="s">"button-search"</span>
    <span class="na">data-action=</span><span class="s">"search-model1#fetchResults search-model2#fetchResults"</span> <span class="nt">&gt;</span>
    {% trans "Search" %}
  <span class="nt">&lt;/button&gt;</span>

  <span class="nt">&lt;div&gt;</span>
    <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"spinner d-none"</span> <span class="na">data-target=</span><span class="s">"search-model1.loader"</span> <span class="na">role=</span><span class="s">"status"</span><span class="nt">&gt;</span>
        <span class="nt">&lt;span</span> <span class="na">class=</span><span class="s">"sr-only"</span><span class="nt">&gt;</span>{% trans "Loading..." %}<span class="nt">&lt;/span&gt;</span>
    <span class="nt">&lt;/div&gt;</span>

    <span class="nt">&lt;div</span> <span class="na">data-target=</span><span class="s">"search-model1.results"</span><span class="nt">&gt;</span>
    <span class="nt">&lt;/div&gt;</span>
    
  <span class="nt">&lt;/div&gt;</span>
  <span class="nt">&lt;div&gt;</span>
    <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"spinner d-none"</span> <span class="na">data-target=</span><span class="s">"search-model2.loader"</span> <span class="na">role=</span><span class="s">"status"</span><span class="nt">&gt;</span>
        <span class="nt">&lt;span</span> <span class="na">class=</span><span class="s">"sr-only"</span><span class="nt">&gt;</span>{% trans "Loading..." %}<span class="nt">&lt;/span&gt;</span>
    <span class="nt">&lt;/div&gt;</span>

    <span class="nt">&lt;div</span> <span class="na">data-target=</span><span class="s">"search-model2.results"</span><span class="nt">&gt;</span>
    <span class="nt">&lt;/div&gt;</span>
    
  <span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;</span>

</code></pre></div></div>

<p>This is a starting point which is enough most of the times.</p>

<p>For the form page, each results page and error page you will style a UI to your liking and fix the layout as needed. You can add pagination and other stuff according to your needs.</p>

<p>As is, you need to duplicate the controller for each model you want to search even if the controller code is exactly the same. The last part pains my heart.</p>

<p>You can make it specific to your application though and even use something like <a href="https://turbo.hotwired.dev/handbook/frames">Turbo Frames</a> or <a href="https://htmx.org/docs/#targets">htmx</a> to make something better.</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="python," /><category term="django," /><category term="til" /><summary type="html"><![CDATA[Sometimes you want to create a search box for your model entries in a django app. In order to not mess with complex search packages you can use the icontains QuerySet test on a filter. And because the UI is almost always the same, for my simple needs I have the following starting point. On your views.py add a general form that contains the form action: from django.views.generic import TemplateView class SearchForm(TemplateView): """Search form""" template_name = "app/search/search_form.html" Along with the form you specify a place to put the results. This way you have a portable layout you can drop whenever in the app. &lt;style&gt; .d-none { display: none; } &lt;/style&gt; &lt;div data-controller="search-basemodel" data-search-basemodel-url="{% url 'basemodel_search' %}"&gt; &lt;input type="text" data-target="search-basemodel.query" data-action="keydown-&gt;search-basemodel#fetchWithEnter" placeholder="{% trans 'Base model name' %}" aria-describedby="button-search"&gt; &lt;button type="submit" id="button-search" data-action="search-basemodel#fetchResults" &gt; {% trans "Search" %} &lt;/button&gt; &lt;div&gt; &lt;div class="spinner d-none" data-target="search-basemodel.loader" role="status"&gt; &lt;span class="sr-only"&gt;{% trans "Loading..." %}&lt;/span&gt; &lt;/div&gt; &lt;div data-target="search-basemodel.results"&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; It is accompanied by a small javascript controller that makes a request and returns the results in a div inside the scaffold. I use Stimulus for my JS bits but everything is very simple as you will see. // search_basemodel_controller.js import { Controller } from "stimulus"; export default class extends Controller { static targets = ["query", "results", "loader"]; disconnect() { this.reset(); } fetchWithEnter(event) { if (event.keyCode == 13) { this.fetchResults(); } } fetchResults() { if (this.query == "") { this.reset(); return; } if (this.query == this.previousQuery) { return; } this.previousQuery = this.query; const url = this.data.get("url") + this.query; this.loaderTarget.classList.remove("d-none"); this.abortPreviousFetchRequest(); this.abortController = new AbortController(); fetch(url, { signal: this.abortController.signal }) .then((response) =&gt; response.text()) .then((html) =&gt; { this.resultsTarget.innerHTML = html; this.loaderTarget.classList.add("d-none"); }) .catch(() =&gt; {}); } // private reset() { this.resultsTarget.innerHTML = ""; this.queryTarget.value = ""; this.previousQuery = null; this.loaderTarget.classList.add("d-none"); this.resultsTarget.classList.add("d-none"); } abortPreviousFetchRequest() { if (this.abortController) { this.abortController.abort(); } } get query() { return this.queryTarget.value; } } This adds the query as a kwarg to a request on another view and returns the result inside the initial view. # views.py from django.views.generic import ListView from app.models import BaseModel class BaseModelSearch(ListView): """ Search entries by name """ template_name = "app/search/search_results.html" def get_queryset(self): """Return search results.""" plantlayers = BaseModel.objects.filter( name__icontains=self.kwargs.get("query") ) return plantlayers.filter(name__icontains=self.kwargs.get("query")) # urls.py urlpatterns = [ ..., path("search", views.SearchForm.as_view(), name="search"), path( "search/basemodel/", views.BaseModelSearch.as_view(), name="basemodel_search", ), path( "search/basemodel/&lt;str:query&gt;", views.BaseModelSearch.as_view(), name="basemodel_search", ), ..., The cool thing you can do with this setup is make one request and apply it to multiple models. &lt;style&gt; .d-none { display: none; } &lt;/style&gt; &lt;div data-controller="search-model1 search-model2" data-search-model1-url="{% url 'model1_search' %}" data-search-model2-url="{% url 'model2_search' %}"&gt; &lt;input type="text" data-target="search-model1.query search-model2.query" data-action="keydown-&gt;search-model1#fetchWithEnter keydown-&gt;search-model2#fetchWithEnter" placeholder="{% trans 'Model1 or Model2 name' %}" aria-describedby="button-search"&gt; &lt;button type="submit" id="button-search" data-action="search-model1#fetchResults search-model2#fetchResults" &gt; {% trans "Search" %} &lt;/button&gt; &lt;div&gt; &lt;div class="spinner d-none" data-target="search-model1.loader" role="status"&gt; &lt;span class="sr-only"&gt;{% trans "Loading..." %}&lt;/span&gt; &lt;/div&gt; &lt;div data-target="search-model1.results"&gt; &lt;/div&gt; &lt;/div&gt; &lt;div&gt; &lt;div class="spinner d-none" data-target="search-model2.loader" role="status"&gt; &lt;span class="sr-only"&gt;{% trans "Loading..." %}&lt;/span&gt; &lt;/div&gt; &lt;div data-target="search-model2.results"&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; This is a starting point which is enough most of the times. For the form page, each results page and error page you will style a UI to your liking and fix the layout as needed. You can add pagination and other stuff according to your needs. As is, you need to duplicate the controller for each model you want to search even if the controller code is exactly the same. The last part pains my heart. You can make it specific to your application though and even use something like Turbo Frames or htmx to make something better.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="en"><title type="html">Python instance check</title><link href="https://tsangiotis.com/python-is-number/" rel="alternate" type="text/html" title="Python instance check" /><published>2022-06-14T00:00:00+00:00</published><updated>2022-06-14T00:00:00+00:00</updated><id>https://tsangiotis.com/python-is-number</id><content type="html" xml:base="https://tsangiotis.com/python-is-number/"><![CDATA[<p>Django comparisons almost always require timezone aware datetimes.</p>

<p>I tried with a None value but the comparison failed.</p>

<p>A workaround to keep this compatible is to use epoch and isoparse with the timezone in the ISO string.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="n">dateutil</span> <span class="kn">import</span> <span class="n">parser</span>
<span class="n">check_date</span> <span class="o">=</span> <span class="n">parser</span><span class="p">.</span><span class="nf">isoparse</span><span class="p">(</span><span class="sh">"</span><span class="s">1970-01-01T00:00:00+03:00</span><span class="sh">"</span><span class="p">)</span>
</code></pre></div></div>]]></content><author><name>Tasos Sangiotis</name></author><category term="python," /><category term="til" /><summary type="html"><![CDATA[Django comparisons almost always require timezone aware datetimes. I tried with a None value but the comparison failed. A workaround to keep this compatible is to use epoch and isoparse with the timezone in the ISO string. from dateutil import parser check_date = parser.isoparse("1970-01-01T00:00:00+03:00")]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Default Datetime Value</title><link href="https://tsangiotis.com/default-datetime-value/" rel="alternate" type="text/html" title="Default Datetime Value" /><published>2022-06-13T00:00:00+00:00</published><updated>2022-06-13T00:00:00+00:00</updated><id>https://tsangiotis.com/default-datetime-value</id><content type="html" xml:base="https://tsangiotis.com/default-datetime-value/"><![CDATA[<hr />
<p>layout: post
lang: en
title: Setting a variable default datetime value in Django/python
date: 2022-06-13
link: python-is-number
tags: python, django, til
___</p>

<p>Python being a <a href="https://en.wikipedia.org/wiki/Duck_typing">dynamically typed (🦆)</a>  language lets you set whatever you want on a variable. Is it a string now and later a float. No worries now, we will worry when we have to.</p>

<p>This is great when you want to set something but dealing with complex, not necessarily cohesive datasets gets you in trouble.</p>

<p>Suppose you don’t care about that and you just want to have an endless page of if statements this is what you can do:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">if</span> <span class="nf">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">complex</span><span class="p">))</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nf">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">bool</span><span class="p">):</span>
    <span class="bp">...</span>
</code></pre></div></div>

<p>The bool check provides assurance that <code class="language-plaintext highlighter-rouge">True</code> and <code class="language-plaintext highlighter-rouge">False</code> statements are not delivered as <code class="language-plaintext highlighter-rouge">1</code> and <code class="language-plaintext highlighter-rouge">0</code></p>

<p>It is better to do this though but you add an import:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="n">numbers</span>

<span class="k">if</span> <span class="nf">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">numbers</span><span class="p">.</span><span class="n">Number</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nf">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">bool</span><span class="p">):</span>
    <span class="bp">...</span>
</code></pre></div></div>]]></content><author><name>Tasos Sangiotis</name></author><summary type="html"><![CDATA[layout: post lang: en title: Setting a variable default datetime value in Django/python date: 2022-06-13 link: python-is-number tags: python, django, til ___ Python being a dynamically typed (🦆) language lets you set whatever you want on a variable. Is it a string now and later a float. No worries now, we will worry when we have to. This is great when you want to set something but dealing with complex, not necessarily cohesive datasets gets you in trouble. Suppose you don’t care about that and you just want to have an endless page of if statements this is what you can do: if isinstance(value, (int, float, complex)) and not isinstance(value, bool): ... The bool check provides assurance that True and False statements are not delivered as 1 and 0 It is better to do this though but you add an import: import numbers if isinstance(value, numbers.Number) and not isinstance(value, bool): ...]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="en"><title type="html">Uncloud</title><link href="https://tsangiotis.com/uncloud/" rel="alternate" type="text/html" title="Uncloud" /><published>2022-05-07T00:00:00+00:00</published><updated>2022-05-07T00:00:00+00:00</updated><id>https://tsangiotis.com/uncloud</id><content type="html" xml:base="https://tsangiotis.com/uncloud/"><![CDATA[<p>Recently I realized how ridiculous cloud storage prices are given that physical storage is dirt cheap. That realization was brought from our company’s Dropbox annual cost at 432€ for 3 people that need to share 250GB of files.</p>

<p>A good quality 4TB HDD disk with 3 years of warranty costs about 100€ and I cannot accept that the management cost for maintaining them is that high. There must be a program or a appliance that can perform Dropbox like operations on a local drive.</p>

<p>Enter the NAS space.</p>

<p><img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/tasos-1651926163.png" alt="Image title" /></p>

<p>Photographers and video people who are the outmost practical tech experts on YouTube  say that these devices has gotten very far from when I tried to hack together a FreeNAS instance on a Raspberry Pi.</p>

<p>At the cost of a very cheap computer you get a 4 bay unit (pictured above) with all the safety, collaboration and sharing features one could need. It handles syncing to remote units and even backing up cheaply on Amazon Glacier.</p>

<p>So I put it to the test.</p>

<p>I recently moved houses and I have a big photo collection sharded between drives and backing up to Amazon Glacier. Also I wouldn’t mind a media server and a replacement to my personal 20GB Dropbox.</p>

<p>I decided to go for a single drive unit cause this is an experiment and it costed less than 200€ with a drive.</p>

<p><img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/tasos-1651926179.png" alt="Image title" /></p>

<p>I am astounded by the performance of this cheap thing that I can use from anywhere in the world using Sinology’s relay service or <a href="https://tailscale.com/">Tailscale</a>. With few clients and not many tasks a cheap device performs faster than any Dropbox app.</p>

<p>More expensive models run on x86 hardware Support Docker and VMs. The VMs can be windows flavored which is good as we could retire the accounting software server and use this instead.</p>

<p>There are a lot more things you can do like running webpages, CI/CD, ruby, python and other packages on these. They are basically easy servers preconfigured for own usage. You could probably use bigger models as production application or database servers as they have redundant reworking and power supplies but I suppose there are better suited machines for that.</p>

<p>For small office use though they seem great on first contact.</p>

<h2 id="cons">Cons</h2>

<p>You need to study a bit to know what RAID configuration to use and there is no collaboration editing unless you are using Synology’s suite. Frankly this is better than Dropbox and is a drawback only if you were used to Google Docs which I am not.</p>

<p>There are also a lot of bottlenecks to take care of.</p>

<p>Latency and throughput on a residential/small office connection has been a thing for me after months of use.</p>

<p>Also I got the cheap model which is admittedly slow on high demand.</p>

<p>Both those problems can be solved by throwing a bit more money at the problem for a better machine and a better connection plan from the ISP.</p>

<p>The expensive Dropbox will stay for now but I am keeping an eye out on a good Synology deal.</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="cloud," /><category term="nas" /><summary type="html"><![CDATA[Recently I realized how ridiculous cloud storage prices are given that physical storage is dirt cheap.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://bear-images.sfo2.cdn.digitaloceanspaces.com/tasos-1651926163.png" /><media:content medium="image" url="https://bear-images.sfo2.cdn.digitaloceanspaces.com/tasos-1651926163.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Beach freeze</title><link href="https://tsangiotis.com/beach-freeze/" rel="alternate" type="text/html" title="Beach freeze" /><published>2022-01-24T00:00:00+00:00</published><updated>2022-01-24T00:00:00+00:00</updated><id>https://tsangiotis.com/beach-freeze</id><content type="html" xml:base="https://tsangiotis.com/beach-freeze/"><![CDATA[<p><img src="/images/beach-freeze/IMG_0900.jpg" alt="IMG_0900.jpg" /></p>

<p>It looks like climate change is a thing and  it is changing alright.</p>

<p>In Greece every year now we experience heavy snow in southern places in February or <a href="/snow-mask">March</a>. It became our thing while it was not so much. Anyway…</p>

<p>Will try to go out and shoot a bit if possible.</p>

<p>Stay safe!</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Log" /><category term="Photo" /><summary type="html"><![CDATA[It looks like climate change is a thing and it is changing alright.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/images/beach-freeze/IMG_0900.jpg" /><media:content medium="image" url="https://tsangiotis.com/images/beach-freeze/IMG_0900.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">The Nemean Lion and its Wine</title><link href="https://tsangiotis.com/the-nemean-lion-and-its-wine/" rel="alternate" type="text/html" title="The Nemean Lion and its Wine" /><published>2022-01-22T00:00:00+00:00</published><updated>2022-01-22T00:00:00+00:00</updated><id>https://tsangiotis.com/the-nemean-lion-and-its-wine</id><content type="html" xml:base="https://tsangiotis.com/the-nemean-lion-and-its-wine/"><![CDATA[<p>Start of December we visited a winery.</p>

<p>I have been to distilleries and breweries but wine making has not made me drunk yet.</p>

<p>Arriving at such facilities makes you aware of how much vines are needed for wine.</p>

<p><img src="/images/the-nemean-lion-and-its-wine/IMG_0058.jpg" alt="IMG_0058.jpg" /></p>

<p>Nemea is the place where the first Labor of Hercules took place. Myth has it that Hercules was sent to slay the Nemean lion which terrorized the hills and bring back it’s skin.</p>

<p>Beyond that Nemea is known for its excellent wine. It is arguably Greece’s most important red-wine appellation. There is a long tradition of winemaking in the area mostly from the local Agiorgitiko grape that can produce grate variety of wines.</p>

<p>The hostess at Govas Winery was a chemical engineer with deep knowledge of the process and tradition.</p>

<p>We took a tour of the estate and after that we tried many of the plant’s products with great cheese and meat pairings.</p>

<p class="gallery"><img src="/images/the-nemean-lion-and-its-wine/IMG_0059.jpg" alt="IMG_0059.jpg" />
<img src="/images/the-nemean-lion-and-its-wine/IMG_0061.jpg" alt="IMG_0061.jpg" />
<img src="/images/the-nemean-lion-and-its-wine/IMG_0060.jpg" alt="IMG_0060.jpg" />
<img src="/images/the-nemean-lion-and-its-wine/IMG_0062.jpg" alt="IMG_0062.jpg" /></p>

<p>I would recommend to visit a winery once. If you like wine you may appreciate the process more if you know how everything is done.</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Travel" /><category term="Food," /><category term="wine" /><summary type="html"><![CDATA[Start of December we visited a winery. I have been to distilleries and breweries but wine making has not made me drunk yet.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/images/the-nemean-lion-and-its-wine/IMG_0058.jpg" /><media:content medium="image" url="https://tsangiotis.com/images/the-nemean-lion-and-its-wine/IMG_0058.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Milos - Sea, See, Eat, Drink</title><link href="https://tsangiotis.com/milos-sea-see-eat-drink/" rel="alternate" type="text/html" title="Milos - Sea, See, Eat, Drink" /><published>2021-08-14T00:00:00+00:00</published><updated>2021-08-14T00:00:00+00:00</updated><id>https://tsangiotis.com/milos-sea-see-eat-drink</id><content type="html" xml:base="https://tsangiotis.com/milos-sea-see-eat-drink/"><![CDATA[<p>While in love or alone, Milos is a place to enjoy the sand and sun. Bellow are some musts from my visit. I will not bore you with the unpleasant or meh experiences. Only with the great and there were many.</p>

<h2 id="sea">Sea</h2>

<p>First order of business about a week before your trip, book a boat toor. Before you book watch the weather for the best possible date in terms of wind. meteo.gr is a great site for that.</p>

<p>The trip we took was with <a href="https://volcanoboat.eu/">Volcano boat</a> and I can wholeheartedly recommend it. You spend a lot of time at unreachable by car beaches and they get you local treats between stops. During the end you do snorkeling at Kleftiko with the help of experienced divers.</p>

<p><img src="/images/milos-sea-see-eat-drink/img_7794.jpg" alt="Snorkeling photo" /></p>

<p>Beyond that, regarding the beaches you will visit every day, I really liked Paleochori (visited twice). The sand is hot, the water cold and if you have a mask you will enjoy the underwater landscapes.</p>

<p><img src="/images/milos-sea-see-eat-drink/75fc4481-ffc4-43ae-aa37-91d8668f6180.jpeg" alt="Deep Blue bar, Paleochori" /></p>

<p>Second in my ranking comes Agia Kyriaki. The beach bar is good, and the water perfect.</p>

<p><img src="/images/milos-sea-see-eat-drink/img_7779.jpg" alt="Agia Kyriaki image from Google as I was too chill to shoot" /></p>

<p>Must swims include Alogomantra and Fyropotamos.</p>

<p class="gallery"><img src="/images/milos-sea-see-eat-drink/59289508-e8bf-4fbd-88a2-0767a89f52b2.jpeg" alt="Alogomantra beach" />
<img src="/images/milos-sea-see-eat-drink/99bdae11-d3da-4dd6-8f5d-2bd422b5f4e3.jpeg" alt="Fyropotamos beach" /></p>

<p>After that do what you want. The island has 90+ beaches, you’ll never catch them all in a way that’s worth it.</p>

<h2 id="see">See</h2>

<p>You must be wandering where is Sarakiniko in the above list.</p>

<p>Sarakiniko is to see but not to waste a swim on. You can spend a couple of hours there exploring and taking pictures.</p>

<p><img src="/images/milos-sea-see-eat-drink/83c04b44-778d-42a9-9ff9-97ddc4ee1534.jpeg" alt="Anna in Sarakiniko" /></p>

<p class="gallery"><img src="/images/milos-sea-see-eat-drink/6b28a803-462e-4a6e-8169-618310a685de.jpeg" alt="Girl jumps from a ledge in the Sarakiniko waters" />
<img src="/images/milos-sea-see-eat-drink/0f13b631-2b0b-4c43-b0b1-d398bdd0ef83.jpeg" alt="The Sarakiniko wasteland dream" /></p>

<p>Another place you should see is Klima. This location hosted the homes of many fishermen. The doors are colored because the fishermen needed to spot their home from afar and with the help of wires get them inside to protect them. Must visit at sundown.</p>

<p class="gallery"><img src="/images/milos-sea-see-eat-drink/5c93cd6a-6558-4f61-beae-348795a7e3d9.jpeg" alt="Sunset hour at Klima" />
<img src="/images/milos-sea-see-eat-drink/7f856da1-0904-4c4d-9363-1822e7fe6cce.jpeg" alt="Man in front of his door at Klima" /></p>

<p>The last sunset to schedule is at the top of the Castle at Plaka. The view is amazing.</p>

<p>We had the luck to visit while a storm was taking place at the distance.</p>

<p><img src="/images/milos-sea-see-eat-drink/img_1548.jpg" alt="Sunset at Plaka castle while storming" /></p>

<h2 id="eat">Eat</h2>

<p>Bariello is the best place for creative Greek cuisine. As a renounced critic I ranked it with 9/10. Takis is an exemplary host.</p>

<p>While in Plaka, visit Palaio for traditional deserts. Orange pie and Galaktompoureko are verified by me.</p>

<p><em>This section omits pictures as the food got eaten as it hit the table.</em></p>

<h2 id="drink">Drink</h2>

<p>There are very few places. Verina Cocktail Bar at Plaka is the best.</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Travel" /><category term="Cyclades," /><category term="Greece," /><category term="Milos," /><category term="Photography," /><category term="Travel" /><summary type="html"><![CDATA[While in love or alone, Milos is a place to enjoy the sand and sun. In this post are some musts from my visit. I will not bore you with the unpleasant or meh experiences. Only with the great and there were many.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/images/milos-sea-see-eat-drink/around_the_world.png" /><media:content medium="image" url="https://tsangiotis.com/images/milos-sea-see-eat-drink/around_the_world.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Snow Mask</title><link href="https://tsangiotis.com/snow-mask/" rel="alternate" type="text/html" title="Snow Mask" /><published>2021-03-04T00:00:00+00:00</published><updated>2021-03-04T00:00:00+00:00</updated><id>https://tsangiotis.com/snow-mask</id><content type="html" xml:base="https://tsangiotis.com/snow-mask/"><![CDATA[<p>On the snowiest day of the forever sunbathed Athens suburbia, I watch a boy cry about sand in his shoes.</p>

<p>Little dude and his parents made the beach with masks and all the riches to enjoy the rare phenomenon. A pair of girls watch their dog joyfully jump around the kid.</p>

<p>They nod at us as we smile at the adorable affair.</p>

<p><img src="/images/snow-mask/DSC_3267-Edit.jpg" alt="DSC_3267-Edit.jpg" /></p>

<p>We walk a bit to be greeted by untapped snow. I slide a bit and my feet stick in the ground. Now my feet are full of sand.</p>

<p class="gallery"><img src="/images/snow-mask/DSC_3252.jpg" alt="DSC_3252.jpg" />
<img src="/images/snow-mask/DSC_3243.jpg" alt="DSC_3243.jpg" /></p>

<p>With frozen hands and just a coat I don’t have what it takes to stay outside for long, however it has been a while since I’ve been excited for it.</p>

<p>The city can’t handle it either.</p>

<p><img src="/images/snow-mask/DSC_3218.jpg" alt="DSC_3218.jpg" /></p>

<p>Parts of it without power for days and people can’t leave their house. Everyone is on edge. Ambulances try to reach people in need and workers from all over Greece are pulled in Athens to help fix the damages.</p>

<p>As the day fades, the greatest snowfall of recent times goes with it.</p>

<p class="gallery"><img src="/images/snow-mask/DSC_3175.jpeg" alt="DSC_3175.jpeg" />
<img src="/images/snow-mask/IMG_0664.JPG" alt="IMG_0664.JPG" /></p>

<p>I went outside and saw another family play. A gentleman with a hat nodded to them as he disappeared in the night.</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Log," /><category term="Photography" /><category term="Snow" /><summary type="html"><![CDATA[On the snowiest day of the forever sunbathed Athens suburbia, I watch a boy cry about sand in his shoes.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/images/snow-mask/DSC_3267-Edit.jpg" /><media:content medium="image" url="https://tsangiotis.com/images/snow-mask/DSC_3267-Edit.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">No more AirPods for Zoom calls</title><link href="https://tsangiotis.com/no-more-airpods-in-zoom-calls/" rel="alternate" type="text/html" title="No more AirPods for Zoom calls" /><published>2020-12-22T00:00:00+00:00</published><updated>2020-12-22T00:00:00+00:00</updated><id>https://tsangiotis.com/no-more-airpods-in-zoom-calls</id><content type="html" xml:base="https://tsangiotis.com/no-more-airpods-in-zoom-calls/"><![CDATA[]]></content><author><name>Tasos Sangiotis</name></author><summary type="html"><![CDATA[]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Give up AirPods on PC. Microphone reviews on 2020</title><link href="https://tsangiotis.com/microphone-sound-tests-for-internet-calls/" rel="alternate" type="text/html" title="Give up AirPods on PC. Microphone reviews on 2020" /><published>2020-12-20T00:00:00+00:00</published><updated>2020-12-20T00:00:00+00:00</updated><id>https://tsangiotis.com/microphone-sound-tests-for-internet-calls</id><content type="html" xml:base="https://tsangiotis.com/microphone-sound-tests-for-internet-calls/"><![CDATA[<p>In 2020 we all did more online calls than we ever thought reasonable. Google Meet, Microsoft Teams, Zoom, Facebook Messenger, Webex were the bread and butter of the working professional.</p>

<p>\</p>

<p>I don’t like webcams on web calls. They are distracting and my face searching for files is not a pretty thing. If I don’t know the person on the other end I want to meet them but for the rest of the call the camera can turn off. For this I am very happy to rely on my laptop camera and it helps that the crappy webcam that once cost €20 it is now a €100 luxury item.</p>

<p>\</p>

<p>More distracting though is bad audio. Audio that clips or muffles is the devil. So I got a cheap headset with a noise canceling mic attachment and an arm that retains the distance from my mouth and I really really recommend it! </p>

<p>\</p>

<p><img src="/assets/images/posts/microphone-sound-tests-for-internet-calls/01-large_xlarge_20201123210528_logitech_headset_h340_usb.jpeg" alt="" /></p>

<p> </p>

<p>Bellow I’m going to compare different microphones that you may have, being your laptop mic, your cheap wired earphones mic and a dynamic microphone. I will record a short file on each with a quote from the Martian by Andy Weir. You may want to listen to these samples with headphones on. I tried to edit the files to even out the levels by eyeballing the waveforms. The teleconference software you use would do that automatically so just listen to the quality.</p>

<p>\</p>

<p>The headset I bought is Logitech Headset H340 USB. I bought it because it was available, had good reviews and looked comfortable and light. I recommend it and here’s how it sounds:</p>

<h2 id="logitech-headset-h340-usb">Logitech Headset H340 USB\</h2>

<p><a href="https://phaven-prod.s3.amazonaws.com/files/audio_part/asset/2550980/gmS5HKzvjE-8dWnennceDtKkROw/logitech.wav" class="posthaven-file-download" download="">Download logitech.wav</a></p>

<p>It is clear and will not let you down. In comparison here is my ThinkPad T480: </p>

<h2 id="internal-laptop-mic">Internal laptop mic</h2>

<p><a href="https://phaven-prod.s3.amazonaws.com/files/audio_part/asset/2550979/3hgS8yUGGp94GhYcLtt-py6cxmk/internal.wav" class="posthaven-file-download" download="">Download internal.wav</a></p>

<p>It sounds decent but on a call, having speakers and microphones competing out loud creates weird feedback loops. Laptops employ noise cancelation but on some occasions it fails miserably. Most of the times you have to resort on your cheap earbuds to rescue you.\</p>

<h2 id="wired-35mm">Wired 3.5mm</h2>

<p><a href="https://phaven-prod.s3.amazonaws.com/files/audio_part/asset/2550981/uQjjnz1RMUy9v2QOYL06a8Xu9EE/wired3.5mm.wav" class="posthaven-file-download" download="">Download wired3.5mm.wav</a></p>

<p>This is awful. This is what your conversation partner hears. Please find another solution! </p>

<h2 id="bluetooth-headsets-including-airpods">Bluetooth headsets including Airpods </h2>

<p>Bluetooth headsets are not to be trusted. </p>

<p>Due to bluetooth weirdness and Apple’s Magic, your Airpods will be operating in 8kHz bandwith mode. Which is very very low.</p>

<p><img src="/assets/images/posts/microphone-sound-tests-for-internet-calls/02-large_85c18129-40f9-4bc8-a5b5-e0f710367cc6.png" alt="" /></p>

<p>On Mac things could be better but I don’t expect to be better by much. </p>

<p>In this mode the quality is abysmal because your input an output share the connection all the time. \</p>

<p>You can buy a 100 dollar receiver to go a bit more but again you will not have good sound and good sound is cheap.\</p>

<p>More on software and bandwidth at the end of the post.</p>

<h2 id="professional-mic--daq">Professional mic &amp; DAQ</h2>

<p>Wanna go crazy? </p>

<p>For about €80 you can get a recording setup. </p>

<p><img src="/assets/images/posts/microphone-sound-tests-for-internet-calls/03-large_ezgif-7-65b3d7b29834.jpg" alt="" /></p>

<p>I have one for some screencasts and it sounds silky smooth! However you’ve warned. It picks up EVERYTHING. \</p>

<p>You need to learn how to configure it and use it correctly. I am a newbie to this but the audio crowd is very helpful.</p>

<p><a href="https://phaven-prod.s3.amazonaws.com/files/audio_part/asset/2550982/qRZjqa0QbZbGVec3Ml5gzflxPBQ/promic.wav" class="posthaven-file-download" download="">Download promic.wav</a></p>

<p>It is a clunky thing though. In my opinion the cheap USB Headset is the optimal solution overall and I am done searching. </p>

<p>Happy internet talking!</p>

<h3 id="theory-and-software-used">Theory and Software used</h3>

<p>Keep in mind sound is from 20Hz to 20kHz. </p>

<p>To capture a frequency range reliably you need sample with at least twice the rate according to the <a href="https://en.wikipedia.org/wiki/Nyquist%E2%80%93Shannon_sampling_theorem" target="_blank">Nyquist - Shannon</a> theorem. </p>

<p>Having 44.1kHz bandwidth that allows for full spectrum capturing but with only 8kHz (in the case of AirPods) to play means that you can recognize sound on about 1/5 of the spectrum (4kHz around the dominant frequency). </p>

<p>You say <em>OK. But my voice is not fluctuating that much. I am in my pajamas pants and bored dude…</em></p>

<p>True but it does no favors to your sound. When Skype goes and shoots your audio from your computer to the internet it levels it up and compresses it. Having a bad initial stage with small bandwidth augments all the imperfections for the end listener. </p>

<p>If you are interested in sound stuff, I used <a href="https://www.audacityteam.org/" target="_blank">Audacity</a> for these recordings. It has all the stuff and tools to let you play with levels, sampling and the bits. Have fun!\</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Guide" /><category term="Review" /><category term="Productivity" /><summary type="html"><![CDATA[In 2020 we all did more online calls than we ever thought reasonable. Google Meet, Microsoft Teams, Zoom, Facebook Messenger, Webex were the bread and butter of the working professional. \ I don’t like webcams on web calls. They are distracting and my face searching for files is not a pretty thing. If I don’t know the person on the other end I want to meet them but for the rest of the call the camera can turn off. For this I am very happy to rely on my laptop camera and it helps that the crappy webcam that once cost €20 it is now a €100 luxury item. \ More distracting though is bad audio. Audio that clips or muffles is the devil. So I got a cheap headset with a noise canceling mic attachment and an arm that retains the distance from my mouth and I really really recommend it!  \   Bellow I’m going to compare different microphones that you may have, being your laptop mic, your cheap wired earphones mic and a dynamic microphone. I will record a short file on each with a quote from the Martian by Andy Weir. You may want to listen to these samples with headphones on. I tried to edit the files to even out the levels by eyeballing the waveforms. The teleconference software you use would do that automatically so just listen to the quality. \ The headset I bought is Logitech Headset H340 USB. I bought it because it was available, had good reviews and looked comfortable and light. I recommend it and here’s how it sounds: Logitech Headset H340 USB\ Download logitech.wav It is clear and will not let you down. In comparison here is my ThinkPad T480:  Internal laptop mic Download internal.wav It sounds decent but on a call, having speakers and microphones competing out loud creates weird feedback loops. Laptops employ noise cancelation but on some occasions it fails miserably. Most of the times you have to resort on your cheap earbuds to rescue you.\ Wired 3.5mm Download wired3.5mm.wav This is awful. This is what your conversation partner hears. Please find another solution!  Bluetooth headsets including Airpods  Bluetooth headsets are not to be trusted.  Due to bluetooth weirdness and Apple’s Magic, your Airpods will be operating in 8kHz bandwith mode. Which is very very low. On Mac things could be better but I don’t expect to be better by much.  In this mode the quality is abysmal because your input an output share the connection all the time. \ You can buy a 100 dollar receiver to go a bit more but again you will not have good sound and good sound is cheap.\ More on software and bandwidth at the end of the post. Professional mic &amp; DAQ Wanna go crazy?  For about €80 you can get a recording setup.  I have one for some screencasts and it sounds silky smooth! However you’ve warned. It picks up EVERYTHING. \ You need to learn how to configure it and use it correctly. I am a newbie to this but the audio crowd is very helpful. Download promic.wav It is a clunky thing though. In my opinion the cheap USB Headset is the optimal solution overall and I am done searching.  Happy internet talking! Theory and Software used Keep in mind sound is from 20Hz to 20kHz.  To capture a frequency range reliably you need sample with at least twice the rate according to the Nyquist - Shannon theorem.  Having 44.1kHz bandwidth that allows for full spectrum capturing but with only 8kHz (in the case of AirPods) to play means that you can recognize sound on about 1/5 of the spectrum (4kHz around the dominant frequency).  You say OK. But my voice is not fluctuating that much. I am in my pajamas pants and bored dude… True but it does no favors to your sound. When Skype goes and shoots your audio from your computer to the internet it levels it up and compresses it. Having a bad initial stage with small bandwidth augments all the imperfections for the end listener.  If you are interested in sound stuff, I used Audacity for these recordings. It has all the stuff and tools to let you play with levels, sampling and the bits. Have fun!\]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Multilingual Jekyll on GitHub Pages</title><link href="https://tsangiotis.com/multilingual-jekyll/" rel="alternate" type="text/html" title="Multilingual Jekyll on GitHub Pages" /><published>2020-10-15T00:00:00+00:00</published><updated>2020-10-15T00:00:00+00:00</updated><id>https://tsangiotis.com/multilingual-jekyll</id><content type="html" xml:base="https://tsangiotis.com/multilingual-jekyll/"><![CDATA[<p><img src="/images/multilingual-jekyll/around_the_world.png" alt="Around the world" /></p>

<p>We recently ditched Wordpress for the company site and built something with Jekyll just to make it faster and simplify our tools.</p>

<p>We wanted to host on Github pages to up the simplicity. However having the site be multilingual is a hard requirement for us and Github pages does not support it.</p>

<p>So we rolled our own solution.</p>

<!--more-->

<p>Requirements:</p>

<ul>
  <li>Be able to change the language on all pages. No page should be only in one language.</li>
  <li>No plugins. We want to host on Github Pages and only a small list of plugins are permitted there.</li>
  <li>Work OK without javascript because I can’t trust myself with that language.</li>
  <li>Respect <a href="https://gdpr.eu/cookies/">GDPR policy</a>.</li>
  <li>Remember the users language of choice or use the browser preferences for that.</li>
</ul>

<p>Most of the requirements work great in solutions from posts found online <sup id="fnref:1"><a href="#fn:1" class="footnote" rel="footnote" role="doc-noteref">1</a></sup> <sup id="fnref:2"><a href="#fn:2" class="footnote" rel="footnote" role="doc-noteref">2</a></sup> <sup id="fnref:3"><a href="#fn:3" class="footnote" rel="footnote" role="doc-noteref">3</a></sup> <sup id="fnref:4"><a href="#fn:4" class="footnote" rel="footnote" role="doc-noteref">4</a></sup> <sup id="fnref:5"><a href="#fn:5" class="footnote" rel="footnote" role="doc-noteref">5</a></sup>.</p>

<p>I will give you the complete solution but much credit goes to these people. So lets begin.</p>

<p>In every page or post you write from now on you need a couple of extra elements in the front matter.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>---
layout: default-el
lang: el
lang-ref: policies
permalink: /el/hello/
title: Hello world!
---
</code></pre></div></div>

<p>The most important ones are <code class="language-plaintext highlighter-rouge">lang</code> and <code class="language-plaintext highlighter-rouge">lang-ref</code>.</p>

<p><code class="language-plaintext highlighter-rouge">lang</code>: Here is the language of the current file.</p>

<p><code class="language-plaintext highlighter-rouge">lang-ref</code>: Here is the common slug for the page. This is shared on all the different language versions of the page.</p>

<p>As a bonus I created different layout scaffolds for the different languages so I don’t make every part of the general layout like the menu header and footer a big plate of if spaghetti.</p>

<p>Here is the website header:</p>

<div class="language-liquid highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;header&gt;
  &lt;nav class="header__nav" aria-label="main"&gt;
    &lt;div class="header__links"&gt;
        ...
    &lt;/div&gt;
    <span class="cp">{%</span><span class="w"> </span><span class="nt">if</span><span class="w"> </span><span class="nv">page</span><span class="p">.</span><span class="nv">layout</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s1">'post'</span><span class="w"> </span><span class="cp">%}</span>
    <span class="cp">{%</span><span class="w"> </span><span class="nt">assign</span><span class="w"> </span><span class="nv">posts</span><span class="o">=</span><span class="nv">site</span><span class="p">.</span><span class="nv">posts</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">where</span><span class="p">:</span><span class="s2">"lang-ref"</span><span class="p">,</span><span class="w"> </span><span class="nv">page</span><span class="p">.</span><span class="nv">lang-ref</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">sort</span><span class="p">:</span><span class="w"> </span><span class="s1">'lang'</span><span class="w"> </span><span class="cp">%}</span>
    <span class="cp">{%</span><span class="w"> </span><span class="nt">endif</span><span class="w"> </span><span class="cp">%}</span>
    <span class="cp">{%</span><span class="w"> </span><span class="nt">if</span><span class="w">  </span><span class="nv">page</span><span class="p">.</span><span class="nv">layout</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="s1">'post'</span><span class="w"> </span><span class="cp">%}</span>
    <span class="cp">{%</span><span class="w"> </span><span class="nt">assign</span><span class="w"> </span><span class="nv">posts</span><span class="o">=</span><span class="nv">site</span><span class="p">.</span><span class="nv">pages</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">where</span><span class="p">:</span><span class="s2">"lang-ref"</span><span class="p">,</span><span class="w"> </span><span class="nv">page</span><span class="p">.</span><span class="nv">lang-ref</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">sort</span><span class="p">:</span><span class="w"> </span><span class="s1">'lang'</span><span class="w"> </span><span class="cp">%}</span>
    <span class="cp">{%</span><span class="w"> </span><span class="nt">endif</span><span class="w"> </span><span class="cp">%}</span>
    <span class="cp">{%</span><span class="w"> </span><span class="nt">if</span><span class="w"> </span><span class="nv">posts</span><span class="p">.</span><span class="nf">size</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="cp">%}</span>

    &lt;div class="header__langs"&gt;
      <span class="cp">{%</span><span class="w"> </span><span class="nt">for</span><span class="w"> </span><span class="nv">post</span><span class="w"> </span><span class="nt">in</span><span class="w"> </span><span class="nv">posts</span><span class="w"> </span><span class="cp">%}</span>
      <span class="cp">{%</span><span class="w"> </span><span class="nt">if</span><span class="w"> </span><span class="nv">post</span><span class="p">.</span><span class="nv">lang</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="nv">page</span><span class="p">.</span><span class="nv">lang</span><span class="w"> </span><span class="cp">%}</span>
      &lt;a href="<span class="cp">{{</span><span class="w"> </span><span class="nv">site</span><span class="p">.</span><span class="nv">base-url</span><span class="w"> </span><span class="cp">}}{{</span><span class="w"> </span><span class="nv">post</span><span class="p">.</span><span class="nv">url</span><span class="w"> </span><span class="cp">}}</span>" class="header__lang header__lang-<span class="cp">{{</span><span class="w"> </span><span class="nv">post</span><span class="p">.</span><span class="nv">lang</span><span class="w"> </span><span class="cp">}}</span> title=" View in
        <span class="cp">{{</span><span class="nv">post</span><span class="p">.</span><span class="nv">lang</span><span class="cp">}}</span>" data-lang=<span class="cp">{{</span><span class="w"> </span><span class="nv">post</span><span class="p">.</span><span class="nv">lang</span><span class="w"> </span><span class="cp">}}</span>&gt;&lt;/a&gt;
      <span class="cp">{%</span><span class="w"> </span><span class="nt">endif</span><span class="w"> </span><span class="cp">%}</span>
      <span class="cp">{%</span><span class="w"> </span><span class="nt">endfor</span><span class="w"> </span><span class="cp">%}</span>
    &lt;/div&gt;
    <span class="cp">{%</span><span class="w"> </span><span class="nt">endif</span><span class="w"> </span><span class="cp">%}</span>
  &lt;/nav&gt;
&lt;/header&gt;
</code></pre></div></div>

<p>Here we collect all posts or pages with the same <code class="language-plaintext highlighter-rouge">lang-ref</code> to the <code class="language-plaintext highlighter-rouge">posts</code> list and we show translations of the page to other languages than the language of the current page.</p>

<p>You will notice that the language link as no content and that we use the class <code class="language-plaintext highlighter-rouge">header__lang-</code>. There we can use the <a href="https://www.w3schools.com/cssref/pr_gen_content.asp">content</a> css property to set what we want in our link text. However with two languages you can harcode it and it saves you some headaches.</p>

<p>At this point is where those guides took us. But using polylang on our site for years I have been accustomed to the website remembering my choice or bugging me with the wrong one. I wanted that to remain.</p>

<p>That meant I needed to store a preference. Hello Cookies 🍪🍪🍪!!!</p>

<p>Javascript is needed for those. It is a simple enough implementation.</p>

<p>First we need a way to write and read cookies. Searching around on the internet you can end up with those two functions.</p>

<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">function</span> <span class="nf">setCookie</span><span class="p">(</span><span class="nx">e</span><span class="p">,</span> <span class="nx">t</span><span class="p">,</span> <span class="nx">n</span><span class="p">,</span> <span class="nx">a</span><span class="p">)</span> <span class="p">{</span>
  <span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Date</span><span class="p">();</span>
  <span class="nx">i</span><span class="p">.</span><span class="nf">setTime</span><span class="p">(</span><span class="nx">i</span><span class="p">.</span><span class="nf">getTime</span><span class="p">()</span> <span class="o">+</span> <span class="mi">24</span> <span class="o">*</span> <span class="nx">n</span> <span class="o">*</span> <span class="mi">60</span> <span class="o">*</span> <span class="mi">60</span> <span class="o">*</span> <span class="mi">1</span><span class="nx">e3</span><span class="p">);</span>
  <span class="kd">var</span> <span class="nx">o</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">expires=</span><span class="dl">"</span> <span class="o">+</span> <span class="nx">i</span><span class="p">.</span><span class="nf">toUTCString</span><span class="p">(),</span>
    <span class="nx">s</span> <span class="o">=</span> <span class="nx">a</span> <span class="p">?</span> <span class="dl">"</span><span class="s2">;SameSite=</span><span class="dl">"</span> <span class="o">+</span> <span class="nx">a</span> <span class="p">:</span> <span class="dl">""</span><span class="p">;</span>
  <span class="nb">document</span><span class="p">.</span><span class="nx">cookie</span> <span class="o">=</span> <span class="nx">e</span> <span class="o">+</span> <span class="dl">"</span><span class="s2">=</span><span class="dl">"</span> <span class="o">+</span> <span class="nx">t</span> <span class="o">+</span> <span class="dl">"</span><span class="s2">;</span><span class="dl">"</span> <span class="o">+</span> <span class="nx">o</span> <span class="o">+</span> <span class="dl">"</span><span class="s2">;Secure;path=/</span><span class="dl">"</span> <span class="o">+</span> <span class="nx">s</span><span class="p">;</span>
<span class="p">}</span>

<span class="kd">function</span> <span class="nf">getCookie</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
  <span class="k">for </span><span class="p">(</span>
    <span class="kd">var</span> <span class="nx">t</span> <span class="o">=</span> <span class="nx">e</span> <span class="o">+</span> <span class="dl">"</span><span class="s2">=</span><span class="dl">"</span><span class="p">,</span> <span class="nx">n</span> <span class="o">=</span> <span class="nf">decodeURIComponent</span><span class="p">(</span><span class="nb">document</span><span class="p">.</span><span class="nx">cookie</span><span class="p">).</span><span class="nf">split</span><span class="p">(</span><span class="dl">"</span><span class="s2">;</span><span class="dl">"</span><span class="p">),</span> <span class="nx">a</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
    <span class="nx">a</span> <span class="o">&lt;</span> <span class="nx">n</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
    <span class="nx">a</span><span class="o">++</span>
  <span class="p">)</span> <span class="p">{</span>
    <span class="k">for </span><span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="nx">n</span><span class="p">[</span><span class="nx">a</span><span class="p">];</span> <span class="dl">"</span><span class="s2"> </span><span class="dl">"</span> <span class="o">==</span> <span class="nx">i</span><span class="p">.</span><span class="nf">charAt</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span> <span class="p">)</span> <span class="nx">i</span> <span class="o">=</span> <span class="nx">i</span><span class="p">.</span><span class="nf">substring</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
    <span class="k">if </span><span class="p">(</span><span class="mi">0</span> <span class="o">==</span> <span class="nx">i</span><span class="p">.</span><span class="nf">indexOf</span><span class="p">(</span><span class="nx">t</span><span class="p">))</span> <span class="k">return</span> <span class="nx">i</span><span class="p">.</span><span class="nf">substring</span><span class="p">(</span><span class="nx">t</span><span class="p">.</span><span class="nx">length</span><span class="p">,</span> <span class="nx">i</span><span class="p">.</span><span class="nx">length</span><span class="p">);</span>
  <span class="p">}</span>
  <span class="k">return</span> <span class="kc">null</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>

<p>But to use those under cookies we must get concent.</p>

<p>Let’s create a concent form that will go to our scafold:</p>

<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"cookie-form-container"</span> <span class="na">data-compliance-container</span><span class="nt">&gt;</span>
  <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"cookie-form"</span><span class="nt">&gt;</span>
    <span class="nt">&lt;p</span> <span class="na">class=</span><span class="s">"cookie-form__content"</span><span class="nt">&gt;</span>
      We do use persistent first-party cookies to augment your experience in our
      website and support analytics. To learn more, please read our
      <span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">"/policies/privacy/"</span><span class="nt">&gt;</span>privacy policy<span class="nt">&lt;/a&gt;</span>.
    <span class="nt">&lt;/p&gt;</span>
    <span class="nt">&lt;button</span> <span class="na">class=</span><span class="s">"button cookie-form__submit"</span> <span class="na">data-compliance</span><span class="nt">&gt;</span>OK<span class="nt">&lt;/button&gt;</span>
  <span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;</span>
</code></pre></div></div>

<p>When we hit OK we store a concent cookie and add a the <code class="language-plaintext highlighter-rouge">.hide {display: none;}</code> class to the cookie banner container so it dissapears. Now it is ok to store our language preference cookies. On the next visit the language preference is stored depending on the user’s browser preferences.</p>

<p>If the user actively changes the language from the language switcher the preference changes again.</p>

<p>How we use it? Every time the user visits the homepage she gets redirected to the language of preferece.</p>

<p>Note that visiting another page directly will not redirect. This is my preference. It is easy to change that behavior if you like but I believe it is useful for a permalink to be permanent.</p>

<p>Here is the code to do what we intent.</p>

<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">function</span> <span class="nf">languageChange</span><span class="p">(</span><span class="nx">lang</span><span class="p">)</span> <span class="p">{</span>
  <span class="nf">setCookie</span><span class="p">(</span><span class="dl">"</span><span class="s2">_lang</span><span class="dl">"</span><span class="p">,</span> <span class="nx">lang</span><span class="p">,</span> <span class="mi">90</span><span class="p">,</span> <span class="dl">"</span><span class="s2">None</span><span class="dl">"</span><span class="p">);</span>
  <span class="nf">setCookie</span><span class="p">(</span><span class="dl">"</span><span class="s2">_lang_ss</span><span class="dl">"</span><span class="p">,</span> <span class="nx">lang</span><span class="p">,</span> <span class="mi">90</span><span class="p">);</span>
  <span class="k">return</span> <span class="nx">lang</span><span class="p">;</span>
<span class="p">}</span>

<span class="p">(</span><span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
  <span class="kc">null</span> <span class="o">!==</span> <span class="p">(</span><span class="nx">n</span> <span class="o">=</span> <span class="nf">getCookie</span><span class="p">(</span><span class="dl">"</span><span class="s2">_compliance</span><span class="dl">"</span><span class="p">))</span> <span class="o">&amp;&amp;</span>
    <span class="nb">document</span><span class="p">.</span><span class="nf">querySelector</span><span class="p">(</span><span class="dl">"</span><span class="s2">[data-compliance-container]</span><span class="dl">"</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
    <span class="nb">document</span><span class="p">.</span><span class="nf">querySelector</span><span class="p">(</span><span class="dl">"</span><span class="s2">[data-compliance-container]</span><span class="dl">"</span><span class="p">).</span><span class="nx">classList</span><span class="p">.</span><span class="nf">add</span><span class="p">(</span><span class="dl">"</span><span class="s2">hide</span><span class="dl">"</span><span class="p">),</span>
    <span class="nb">document</span><span class="p">.</span><span class="nf">querySelector</span><span class="p">(</span><span class="dl">"</span><span class="s2">[data-compliance]</span><span class="dl">"</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
      <span class="nb">document</span>
        <span class="p">.</span><span class="nf">querySelector</span><span class="p">(</span><span class="dl">"</span><span class="s2">[data-compliance]</span><span class="dl">"</span><span class="p">)</span>
        <span class="p">.</span><span class="nf">addEventListener</span><span class="p">(</span><span class="dl">"</span><span class="s2">click</span><span class="dl">"</span><span class="p">,</span> <span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
          <span class="nb">window</span><span class="p">.</span><span class="nx">event</span><span class="p">.</span><span class="nf">preventDefault</span><span class="p">();</span>
          <span class="nf">setCookie</span><span class="p">(</span><span class="dl">"</span><span class="s2">_compliance</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">true</span><span class="dl">"</span><span class="p">,</span> <span class="mi">90</span><span class="p">,</span> <span class="dl">"</span><span class="s2">None</span><span class="dl">"</span><span class="p">);</span>
          <span class="nf">setCookie</span><span class="p">(</span><span class="dl">"</span><span class="s2">_compliance_ss</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">true</span><span class="dl">"</span><span class="p">,</span> <span class="mi">90</span><span class="p">);</span>
          <span class="nb">document</span>
            <span class="p">.</span><span class="nf">querySelector</span><span class="p">(</span><span class="dl">"</span><span class="s2">[data-compliance-container]</span><span class="dl">"</span><span class="p">)</span>
            <span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nf">add</span><span class="p">(</span><span class="dl">"</span><span class="s2">hide</span><span class="dl">"</span><span class="p">);</span>
        <span class="p">});</span>
<span class="p">}.</span><span class="nf">call</span><span class="p">(</span><span class="k">this</span><span class="p">),</span>
  <span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
    <span class="kd">var</span> <span class="nx">lang</span> <span class="o">=</span> <span class="nf">getCookie</span><span class="p">(</span><span class="dl">"</span><span class="s2">_lang</span><span class="dl">"</span><span class="p">)</span> <span class="o">||</span> <span class="nf">getCookie</span><span class="p">(</span><span class="dl">"</span><span class="s2">_lang_ss</span><span class="dl">"</span><span class="p">);</span>
    <span class="kd">var</span> <span class="nx">compliance</span> <span class="o">=</span> <span class="nf">getCookie</span><span class="p">(</span><span class="dl">"</span><span class="s2">_compliance</span><span class="dl">"</span><span class="p">)</span> <span class="o">||</span> <span class="nf">getCookie</span><span class="p">(</span><span class="dl">"</span><span class="s2">_compliance_ss</span><span class="dl">"</span><span class="p">);</span>
    <span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">lang</span> <span class="o">&amp;&amp;</span> <span class="nx">compliance</span><span class="p">)</span> <span class="p">{</span>
      <span class="nx">lang</span> <span class="o">=</span> <span class="p">(</span><span class="nb">navigator</span><span class="p">.</span><span class="nx">language</span> <span class="o">||</span> <span class="nb">navigator</span><span class="p">.</span><span class="nx">userLanguage</span><span class="p">).</span><span class="nf">split</span><span class="p">(</span><span class="dl">"</span><span class="s2">-</span><span class="dl">"</span><span class="p">)[</span><span class="mi">0</span><span class="p">];</span>
      <span class="nf">setCookie</span><span class="p">(</span><span class="dl">"</span><span class="s2">_lang</span><span class="dl">"</span><span class="p">,</span> <span class="nx">lang</span><span class="p">,</span> <span class="mi">90</span><span class="p">,</span> <span class="dl">"</span><span class="s2">None</span><span class="dl">"</span><span class="p">);</span>
      <span class="nf">setCookie</span><span class="p">(</span><span class="dl">"</span><span class="s2">_lang_ss</span><span class="dl">"</span><span class="p">,</span> <span class="nx">lang</span><span class="p">,</span> <span class="mi">90</span><span class="p">);</span>
    <span class="p">}</span>
  <span class="p">}.</span><span class="nf">call</span><span class="p">(</span><span class="k">this</span><span class="p">),</span>
  <span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
    <span class="kd">var</span> <span class="nx">e</span><span class="p">,</span> <span class="nx">t</span><span class="p">,</span> <span class="nx">n</span><span class="p">,</span> <span class="nx">a</span><span class="p">;</span>
    <span class="dl">"</span><span class="s2">/</span><span class="dl">"</span> <span class="o">===</span> <span class="nb">window</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">pathname</span> <span class="o">&amp;&amp;</span>
      <span class="kc">null</span> <span class="o">!==</span> <span class="p">(</span><span class="nx">n</span> <span class="o">=</span> <span class="nf">getCookie</span><span class="p">(</span><span class="dl">"</span><span class="s2">_lang</span><span class="dl">"</span><span class="p">))</span> <span class="o">&amp;&amp;</span>
      <span class="nx">n</span> <span class="o">==</span> <span class="dl">"</span><span class="s2">el</span><span class="dl">"</span> <span class="o">&amp;&amp;</span>
      <span class="nb">window</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nf">replace</span><span class="p">(</span><span class="dl">"</span><span class="s2">/el/</span><span class="dl">"</span><span class="p">);</span>
    <span class="dl">"</span><span class="s2">/el/</span><span class="dl">"</span> <span class="o">===</span> <span class="nb">window</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">pathname</span> <span class="o">&amp;&amp;</span>
      <span class="kc">null</span> <span class="o">!==</span> <span class="p">(</span><span class="nx">n</span> <span class="o">=</span> <span class="nf">getCookie</span><span class="p">(</span><span class="dl">"</span><span class="s2">_lang</span><span class="dl">"</span><span class="p">))</span> <span class="o">&amp;&amp;</span>
      <span class="nx">n</span> <span class="o">==</span> <span class="dl">"</span><span class="s2">en</span><span class="dl">"</span> <span class="o">&amp;&amp;</span>
      <span class="nb">window</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nf">replace</span><span class="p">(</span><span class="dl">"</span><span class="s2">/</span><span class="dl">"</span><span class="p">);</span>
  <span class="p">}.</span><span class="nf">call</span><span class="p">(</span><span class="k">this</span><span class="p">));</span>
</code></pre></div></div>

<p>Easy right? To avoid nagging from the browser we store two cookies one with the SameSite notation and one without. They both have the same information and we grab the information from the available cookie.</p>

<p>Now go play with your multilingual site. Ours is <a href="https://arpedon.com">arpedon.com</a>.</p>
<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1">
      <p><a href="https://www.sylvaindurand.org/making-jekyll-multilingual/">https://www.sylvaindurand.org/making-jekyll-multilingual/</a> <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:2">
      <p><a href="https://matthewlincoln.net/2020/03/01/multilingual-jekyll.html">https://matthewlincoln.net/2020/03/01/multilingual-jekyll.html</a> <a href="#fnref:2" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:3">
      <p><a href="https://forestry.io/blog/creating-a-multilingual-blog-with-jekyll/">https://forestry.io/blog/creating-a-multilingual-blog-with-jekyll/</a> <a href="#fnref:3" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:4">
      <p><a href="https://github.com/kurtsson/jekyll-multiple-languages-plugin">https://github.com/kurtsson/jekyll-multiple-languages-plugin</a> <a href="#fnref:4" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:5">
      <p><a href="https://medium.com/@desfocado/how-to-make-jekyll-multilingual-c13e74c18f1c">https://medium.com/@desfocado/how-to-make-jekyll-multilingual-c13e74c18f1c</a> <a href="#fnref:5" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Tasos Sangiotis</name></author><category term="guide" /><category term="jekyll" /><summary type="html"><![CDATA[Babel was hard enough. A GDPR compliant multilingual language selector.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/images/multilingual-jekyll/around_the_world.png" /><media:content medium="image" url="https://tsangiotis.com/images/multilingual-jekyll/around_the_world.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Email gripes</title><link href="https://tsangiotis.com/email-gripes/" rel="alternate" type="text/html" title="Email gripes" /><published>2020-06-29T00:00:00+00:00</published><updated>2020-06-29T00:00:00+00:00</updated><id>https://tsangiotis.com/email-gripes</id><content type="html" xml:base="https://tsangiotis.com/email-gripes/"><![CDATA[<p>It all started with <a href="https://hey.com">HEY</a>. There was so much buzz around it. It is made from the company behind Basecamp 3. I use Basecamp and it is great so I decided to try it.</p>

<p><img src="/images/email-gripes/email-gripes-featured.JPG" alt="HEY - Fastmail doodle" /></p>

<p>It offers a two week trial which is more than enough to judge if an email service for $100/year is worth the trouble.</p>

<!--more-->

<div class="postit-note">
    <p><strong>Warning:</strong> This will be very boring for most. My personal email setup is a dull matter. It might however be useful for some as it solved some problems for me.</p>
    <p>I also include a mini review of <a href="https://basecamp.com">Basecamp</a>'s <a href="https://hey.com">HEY mail service</a>. It wasn't for me in it's whole but it made me think how I use email and triggered a change. This is powerful and I recommend you try it for your self.</p> 
</div>

<p>My initial impressions were great.</p>

<p><strong>I loved The Feed and The Paper Trail sections</strong>. This distinction seems to solve the multiple folders and elaborate rules that dictated my inbox. Just enough delegation.</p>

<p><strong>Amazing interface</strong>. It is fast and easy to use. No hidden stuff and not many options.</p>

<p><strong>The screener is very original</strong>. Great idea and I don’t understand why anyone hasn’t thought of it. You greenlight only the people or services you want in your inbox.</p>

<p><strong>Merging and renaming email threads is awesome!</strong> I can see the potential there. Multiple threads for the same thing become one package.</p>

<p><strong>Focus &amp; Reply would be great</strong> if I could use it with my work address. Since HEY doesn’t support using your work address with it I haven’t tried.</p>

<p>HEY is an opinionated service. It is part of its charm but sometimes it causes some problems.</p>

<h2 id="fome">FOME</h2>

<p>The fear of missing emails. Separating into three different boxes, <a href="https://hey.com/features/the-imbox/">The Imbox</a>, The Feed and <a href="https://hey.com/features/paper-trail/">The Paper Trail</a> is one of the greatest design choices on the service. It is minimal but at the same time enough.</p>

<p>The problem is that it is based on the email sender without the email context. You select what happens with all the emails from that sender. Myself, I need the receipt to go to the Paper Trail but the <em>“Your password has been changed act if this was not you”</em> notification to my Inbox. Sometimes this information comes from the same email address and I can’t blame the sender for that.</p>

<p>You can through all the Paper trail emails in your Imbox and triage them later but depending on the situation this might defeat the purpose.</p>

<p>This system made me anxious that I was missing email. This is the opposite than advertised calm effect where I should now check three Inboxes instead of one.</p>

<h2 id="yellow-pages">Yellow pages</h2>

<p>Contacts support is bellow basic. HEY supports only saving email information so you cannot use it as your main address book and there is no way to sync it with your main one. That leaves you with two options.</p>

<p>One is you can avoid dealing with contacts on HEY. This makes core features like the contacts page loose value. This happens because some people have more than one email address they use be it personal, professional and now a HEY trial. If you don’t cater to organize those, every email goes to a different contact for the same person so at the end you don’t have all of their emails organized.</p>

<p>Your other option is to maintain multiple contact systems. One that is the main one and syncs with your phone and another one for HEY. This is too much work for a service that costs $100/year.</p>

<h2 id="identity-crisis">Identity crisis</h2>

<p>HEY does not support other domains or a “send mail as…” identity feature as of right now.</p>

<p>This is scheduled to change but it will cost more and I cannot buy software with promise of support in the future.</p>

<h2 id="what-now">What now?</h2>

<p>Ok, this new email service isn’t for me. Why even bother?</p>

<p>The thing is I liked HEY’s approach. It is basically a framework for email. And this can be replicated.</p>

<p>At the same time I am always looking to avoid Gmail’s apps on anything but the web. They make advertisements look like normal emails on mobile. In a rush you open one of those and all of a sudden you look at a grocery store website instead of your emails.</p>

<p>I tried to setup Apple mail to work with Gmail but it is a nightmare because of their custom IMAP implementation.</p>

<p>I should be able to find something that both works and can fit my very basic in my opinion requirements.</p>

<h2 id="gotta-go-fast">Gotta go Fast</h2>

<p>So I signed up for a trial on <a href="https://ref.fm/u24239032">Fastmail</a>. The standard plan costs $3 per month or $30 for the year as I don’t need the custom domain support.</p>

<p>For that price it supports <a href="https://www.fastmail.com/help/receive/fetchotheremail.html">importing of my work email</a> and <a href="https://www.fastmail.com/help/send/identities.html">sending emails</a> from it.</p>

<p>I don’t fancy the iOS app but Fastmail supports open standards perfectly. It syncs with Apple mail via IMAP and it supports sending from my work address. Contacts and calendars also sync with iOS devices perfectly and setting this up was a breeze.</p>

<p>On the Windows desktop I use the web interface which is awesome and fast.</p>

<p>Already the experience is much better than Gmail for me.</p>

<h2 id="saying-hey-inside-fastmail">Saying HEY inside Fastmail</h2>

<p>Let’s get some features of HEY into Fastmail.</p>

<p>First <strong>The Feed</strong>. I need all newsletters to go to a specific IMAP folder.</p>

<p>Fastmail has support for very powerful filters. More powerful than Gmail.</p>

<p>HEY uses a list of senders that go to The Feed. As I mentioned this causes some problems and without the screener it would require a lot of work to make that list.</p>

<p>A smarter way is to filters for emails with the <code class="language-plaintext highlighter-rouge">Unsubsribe Header</code> and move those messages on the Feed folder on arrival. As a bonus, I set a 60 day purge policy for that folder to keep things neat. After two months. The News in Newsletter has expired.</p>

<p>We need to set exceptions though. Basecamp, Github and other services have an Unsubscribe header for notifications but I need them to go to my Inbox.</p>

<p>To combat that I add them to my contacts and to a <em>Notify</em> group. Then I exempt their emails from the filter and as a result they meet my Inbox.</p>

<p>For the <strong>Paper trail</strong> I created another folder. All receipts, travel and transactional emails I manually drop there.</p>

<p>Also I created a Later folder to put emails that I may take some time to respond to.</p>

<p>Now the inbox has the important emails I deal with at the present time. Any new emails come there and when I have time I triage them. This is very easy with all the newsletters out of the way.</p>

<hr />

<p>After a week I can say I like my workflow better.</p>

<p>Before dismissing HEY, keep in mind that it is a new product and many people love it. Expect it to grow into a practical alternative. I urge you to try HEY if you can. I believe its new take on email is worth exploring. It helped me reconsider how I deal with email.</p>

<p>If though you like open standards and traditional powerful email use <a href="https://ref.fm/u24239032">this link</a> to try Fastmail. <a href="https://ref.fm/u24239032">Using it will give you 10% off your first year</a> and will clip some cents from my bill.</p>

<p><strong>Update:</strong> Despite all of the above, <em>myself I paid for it</em>. I believe this new take should be supported and I want to watch it’s story evolve.</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Personal" /><category term="Opinion" /><category term="email" /><summary type="html"><![CDATA[It all started with HEY. There was so much buzz around it. It is made from the company behind Basecamp 3. I use Basecamp and it is great so I decided to try it. It offers a two week trial which is more than enough to judge if an email service for $100/year is worth the trouble.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/images/email-gripes/email-gripes-featured.JPG" /><media:content medium="image" url="https://tsangiotis.com/images/email-gripes/email-gripes-featured.JPG" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">5 Problems from Poor Lubrication</title><link href="https://tsangiotis.com/5-problems-from-poor-lubrication/" rel="alternate" type="text/html" title="5 Problems from Poor Lubrication" /><published>2020-04-15T00:00:00+00:00</published><updated>2020-04-15T00:00:00+00:00</updated><id>https://tsangiotis.com/5-problems-from-poor-lubrication</id><content type="html" xml:base="https://tsangiotis.com/5-problems-from-poor-lubrication/"><![CDATA[]]></content><author><name>Tasos Sangiotis</name></author><summary type="html"><![CDATA[]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Coronavirus &amp;amp; Chill</title><link href="https://tsangiotis.com/coronavirus-and-chill/" rel="alternate" type="text/html" title="Coronavirus &amp;amp; Chill" /><published>2020-03-17T00:00:00+00:00</published><updated>2020-03-17T00:00:00+00:00</updated><id>https://tsangiotis.com/coronavirus-and-chill</id><content type="html" xml:base="https://tsangiotis.com/coronavirus-and-chill/"><![CDATA[<p>One of the terrors of staying home for the coronavirus is the lack of outside leisure time.</p>

<p>You may work remotely by day if you can, but when the night comes you need something to accompany that whiskey, wine or beer glass. Don’t need to mention that alcohol in any other form is unacceptable.</p>

<p><img src="/images/coronavirus-and-chill/whiskey.jfif" alt="Whiskey" /></p>

<p>With that in mind I present the following books, movies and drinks, optimized for well… staying inside.</p>

<!--more-->

<p>I could use the money for buying masks and gloves so the books have Amazon affiliate links attached. Buy everything and make me rich, now you have all the time in the world to get your reading done.</p>

<h2 id="to-read">To Read</h2>

<table>
<tr>
<td width="30%" valign="top" align="center">
<a target="_blank" href="https://www.amazon.com/gp/product/0060882417/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0060882417&amp;linkCode=as2&amp;tag=tsangiotis-20&amp;linkId=813ee36337f39455c6aa2a8180b7c07c"><img border="0" src="https://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;MarketPlace=US&amp;ASIN=0060882417&amp;ServiceVersion=20070822&amp;ID=AsinImage&amp;WS=1&amp;Format=_SL160_&amp;tag=tsangiotis-20" /></a><img src="//ir-na.amazon-adsystem.com/e/ir?t=tsangiotis-20&amp;l=am2&amp;o=1&amp;a=0060882417" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</td>
<td width="70%" valign="top">
<a target="_blank" href="https://www.amazon.com/gp/product/0060882417/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0060882417&amp;linkCode=as2&amp;tag=tsangiotis-20&amp;linkId=f4de571c35caba5b0e1f2c8f971d355e"><h3>747: Creating the World's First Jumbo Jet and Other Adventures from a Life in Aviation – Joe Sutter, Jay Spenser</h3></a><img src="//ir-na.amazon-adsystem.com/e/ir?t=tsangiotis-20&amp;l=am2&amp;o=1&amp;a=0060882417" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

<p>You will miss airplanes and travel for a bit. Everyone's favorite part of the trip.</p>

<p>The antidote is the thrilling story behind "the Queen of the Skies" the <em>Boeing 747</em> as told by Joe Sutter, one of the most celebrated engineers of the twentieth century, who spearheaded its design and construction.</p>

<p>Almost everything about the 747 was unprecedented and his team were not the most star spangled awesome people at Boeing. Those were chasing the supersonic dream. Guess who stands today at airports watching the plane <strong>they</strong> designed to take off and land countless times everyday.</p>

<p>If you are a maker, an aviation enthusiast or you like stories that leave a mark, there is a book for you.</p>
</td>
</tr>
<tr>
<td width="30%" valign="top" align="center">
<a target="_blank" href="https://www.amazon.com/gp/product/1933372001/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1933372001&amp;linkCode=as2&amp;tag=tsangiotis-20&amp;linkId=b55027722c40e61e2a2d07dd19ff5554"><img border="0" src="https://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;MarketPlace=US&amp;ASIN=1933372001&amp;ServiceVersion=20070822&amp;ID=AsinImage&amp;WS=1&amp;Format=_SL160_&amp;tag=tsangiotis-20" /></a><img src="https://ir-na.amazon-adsystem.com/e/ir?t=tsangiotis-20&amp;l=am2&amp;o=1&amp;a=1933372001" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</td>
<td width="70%" valign="top">
<a target="_blank" href="https://www.amazon.com/gp/product/1933372001/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1933372001&amp;linkCode=as2&amp;tag=tsangiotis-20&amp;linkId=3cc8ba042b95d46b282cf1662a212a1b"><h3>Days of Abandonment – Elena Ferrante</h3></a><img src="//ir-na.amazon-adsystem.com/e/ir?t=tsangiotis-20&amp;l=am2&amp;o=1&amp;a=1933372001" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

<p>This book I read in a day.</p>

<p>It is the story of a woman's descent into devastating emptiness and madness after being abandoned by her husband with two young children to care for. She feels trapped like you do those days. It is a fitting book.</p>

<p>Also there is a conspiracy involving the author of the book. Elena Ferrante is a pseudonym. Googling will help you pass the time</p>
</td>
</tr>
<tr>
<td width="30%" valign="top" align="center">
<a target="_blank" href="https://www.amazon.com/gp/product/B01FEK8J94/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B01FEK8J94&amp;linkCode=as2&amp;tag=tsangiotis-20&amp;linkId=2deefaa3a08b554b54b82b49d729d4f3"><img border="0" src="https://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;MarketPlace=US&amp;ASIN=B01FEK8J94&amp;ServiceVersion=20070822&amp;ID=AsinImage&amp;WS=1&amp;Format=_SL160_&amp;tag=tsangiotis-20" /></a><img src="//ir-na.amazon-adsystem.com/e/ir?t=tsangiotis-20&amp;l=am2&amp;o=1&amp;a=B01FEK8J94" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</td>
<td width="70%" valign="top">
<a target="_blank" href="https://www.amazon.com/gp/product/B01FEK8J94/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B01FEK8J94&amp;linkCode=as2&amp;tag=tsangiotis-20&amp;linkId=cbf8ffef81a64004083e82d4e44f4e11"><h3>Atlas Shrugged – Ayn Rand</h3></a><img src="//ir-na.amazon-adsystem.com/e/ir?t=tsangiotis-20&amp;l=am2&amp;o=1&amp;a=B01FEK8J94" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

<p>The collapse of society is not upon us but the situation draws similarities.</p>

<p>In this big fat book that can get you through the pandemic, Ayn Rand tries to communicate her theory of Objectivism. It expresses the advocacy of reason, individualism, and capitalism, and depicts what Rand saw to be the failures of governmental coercion.</p>

<p>Some people treat her words like gospel. Others say she is a complete asshole. This ensures that you will not regret reading this book.</p>

<p>There is a 3 part movie based on this book. Complete garbage. Don't even try.</p>
</td>
</tr>
<tr>
<td width="30%" valign="top" align="center">
<a target="_blank" href="https://www.amazon.com/gp/product/1847497829/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1847497829&amp;linkCode=as2&amp;tag=tsangiotis-20&amp;linkId=e3857e44f3434bae2a5bdf6c0beaedeb"><img border="0" src="https://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;MarketPlace=US&amp;ASIN=1847497829&amp;ServiceVersion=20070822&amp;ID=AsinImage&amp;WS=1&amp;Format=_SL160_&amp;tag=tsangiotis-20" /></a><img src="//ir-na.amazon-adsystem.com/e/ir?t=tsangiotis-20&amp;l=am2&amp;o=1&amp;a=1847497829" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</td>
<td width="70%" valign="top">
<a target="_blank" href="https://www.amazon.com/gp/product/1847497829/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1847497829&amp;linkCode=as2&amp;tag=tsangiotis-20&amp;linkId=6bc21c880adb7d77d94d2c57c678e2b9"><h3>The Master and Margarita – Mikhail Bulgakov</h3></a><img src="//ir-na.amazon-adsystem.com/e/ir?t=tsangiotis-20&amp;l=am2&amp;o=1&amp;a=1847497829" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

<p>This is a contender for your favorite book price.</p>

<p>The devil meddles with mortals and performs magic tricks, a love story gets told in a psych ward, witches, Jesus and Pilatus have weird conversations.</p>

<p>Some people think of this as the best Rusian novel of the 20th century.</p>

<p>There are even <a href="https:///cr.middlebury.edu/public/russian/Bulgakov/public_html/">supporting guides</a> for this book.</p>

</td>
</tr>
</table>

<h2 id="to-watch">To watch</h2>

<p>I will not get into the details. Don’t want to spoil anything.</p>

<table>
<tr>
<td width="40%" valign="top" align="center">
<img src="/images/coronavirus-and-chill/no_country_for_old_men.jpg" />
</td>
<td width="60%" valign="top">
<h3>No country for old men – 2007</h3>
<p>The best movie yet from the Coen brothers.</p>
</td>
</tr>
<tr>
<td width="40%" valign="top" align="center">
<img src="/images/coronavirus-and-chill/true-grit.jpg" />
</td>
<td width="60%" valign="top">
<h3>True Grit – 2010</h3>
<p>That girl is awesome!</p>
</td>
</tr>
<tr>
<td width="40%" valign="top" align="center">
<img src="/images/coronavirus-and-chill/django-unchained.jpg" />
</td>
<td width="60%" valign="top">
<h3>Django Unchained – 2012</h3>
<p>Ultimate action, romance and revenge.</p>
</td>
</tr>
<tr>
<td width="40%" valign="top" align="center">
<img src="/images/coronavirus-and-chill/moonlight.jpg" />
</td>
<td width="60%" valign="top">
<h3>Moonlight – 2016</h3>
<p>This movie I haven't seen. I really want to. But I can vouch for it cause I made the Pollo a la Plancha from the movie and it was delicious.</p>
</td>
</tr>
</table>

<h2 id="to-drink">To drink</h2>

<p>Alcohol kills the virus. Bad alcohol kills the mood.</p>

<p>This is the good stuff.</p>

<table>
<tr>
<td width="30%" valign="top" align="center">
<img src="/images/coronavirus-and-chill/Bruichladdich-Classic-Laddie-700ml.png" style="max-height: 160px;" />
</td>
<td width="70%" valign="top">
<h3>Bruichladdich – The classic laddie</h3>

<p>That single malt whiskey sparked a whole trip to Scotland for me and my folks.</p>

<p>It is smooth but strong and kinda fruity. Drink with a dash of cold water. It makes its scent stronger.</p>

<p>If you have the cash, try the <em>Black Art</em> from the same distillery.</p>
</td>
</tr>
<tr>
<td width="30%" valign="top" align="center">
<img src="/images/coronavirus-and-chill/monkey-shoulder-blended-scotch-whisky.jpg" style="max-height: 160px;" />
</td>
<td width="70%" valign="top">
<h3>Monkey Shoulder</h3>

<p>This was a very welcome Christmas gift. Best blend I ever had.</p>

<p>Again this one is smooth but it packs a punch. The spicy flavor is a treat</p>

<p>According to the Monkey Shoulder website: <em>"Some say it tastes just like riding bareback on the wild moors of Scotland with a flame haired maiden on Christmas morning. Others agree it tastes like 007 wearing a tuxedo wetsuit."</em> This is whisky to be enjoyed.</p>
</td>
</tr>
<tr>
<td width="30%" valign="top" align="center">
<img src="/images/coronavirus-and-chill/BARDA-PINOT-NOIR-2018.png" style="max-height: 160px;" />
</td>
<td width="70%" valign="top">
<h3>BARDA Pinot Noir 2018 - Bodega Chacra</h3>
<p>I didn't know Patagonia makes wines but apparently they do and they do it great for Pinot Noir.</p>

<p>I know because I generally dislike the variety but this one I loved. Usually that means something. So go try it!</p>
</td>
</tr>
</table>

<p>If things get worse I might come back with more stuff.</p>

<p>Until then stay inside and flip a page or two.</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Short" /><category term="Movies" /><category term="Music" /><category term="Books" /><category term="Corona virus" /><summary type="html"><![CDATA[Books, movies and alcohol]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Prepping for a Lunar Eclipse</title><link href="https://tsangiotis.com/a-lunar-eclipse/" rel="alternate" type="text/html" title="Prepping for a Lunar Eclipse" /><published>2018-08-10T00:00:00+00:00</published><updated>2018-08-10T00:00:00+00:00</updated><id>https://tsangiotis.com/a-lunar-eclipse</id><content type="html" xml:base="https://tsangiotis.com/a-lunar-eclipse/"><![CDATA[<p>Just a week before my trip to Sifnos I discovered that a Total Lunar eclipse would take place on my second day there. So I planed to take a picture. Or two. Probably around 40. You will see how I got to this number, how I planned this shoot and how everything was thrown away.</p>

<p>However the research and tools used may prove useful to other people.</p>

<!--more-->

<p><em>All pictures in this post are mine unless noted otherwise.</em></p>

<p>So, the eclipse was on July 27, 2018 from 21.30 to 24.30 UTC+3.</p>

<p>Total Lunar eclipses are also called Blood Moons because of the Reddish tinge the full moon takes on when fully eclipsed. Additionally the moon will be at its apogee, which is the farthest point of its orbit from the earth. This means that the moon will be kinda smaller than usual.</p>

<p>In order to capture this one time event with this unique combination of variables a plan must be employed.</p>

<h2 id="why-a-plan">Why a plan?</h2>

<p>Isn’t photography a thing you do for the joy of it? Why don’t you just go out and do it?</p>

<p>Photography is a process and processes when carried out by humans need to be practiced.</p>

<p>I don’t think Serena Williams goes out on the court and wing the racket with so much success without having perfected all her moves beforehand and even adjust her tactics on every match.</p>

<p>So no, you can’t just go out and do it just because you have a camera. Especially when working with constraints.</p>

<p>Same goes for everything. Practice and preparation are the only thing that make perfect.</p>

<h2 id="location">Location</h2>

<p>When you say to the group of friends that you are visiting a Greek island with, that you plan to spend almost the entirety of the Saturday night on taking pictures of the night sky they wont be as excited as you.</p>

<p>You could go alone to take pictures of landscapes in the middle of the night. That does not mean it is a good idea though. Even if you don’t see your self missing a step in the night at a bad location, thieves love to steal from tourists especially when those tourists carry big black cameras.</p>

<p>Some of my friends are photography and astronomy aficionados. So there could be a following but even these guys don’t want to fuck around behind a dude that runs around testing locations.</p>

<p>Things to consider:</p>

<h3 id="1-where-is-my-moon">1. Where is my moon</h3>

<p>Here is the data from the very useful MoonCalc.org website.</p>

<figure>
  <img src="/images/a-lunar-eclipse/Trail.PNG" alt="mooncalc.org" style="width:100%" />
  <figcaption>Orange: Moon Rise, Yellow: Moon Position, Red: Moon Set</figcaption>
</figure>

<p>There you can also find the moon elevation angle for the particular location. That gives the angle between the surface and the moon with the location as the origin point. This will be useful.</p>

<p>As we can observe the moon will be better portrayed from a location at the South-East of the island. Another thing to keep in mind, is that the moon alone cannot be the only subject. I have neither the equipment or the interest to get the moon to look interesting in solitude. So we need a foreground.</p>

<h3 id="2-foreground">2. Foreground</h3>

<h4 id="epta-martyres--sifnos-castle">Epta Martyres - Sifnos Castle</h4>

<p>I’ve been to Sifnos once before. I’ve been on the internet too. The small church of the Seven Martyrs is one of the islands most beautiful attractions.</p>

<p><img src="/images/a-lunar-eclipse/dsc_6758-1.jpg" alt="DSC_6758 (1).jpg" /></p>

<p>However this small church looks great from above and to shoot for the moon you need to look up (pun intended).</p>

<figure>
  <img src="/images/a-lunar-eclipse/sifnos-epta-martyres-8.jpg" alt="Seven Martyrs" style="width:100%" />
  <figcaption>Photo from Google Searcht</figcaption>
</figure>

<p>From a lower angle this is the best one can do. But it obstructs almost everything in the desired direction and the interesting part of the image is gone. One must stand on a high point in the middle of the water to succeed. This can only happen with a high image quality drone or a boat. Even if you found a drone like that, the things you have to do to fly it legally in this situation need at least a month of preparation. But you don’t care about that. What you care about is that the location is busted. !</p>

<p><img src="/images/a-lunar-eclipse/inkedtrail_li.jpg" alt="InkedTrail_LI.jpg" /></p>

<h4 id="panagia-chrysopigi">Panagia Chrysopigi</h4>

<p>Beaten by the above realization I researched Sifnos some more and shought out for the place where people go to get hitched. These locations are most of the times pretty photogenic. I was not disappointed. The church of Panagia Chrysopigi was like it was designed for moon watching. Just look at that image!</p>

<p><img src="/images/a-lunar-eclipse/dsc_7178.jpg" alt="DSC_7178.jpg" /></p>

<p>The stairs form a leading line to the church and there is enough space to watch the moon get some of that eclipse action</p>

<p>At this point I must note that I am not a church hunter but it seems appropriate on an island with <a href="https:///www.touristorama.com/sifnos_oi_ekklisies_tis-01453">350 of them churches</a>.</p>

<p>Also there is a tavern on the beach nearby so food and alcohol can join the game.</p>

<h2 id="gear">Gear</h2>

<p>Camera gear is usually beneath me. In that case though I found some really convenient things.</p>

<p>I have two cameras available.</p>

<ul>
  <li>Nikon D7100</li>
  <li>Sony RX100 II</li>
</ul>

<p>These days I use almost exclusively the RX100. So much that I sold all my Canon DSLR gear. It is awesome and fits in my pocket. This could be the camera for this shoot as there will be a tripod and I won’t have to worry about high ISO performance.</p>

<p>Though the Nikon recently found its way in my hands. It has a very highly praised sensor and an integrated intervalometer. It is considerably heavier but the intervalometer won me over.</p>

<p>I have the following lenses for the Nikon:</p>

<ul>
  <li>Nikon 35mm f1.8 DX</li>
  <li>Nikon 18-140mm f3.5-5.6</li>
</ul>

<p>Nikon 35mm is the better lens and while 18-140 is convenient, it is crappy quality wise and heavy. With a viewing angle of 44° the 35mm might be suitable for that.</p>

<p>I tried to find an easy way to visualize this on software but it proved annoyingly difficult. If anyone knows how to draw precise angles on Photoshop or other free/cheaply priced software, contact me.</p>

<p>Using my low tech tools for simulating the view:</p>

<p><img src="/images/a-lunar-eclipse/IMG_5202.JPG" alt="" /></p>

<p>We can see the camera positioned so that a straight line can be formed using the stairs. The dots at the lower right represent the positions of the moon taking into consideration the altitude angle of the moon.</p>

<p>The moon will have a maximum altitude angle of 32°. With a 44° angle lens we should be safe to capture the event in its entirety without moving the camera with some reservations for the short dimention of the frame (assuming the orientation of the camera is set to landscape).</p>

<p>Yawing the camera to the left we get the church. and almost all the dots. The pitch angle will be adjusted on site and will frankly be the only thing to be messed around at shooting time.</p>

<h2 id="composition">Composition</h2>

<p>So far we have not talked the most important thing of all. Composition.</p>

<p>Documenting that a Lunar Eclipse happened is a job for scientists of the field. For me it has to be something interesting and beautiful.</p>

<p>I researched images of lunar eclipses and while I’d love to do something like the one bellow, the moon will be much smaller.</p>

<figure>
  <img src="/images/a-lunar-eclipse/epic-scene.jpg" alt="Poseidon Temple" style="width:100%" />
  <figcaption>Image found in a New Yorker article</figcaption>
</figure>

<p>Another option is this making a trail. This is quite a leap from my style of picture taking and again it is plainly documenting the event. Also it would require quite a bit of post processing which I am not a big fan of.</p>

<figure>
  <img src="/images/a-lunar-eclipse/trail1.jpg" alt="Moon Trail" style="width:100%" />
  <figcaption>Image by Suzanne Mathia</figcaption>
</figure>

<p>However I decided to do that and just select the most epic of the pictures. I decided to use the lazy approache where I would set the camera on the tripod with the intervalometer taking a picture every 5 minutes while I drink ouzo with the gang on the beach. The result will be around 40 pictures to choose from.</p>

<h2 id="on-site">On site</h2>

<p>We arrived on site about an hour earlier. I still had not thought of any composition except the post-card-like church with the moon over it. I was not very fond of it though as the moon was to be small and might loose its significance.</p>

<p>I was all about portraits of friends these days especially of my friend Eva and her beautiful eyes.</p>

<p>So when the moon creeped in and Eva asked for a portrait I throwed away my so so composition and we pretty fast made this one just before the blue sky was gone. I am probably making a print out of this one.</p>

<p><img src="/images/a-lunar-eclipse/dsc_7157-edit.jpg" alt="DSC_7157-Edit.jpg" /></p>

<h2 id="conclusions">Conclusions</h2>

<p>After that I tried to make the shot I originally planned. However I didn’t quite like that picture so it will never see the light of the world wide web.</p>

<p>Does this mean the plan was a total waste of time?</p>

<p>Personally I don’t believe it was. It helped me have the right lens and be on the perfect location at the right time.</p>

<p>The final result was not something I anticipated days before shooting but we got there fast with no camera fidling. A fun experience for everyone involved.</p>

<p>So the takeout is: Plan but don’t obsess.</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Photography" /><category term="Travel" /><category term="Portraiture" /><category term="Travel" /><category term="Summer" /><category term="Greece" /><category term="great" /><summary type="html"><![CDATA[Valuable information on how to creep out future moon dwellers.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/dsc_7157-edit.jpg" /><media:content medium="image" url="https://tsangiotis.com/dsc_7157-edit.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Open thy house</title><link href="https://tsangiotis.com/open-thy-house/" rel="alternate" type="text/html" title="Open thy house" /><published>2017-04-06T00:00:00+00:00</published><updated>2017-04-06T00:00:00+00:00</updated><id>https://tsangiotis.com/open-thy-house</id><content type="html" xml:base="https://tsangiotis.com/open-thy-house/"><![CDATA[<p>As I rise above the ground somewhere in the centre of Athens, my phone starts chiming hard. It’s the third call from Dimitra reminding me once again that I am late. I figure it is time to answer.</p>

<blockquote>
  <p>“Morning! I am steps away… I just need to find the entrance.”</p>

  <p>“Hurry up! It’s almost our turn at the queue”, she mumbles.</p>
</blockquote>

<p>It is the fourth year that the Open House project takes place in Athens. Open House is an institution for the promotion of architecture. The public is kindly invited to explore and understand the value of architecture and naturally one must respond to such invitation. Sunday’s adventure involves exploring private and public spaces through Athens that participate in the initiative with architectural tours. Hooray!</p>

<!--more-->

<p>So here I am. A guy who teases his architect friends for not being <em>real</em> engineers in a ipso facto architectural event wandering why it seems like he is heading to a building he ignores every time he comes around. It is the yellow building by the Panepistimio metro station which turns out to be the Ralli residence.</p>

<p><img src="/images/open-thy-house/dim-ralli.jpg" alt="" /></p>

<p>The residence is one of the really few architectural samples from the Ottonian period. The land was bought from Stamatis Kleanthis, a very famous architect in 1835. Kleanthis was to incorporate the land in his urban plan for Athens. Athens and urban planning don’t go well together so the land was sold to the Soutzos family. The family had Kleanthis build a two story building and lived there until Dimitrios Rallis, the Greek politician and prime minister, acquired the residence.</p>

<table style="width:100%">
  <tr>
    <td style="width:50%"><a href="/images/open-thy-house/group1/1.jpg"><img src="/images/open-thy-house/group1/1.jpg" /></a></td>
    <td style="width:50%"><a href="/images/open-thy-house/group1/2.jpg"><img src="/images/open-thy-house/group1/2.jpg" /></a></td>
  </tr>
</table>

<p>After that, the residence changed owners but the full list could not be reliably confirmed. At a time it hosted a greengrocer’s and later occupied by anarchists who painted it completely black. Fortunately no permanent damage was made. Now the building is considered a landmark and it is used as office space for the insurance company Eurolife ERB.</p>

<p>If you warm up with a personality like Rallis, the library of Aristotle Onassis seems fitting. Onassis was a legend. He amassed the world’s largest privately owned shipping fleet and was one of the world’s richest and most famous men. He always stayed classy and was always connected with very important women. For starters he married Athina Mary Livanos, a great shipowners daughter, had an affair with Maria Callas and finally married to the widow of late American President John F. Kennedy. Given all that, it is understandable that the line to the library bearing the man’s name was almost an hour long.</p>

<p><img src="/images/open-thy-house/IMG_0067.jpg" alt="" /></p>

<blockquote>
  <p>The Hellenic Library of the Onassis Foundation is the library that was acquired by the Onassis Foundation and includes part of the Konstantinos Sp. Staikos’ book collection. It is housed in the neoclassical building at 56 Amalias Avenue Plaka, Athens, Greece.</p>

  <p>This wealth of books belongs to Hellenism and to those who wish to know more about the contribution of Greek thought to the global scene.</p>
</blockquote>

<p>Shocking, dear reader. The collection inside is not the collection of Aristotle Onassis. How deceitful and not exactly the fun you would expect from reviewing Onassis taste in books. Grab a torch and queue the violence!</p>

<p>Listening the guide I realise that, at least it is still a famous book collection. I hide my imaginary tools of terror and along.</p>

<p><img src="/images/open-thy-house/IMG_0148.jpg" alt="" /></p>

<p>The one who compiled the 3500 book collection residing in the building is none other than Konstantinos Staikos. He was an architect and book historian so the story remains interesting though I still can’t forget the treason. The space was designed by Staikos himself and consists of three interconnected spaces.</p>

<p>The whole floor has that old money feeling you get when you come across well aged oak furniture and big chandeliers. Walls are decorated with carefully selected paintings that are simple yet tasteful.</p>

<table style="width:100%">
  <tr>
    <th rowspan="3" style="width:70%"><a href="/images/open-thy-house/group2/1.jpg"><img src="/images/open-thy-house/group2/1.jpg" /></a></th>
    <td style="width:30%"><a href="/images/open-thy-house/group2/2.jpg"><img src="/images/open-thy-house/group2/2.jpg" /></a></td>
  </tr>
  <tr>
  	<td style="width:30%"><a href="/images/open-thy-house/group2/3.jpg"><img src="/images/open-thy-house/group2/3.jpg" /></a></td>
  </tr>
  <tr>
  	<td style="width:30%"><a href="/images/open-thy-house/group2/4.jpg"><img src="/images/open-thy-house/group2/4.jpg" /></a></td>
  </tr>
</table>

<p>In the middle of the library, sits still the piano that Maria Callas used to play in the famous yacht “Christina” of Aristotle Onassis. This is history people!</p>

<p>Behind the piano sits <em>The New Political Constitution of the Inhabitants of Roumeli, Asia Minor, the Islands of the Aegean and the Principalities of Moldavia and Wallachia</em> that Rigas Feraios made. He was a really active guy who wanted to unite Balkans against the Ottoman empire through his works and this was his biggest one.</p>

<table style="width:100%">
  <tr>
    <td style="width:50%"><a href="/images/open-thy-house/group3/1.png"><img src="/images/open-thy-house/group3/1.png" /></a></td>
    <td style="width:50%"><a href="/images/open-thy-house/group3/2.jpg"><img src="/images/open-thy-house/group3/2.jpg" /></a></td>
  </tr>
</table>

<p>With all those inspiring personalities coexisting in one place one could feel overwhelmed. For me it is similar to my favourite movies. One excitement after the other.</p>

<p>What? This is how I relax!</p>

<p>I also relax with food and alcohol. Neglecting those things it is a beginner’s mistake in Havinggoodtimeland that will get you nowhere pleasant. But like amateurs our fellowship is off to a final destination before lunch.</p>

<p>The word was out for an apartment that was open during the project. The website described it as a “modern vintage blend” apartment. That meant a renovated 70s apartment that has kept some of its old elements. Even for hungry me, that is intriguing. That me however is not ready to experience the slowest queue of all times.</p>

<p><img src="/images/open-thy-house/IMG_0191.jpg" alt="" /></p>

<p>I argue for an escape but a kind gentleman explains that this is his second time visiting. If someone goes through this nerve-wracking thing twice and it is his choice he is either mad or the apartment compensates for the queue somehow.</p>

<p>So we wait and wait and eventually we climb the holy staircase to the second flour. We pass the doorstep and we are welcomed by the architect herself. I can’t help but feel like The Chosen One in the renowned Matrix Reloaded scene when I realise that others have met The Architect before me. But so be it.</p>

<p><img src="/images/open-thy-house/2b.jpg" alt="" /></p>

<p>The house is amazing and ingeniously designed. It is a blend of recent times with designs ranging from the 70s to today and full of practical choices. I am not an architect but I know what I like.</p>

<p>Sadly, photography is forbidden in that realm but hey, this is the internet. Check out the apartment on <a href="https:///archivirus.com/c1/p97/the-vintage-modern-blend-apartment">the architect’s webpage</a>.</p>

<p>While you do that imagine me washing down Mexican dishes with Margaritas. It is realistic and funny at the same time.</p>

<hr />

<p><em>The pictures of Maria Calla’s piano were shamelessly snatched from a web search.</em></p>

<p><em>Special thanks to <a href="https://www.instagram.com/angelopantazis/">Angelos</a>, <a href="https://www.instagram.com/dimitra1607/">Dimitra</a> and <a href="https://www.instagram.com/vivipap/">Vivi</a> for the company!</em></p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Log" /><category term="Photography" /><category term="Architecture" /><category term="Events" /><category term="great" /><summary type="html"><![CDATA[Random people decided for some reason that their house is a public place for a day. Other random people apparently read a lot about it.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/IMG_0120.jpg" /><media:content medium="image" url="https://tsangiotis.com/IMG_0120.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">OspreyT Full Flight</title><link href="https://tsangiotis.com/osprey-t-full-flight/" rel="alternate" type="text/html" title="OspreyT Full Flight" /><published>2017-03-18T00:00:00+00:00</published><updated>2017-03-18T00:00:00+00:00</updated><id>https://tsangiotis.com/osprey-t-full-flight</id><content type="html" xml:base="https://tsangiotis.com/osprey-t-full-flight/"><![CDATA[]]></content><author><name>Tasos Sangiotis</name></author><summary type="html"><![CDATA[]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">OspreyT Quadplane Maiden Flight</title><link href="https://tsangiotis.com/osprey-t-quadplane-maiden-flight/" rel="alternate" type="text/html" title="OspreyT Quadplane Maiden Flight" /><published>2017-03-13T00:00:00+00:00</published><updated>2017-03-13T00:00:00+00:00</updated><id>https://tsangiotis.com/osprey-t-quadplane-maiden-flight</id><content type="html" xml:base="https://tsangiotis.com/osprey-t-quadplane-maiden-flight/"><![CDATA[]]></content><author><name>Tasos Sangiotis</name></author><summary type="html"><![CDATA[]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Focus advice</title><link href="https://tsangiotis.com/focus-advice/" rel="alternate" type="text/html" title="Focus advice" /><published>2017-03-08T00:00:00+00:00</published><updated>2017-03-08T00:00:00+00:00</updated><id>https://tsangiotis.com/focus-advice</id><content type="html" xml:base="https://tsangiotis.com/focus-advice/"><![CDATA[<p>I know this is exactly the time o’ clock that every doofus tries to submerge you in their wise minds by sharing a tip or two about productivity and life advice but bear with me. I read a couple of good posts doing exactly that from friends and I figured that I might as well throw my bullshit free brilliance out there.</p>

<p>I am powering through one of the most intense periods of my life so far. I have multiple high maintenance and difficult projects, none of which can be left behind. The world feels like a racetrack made of ice and I have to run, which I like. But if I slip things are going to get nasty. That means, efficiency is key and the hunt for that peak effectiveness has showed me some dos and don’ts.</p>

<!--more-->

<h2 id="don-t-read-too-much-stuff-like-this-online">Don’ t read too much stuff like this online</h2>

<p>It is probably a waste of time and you are as likely to follow this as you were to follow the previous identical article you read yesterday.</p>

<h2 id="day-in-day-out-in-small-bites">Day in, day out in small bites</h2>

<p>You can’ t finish your projects in a single day and you can’ t do random pieces of work. You have to play the long game.</p>

<p>Break every project into smaller tasks and every task into smaller bites. Then you can eat them one by one.</p>

<h2 id="schedule-every-freaking-thing">Schedule every freaking thing</h2>

<p>Use your calendar and set the time each thing is going to be done. If you are not going to make it, use your calendar and set the time each thing is going to be done. If you are always rescheduling do a better job scheduling.</p>

<h2 id="set-the-mission-for-the-day-and-do-the-mission">Set the mission for the day and do the mission.</h2>

<p>If something is not scheduled for today it is not happening. If something is scheduled and it is getting out of hand, know that you planed poorly and don’t sleep until it is done. Don’ t let things pile up ever.</p>

<h2 id="remove-distractions">Remove distractions</h2>

<p>Facebook, instagram, twitter, youtube, any other hip social outlet. Anything that is on there is far less important than the task at hand. Delete social apps from your phone and internet browsing.</p>

<p>The phone is for communication, not for skimming articles and silly pictures. use the computer for that on your downtime.</p>

<h2 id="simplify-simplify-simplify">Simplify, simplify, simplify</h2>

<p>Which can be summed up as simplify.</p>

<p>Prefer single tasking. In my experience many people who “multitask” are actually single tasking on the wrong task.</p>

<p>Personally I work better when things are as black and white as possible both on my personal and work matters. Maybe try that.</p>

<h2 id="say-no">Say no</h2>

<p>Here is a trick. The more you say no, the more people accept it. If you need time to finish the difficult things you challenged your self with, have the courage to say no to people and stuff.</p>

<p>Time is infinate but your deadlines are finite.</p>

<h2 id="don-t-say-no-every-time">Don’ t say no every time</h2>

<p>Work hard but make sure to party hard from time to time. Meet your friends, your better half, take a walk, catch up, work on a hobby… Anything!</p>

<p>Just do something else that relaxes you and preferably makes you go outside. If you sit all day, your back will thank you. Trust me.</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><category term="Short" /><category term="Productivity" /><summary type="html"><![CDATA[perispomeni.club was under attack from Chinese internet robots]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/leavemealone.jpeg" /><media:content medium="image" url="https://tsangiotis.com/leavemealone.jpeg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Surviving an attack from the Chinese</title><link href="https://tsangiotis.com/attacked-by-chinese-robots/" rel="alternate" type="text/html" title="Surviving an attack from the Chinese" /><published>2017-01-13T00:00:00+00:00</published><updated>2017-01-13T00:00:00+00:00</updated><id>https://tsangiotis.com/attacked-by-chinese-robots</id><content type="html" xml:base="https://tsangiotis.com/attacked-by-chinese-robots/"><![CDATA[<p>Among the ridiculous projects I have had out in the open, the most long running
one is called <a href="https:///perispomeni.club">perispomeni.club</a>.
It is a dead simple, tiny linux machine inspired by Paul Ford’s
<a href="https:///tilde.club">tilde.club</a>. People respectfully use together that machine
in their shared quest to learn and build awesome web pages.</p>

<p>However it was a surprise when one of the users sent me a private email with a
security concern.</p>

<!--more-->

<p>Here I must mention that the pattern you can spot when
reading this and my <a href="/a-pile-of-scam">previous post</a> is purely coincidental. I
will stop with the email fanfare, I promise. On with the email:</p>

<blockquote>
  <p><strong>From</strong> <a href="https:///perispomeni.club/~bob/">bob</a><br /> &gt;<strong>Subject:</strong> Strange connection or only my imagination?<br />
Hey Tasos<br />
I have noticed a very strange connection to your server from various ip address
which are also listed in block ip for previous abouse pages you should check:<br />
121.18.238.104<br />
59.63.188.3<br />
Both are from china, they connect to your server port on 22 but strangely they
do not show up as user.<br />
Cheers</p>
</blockquote>

<p>As one might notice, this is not good. I should dig in.</p>

<p>The worst case scenario is someone getting access to the root account of the
server. If that had already happened I would be better off nuking the server.</p>

<p>First I ran the <code class="language-plaintext highlighter-rouge">who</code> command to checkout if there are active sessions/users
which returned only my session/me. If root was among the online users, I would
possibly be in deep trouble. But everything is fine. Now let’s checkout if
root was online recently. The fact that bob saw these IPs connected at port 22
indicates ssh sessions. With the <code class="language-plaintext highlighter-rouge">last</code> command I can check out last logged in
users. If root was connected recently and did not bother to wipe out it’s
tracks, it will show up in the output.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ last
tsangiot pts/4        athedsl-399048.h Sun Jan  8 00:11   still logged in
tsangiot pts/3        snf-696309.vm.ok Sun Jan  8 00:09 - 00:12  (00:02)
tsangiot pts/2        athedsl-399048.h Sat Jan  7 23:29   still logged in
bob      pts/2        host17.186-125-6 Sat Jan  7 22:15 - 22:24  (00:09)
bob      pts/2        host17.186-125-6 Sat Jan  7 21:39 - 22:14  (00:35)
bob      pts/2        host17.186-125-6 Sat Jan  7 20:56 - 21:39  (00:42)
bob      pts/3        host17.186-125-6 Sat Jan  7 13:51 - 14:06  (00:15)
bob      pts/2        host70.186-125-4 Sat Jan  7 12:53 - 15:13  (02:19)
...
</code></pre></div></div>

<p>Only me and bob. Hi bob!</p>

<p>Ok now there is a chance the attacker wiped himself from the logs. If that is
the case, we are dealing with someone who managed to crack a <em>very</em> long password
and is not reckless. In that imaginary scenario, I would congratulate the
attacker before burning the house down.</p>

<p class="text-center"><i>*** cracking knuckles ***</i></p>

<p>I need to see which IP addresses are connected on the server and particularly
on port 22 to make sure I am alone on the VPS wasteland.</p>

<p>To do that I can run a long netstat command:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ netstat -tn 2&gt;/dev/null | grep :22 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head
</code></pre></div></div>

<p>These are multiple commands piped together. To break them down:</p>

<h3 id="1-netstat--tn-2devnull">1. netstat -tn 2&gt;/dev/null</h3>

<p>Uses <code class="language-plaintext highlighter-rouge">netstat</code> to list all network connections, ins and outs.</p>

<ol>
  <li>-n – Display numeric only, don’t resolve into name.</li>
  <li>-t – Display only TCP connections.</li>
</ol>

<h3 id="2-grep-22">2. grep :22</h3>

<p>Only display the IP address that connected to server on port 22.</p>

<h3 id="3-awk-print-5">3. awk ‘{print $5}’</h3>

<p>Uses <code class="language-plaintext highlighter-rouge">awk</code> to display the 5th field only.</p>

<h3 id="4-cut--d--f1">4. cut -d: -f1</h3>

<p>Uses <code class="language-plaintext highlighter-rouge">cut</code> to extract the content.</p>

<ol>
  <li>-d – Character immediately following the -d option is use as delimiter, default is tab.</li>
  <li>-f – Specifies a field list, separated by a delimiter.</li>
</ol>

<h3 id="5-sort--uniq--c--sort--nr">5. sort | uniq -c | sort -nr</h3>

<p>Sort the list, group it and sort it again in reverse order.</p>

<p><em>A more detailed explanation of this command lies
<a href="https://www.mkyong.com/linux/list-all-ip-addresses-connected-to-your-server/">here</a>.</em></p>

<p>Finally:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ netstat -tn 2&gt;/dev/null | grep :22 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head
1 hooray.my.ip.address
</code></pre></div></div>

<p>And yes I am alone here. Which means that even if someone else got access to
the server he/she is not here anymore.</p>

<p>Then it struck me that people are connected on port 22 even if they <em>try</em> to
login. They are not connected to the system but to pass through the ssh
authentication they have to connect somehow to the server. So in the event of a
bruteforce ssh attack there would be many attempts per minute to guess the
password of the root account.</p>

<p>Perispomeni is an Ubuntu server so login attempts are stored on
<code class="language-plaintext highlighter-rouge">/var/log/auth.log</code>. Let’s search that for the IPs in question.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo cat /var/log/auth.log|grep "121.18.238.104"
...
Jan  7 22:23:17 perispomeni sshd[3580]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=121.18.238.104  user=root
Jan  7 22:23:19 perispomeni sshd[3580]: Failed password for root from 121.18.238.104 port 36575 ssh2
Jan  7 22:23:25 perispomeni sshd[3580]: message repeated 2 times: [ Failed password for root from 121.18.238.104 port 36575 ssh2]
Jan  7 22:23:25 perispomeni sshd[3580]: Received disconnect from 121.18.238.104: 11:  [preauth]
Jan  7 22:23:25 perispomeni sshd[3580]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=121.18.238.104  user=root
</code></pre></div></div>

<p>Oh boy..</p>

<p>Ok it is clear that someone tries to brute force into the server. These are
failed login attempts not only on port 22 but all of them. I knew little about
this stuff when I first became the admin of that club but now I am wiser.
Now I am a man with the plan.</p>

<p>I can disable ssh login for the root user. However I have not assessed what this
means for my ability to troubleshoot stuff. I am afraid that if I mess
things up I would need the ability to login from root. There is probably a
solution involving the console on my VPS website but I have to investigate my
limitations there.</p>

<p>What I need right now is a mechanism where repeated failure to login would cause
a temporary lock of the attacker’s IP and enough failures would cause a permanent ban.</p>

<p>The tool for the job is called Fail2Ban. To configure Fail2Ban you should
follow the guide from <a href="https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-fail2ban-on-ubuntu-14-04">DigitalOcean</a>.
It is fairly easy and meets most of my criteria. I say most because it does not
provide instructions for a permanent ban.</p>

<p>A permanent ban in a dynamic IP address might be a problem but these things are
most of the times computers with static IP addresses. Even if they are not,
with my 26 users the chance of getting a duplicate address is pretty slim and
the remedy simple enough. Depending on your use case you should examine if this
is the right way to go for you. If you run a public website for example I think
it is not.</p>

<p>If one chooses to go down that road, he may stumble upon <a href="https:///stuffphilwrites.com/2013/03/permanently-ban-repeat-offenders-fail2ban/">Phil Hagen’ s</a>
solution. It is not the most elegant thing but it gets the job done.</p>

<p>In any case, this is how I found out about the Chinese attacking me.</p>

<p>Hey, <code class="language-plaintext highlighter-rouge">121.18.238.104</code>! If you read this, next time send Jet Lee.</p>

<p><em>P.S.:</em> If you’d like to join our server you can find a link on <a href="https:///perispomeni.club">perispomeni.club</a>.
If not you still can <a href="https://www.patreon.com/tsangiotis">become a Patron</a> to support the effort.</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Projects" /><category term="perispomeni.club" /><category term="Security" /><summary type="html"><![CDATA[perispomeni.club was under attack from Chinese internet robots]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/chappie.gif" /><media:content medium="image" url="https://tsangiotis.com/chappie.gif" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">A pile of scam</title><link href="https://tsangiotis.com/a-pile-of-scam/" rel="alternate" type="text/html" title="A pile of scam" /><published>2017-01-04T00:00:00+00:00</published><updated>2017-01-04T00:00:00+00:00</updated><id>https://tsangiotis.com/a-pile-of-scam</id><content type="html" xml:base="https://tsangiotis.com/a-pile-of-scam/"><![CDATA[<p>Some time ago I got that email.</p>

<blockquote>
  <p><strong>FROM:</strong> Francisco May<br /> &gt;<strong>TO:</strong> Tasos<br /> &gt;<strong>SUBJECT:</strong> Re: i await your urgent respond</p>

  <p>Hi Tasos,</p>

  <p>Compliment of the day, am happy to hear from you again, I am Ms. May Ann Francisco, a staff of the PNB — Philippine National Bank — Pasay City. here in the Philippines. <strong>I have a project for you, Is it confidential to discuss here? Well, my percentage is good for an offer but before I begin with you, are you comfortable being an international partner to a project?.</strong></p>

  <p>I will await for your response before I give you more vital details on this project. Your response to my email will be kept confidential.</p>

  <p>Regards,<br />
Ms. May Ann Francisco</p>
</blockquote>

<!--more-->

<p>May Ann knows my name and somehow it’ s not our first dance. Probably this is a legit offer but it would be wise to investigate. I am intrigued so I respond.</p>

<blockquote>
  <p><strong>FROM:</strong> Tasos<br /> &gt;<strong>TO:</strong> Francisco May<br /> &gt;<strong>SUBJECT:</strong> Re: i await your urgent respond</p>

  <p>Hi there May,</p>

  <p><strong>Being an international partner to a project is a lifelong dream of mine. As long as it is legal I am all for it!</strong></p>

  <p><strong>Please tell me more and what I have to do. Note that I can’t visit Pasay City for now so all our communications must be done through here.</strong></p>

  <p>Best regards,<br />
Tasos Sangiotis</p>
</blockquote>

<p>Here I have to mention that May has quite the email ettique. You know the guy in the open-source project mailing list who manages to completely ignore the reply button? Despite my best efforts to make our communications resemble 21st century civilised human interaction, May insisted on branching out onto new email threads so I let her be.</p>

<p>She asked that her information will remain private so please if you know her don’t tell her about what I just did. In the next email which was of course on a new thread she told me her plan. Someone who recently died, had around $16 milion in her bank and if I said I was a relative of the deceased I would be able to inherit all that. Of course after I inherit it, I will give May 60% of the sum but still I would end up with a lot of money.</p>

<p>May sent me many of her official documents in the span of our correspondence. I think she should just post them on instagram and get done with it.</p>

<p>As you notice, this is a one time opportunity. How can this be a scam email? Why did this even crossed my mind? May is a hard working mother I am sure. Also I always wanted to have a remote relative so I replied.</p>

<blockquote>
  <p><strong>FROM:</strong> Tasos</p>

  <p>No need to worry May, never gonna give you up, never gonna let you down.</p>

  <p>I would very much like to help you with that feat and it is very kind of you to offer me this opportunity. I understand that everything here is according to the law.</p>

  <p>For such money I am willing to go on and change my name. Should I go for that? It may be easier to convince your company. Just give me the diseased’ s name and I will come up with something to live the rest of my life by.</p>

  <p>I am eagerly awaiting for you response.<br />
Tasos</p>
</blockquote>

<p>To be fair I drew some insparation from Jame’s Veitch spam email series. I am not THAT original but I recon I fared ok for a one time thing. In most emails I thought I got too far with my excitement (see the rick rolling in the previous email) but you either do something all in or don’t do it at all.</p>

<p>May sure did it all in because these emails are huge. I probably have not read the big ones in full.</p>

<p>In any case the next requirement for May was that I can transfer large funds. If I had any experience with it the better. Also some paperwork was needed for a lawyer to make the Next of Kin for the deceased.</p>

<p>You see May still tries to gain my trust. She always tries to pro-actively calm me down by telling me that all is legal and that we will be rich. There is no reason for that May. I trust you completely. She said that I don’t need to travel to her side of the earth which got me a little sad but not so much that I couldn’t reply to May my golden nugget.</p>

<blockquote>
  <p><strong>FROM:</strong> Tasos</p>

  <p>Don’t worry, this is not my first rodeo Ann May Donna Francisco (i like your middle name, do you watch Suits?). I am fully committed and ready to make this to the end.</p>

  <p>I would like to celebrate this collaboration by meeting you and the attorney in person after all is finished. I always wanted to visit Hong Kong, so let’s do it there in 16 days when the transaction will be over and the three of us will be richer.</p>

  <p>Also can we get clear about the percentages?</p>

  <p>is it 60% for me and 40% for you with the attorney getting nothing or is it the other way around?</p>

  <p>P.S. what do you think about the name change idea?</p>

  <p>Yours,<br />
Tasos</p>
</blockquote>

<p>At this point I knew that she can go with whatever I go. I think she punishes me with longform email and branching threads but this is so worth it.</p>

<p>So she said I don’t need to change my name. This may compromise the procedure. What I have to do is tell her about my occupation and send her a copy of my official ID.</p>

<p>Here comes the funniest email in this conversation where I spit out a ton of data to poor but soon to be rich May:</p>

<blockquote>
  <p><strong>FROM:</strong> Tasos<br /></p>

  <p>I am a professional exotic animal hunter so money is not an issue but I could always use more.</p>

  <p>As I am on an exhibition, I dont have my id on me but you can find attached a handwritten copy with all the data you need.</p>

  <p>What are you going to do with your 60%?</p>

  <p>Regards,<br />
Tasos</p>

  <p><strong>Attachments:</strong> &gt;<img src="/images/a-pile-of-scam/id.jpg" alt="my id" /></p>
</blockquote>

<p>I thought I did poorly on providing the information that May needed. It crossed my mind that she may have lost trust in me but for all the wrong reasons. Even though I was anxious, I waited.</p>

<p>Strangely enough here comes May.</p>

<blockquote>
  <p><strong>FROM:</strong> Francisco May<br /></p>

  <p>Dear Tasos ,</p>

  <p>I have gotten your information and you are still required to send me the scan copy of your ID once you are done from the exhibition.<br />
…<br /> &gt;[various transaction information]<br />
…</p>

  <p>however you will be required to handle the expenses on your side, such as the cost of opening your account and having it activated with an opening balance. Actually for a person of your age and status I expect you to handle this issue of processing your account.
…</p>

  <p>Sincerely,<br /> &gt;<strong>Ms. Daiyu Huan</strong></p>
</blockquote>

<p>To which I replied:</p>

<blockquote>
  <p><strong>FROM:</strong> Tasos<br /></p>

  <p>That’s understandable May but wait a minute… Who is Daiyu Huan? Is there another person involved here?<br />
I thought it was the three of us. May, me and the lawer. That doesn’t look good.</p>
</blockquote>

<p>May did not loose time and came back to comfort me.</p>

<blockquote>
  <p><strong>FROM:</strong> Francisco May<br /></p>

  <p>Dear Tasos,<br />
Sorry for the signature, she is not involve, am not very good in typing email fast so my daughter helped me in typing this email because I need to send it fast to you so we can complete the deal on time.</p>

  <p>Kindly get back to me on my recent email to you and let me know your taught so we can proceed with this project.</p>

  <p>Regards,<br />
Ms. May Ann Francisco</p>
</blockquote>

<p>All was ok but I was concerned about the economics of the transaction. The mistake that May did was understandable but with so many people knowing I was concerned. The thing that baffled me the most was the high risk I was taking posing as someone’s next of kin. May could throw me under the bus anytime despite the good will she had demonstrated till that point. Long story sort, I started negotiating so I can secure myself and maybe get some more.</p>

<blockquote>
  <p><strong>FROM:</strong> Tasos<br /></p>

  <p>Oh, ok then. Please understand that with this kind of money one can’t be too careful. If I am confident she is trustworthy but maybe we should cut her in in our deal. I propose we each give her 5% of our cut.</p>

  <p>So the final percentage rundown is:<br />
May: 55%<br />
Tasos: 35%<br />
Daiyu: 10%<br />
Lawer: ?%</p>

  <p>Seeing that in written form I think I am getting too little for the risk. Hold on as I get my assistant to run the numbers to see if there is something we can do that is more fair.</p>

  <p>Regards, <br />
Tasos</p>
</blockquote>

<p>And a couple of hours later the analysis from my assistant was on it’s way.</p>

<blockquote>
  <p><strong>FROM:</strong> Tasos<br /></p>

  <p>Hello again May,</p>

  <p>Find attached the proposed percentages.</p>

  <p>Regards,<br />
Tasos</p>

  <p><strong>Attachments:</strong> &gt;<img src="/images/a-pile-of-scam/deal.jpg" alt="deal" /></p>
</blockquote>

<p>May completely ignored my hard work crunching down the numbers and urged me to contact some bank. At least now I have two relatives in other countries as May ended her last email with:</p>

<blockquote>
  <p><strong>FROM:</strong> Francisco May<br /></p>

  <p>[contact bank details]<br /></p>

  <p>… <strong>from now I will call you my Brother so we understand that both our trust in each other is that of blood brother and sister</strong>.</p>

  <p>Yours Sister,<br />
Ms. May Ann Francisco</p>
</blockquote>

<p>Ok, that was kind of extreme May but I’ll let it slide. Now what about my money?</p>

<blockquote>
  <p><strong>FROM:</strong> Tasos<br /></p>

  <p>I will do as you say sister.</p>

  <p>May we live long and prosper.</p>

  <p>But please tell me, did you have a look at the percentages I sent you?</p>
</blockquote>

<p>As you see, to win at this game one must be blunt.</p>

<blockquote>
  <p><strong>FROM:</strong> Francisco May<br />
Dear brother,</p>

  <p>Thank you for your email response. Yes I did, but we are going to work with my previous proported percentage plan as we do not need to make any adjustment to it, We both are only involve in this deal and I will settle the attorney once this deal is completed and that should not be a problem to you at this time.</p>

  <p>[contactbankcontactbankcontactbank rant]</p>

  <p>Your sister<br />
Ms. May Ann Francisco</p>
</blockquote>

<p>Ok, maybe I was not blunt enough but I was getting kind of bored because May was not fun. She was too goal oriented in my opinion but I got to give it to her. She was persistent.</p>

<blockquote>
  <p><strong>FROM:</strong> Francisco May<br /></p>

  <p>Dear brother, did you contact the bank yet? Please get back to me as soon as possible.</p>

  <p>Your sister,<br />
Ms. May Ann Francisco</p>
</blockquote>

<p>Fine, I will give her a chance.</p>

<blockquote>
  <p><strong>FROM:</strong> Tasos<br /></p>

  <p>Not yet sister. I was traveling and could not do that.</p>

  <p>I caught a very large tiger.</p>

  <p>Is everything OK with the bank? You sound concerned. Is it a “did I make it before you contact them because there is something wrong” or is it a “ have you contact them already because we are on a rush”?</p>

  <p>Please tell me which one of this is it.</p>

  <p>How is your daughter (my niece) by the way?</p>

  <p>Tasos</p>
</blockquote>

<p>But me being smug did not make May more interesting.</p>

<blockquote>
  <p><strong>FROM:</strong> Francisco May<br /></p>

  <p>Dear Tasos,</p>

  <p>Thanks for your email. I just wanted us to complete this transaction within a short because of the sources of this funds. My daughter is doing fine.</p>

  <p>Kindly do your best to make sure the offshore online is completed as soon as possible.</p>

  <p>Your sister,<br />
Ms. May Ann Francisco</p>
</blockquote>

<p>Dude, I caught a tiger! This is the part where you say well fuckin’ done!</p>

<p>It was clear that this conversation will go no further.</p>

<blockquote>
  <p>ok sister, i wll do that soon</p>
</blockquote>

<p>Farewell May Ann Francisco!</p>

<h3 id="disclosure">Disclosure:</h3>

<p>These emails were true and most of the time get caught up in spam filters. To most of the readers of this page, an email like this is a red flag but there are still people who fall for this and they can loose money.</p>

<p>If you get one of these there is nothing wrong with having some fun. If you are not that lucky, here is where you can do some spamming of your own:</p>

<p>Here is May’s email. She seems like a lovely woman:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mayfrancisco1@outlook.com
</code></pre></div></div>

<p>And here is the contact information she gave me for the bank:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Santander Bank Plc,
Address: 61, The Queens way TW9 1BP, London, England, United Kingdom
E-mail:  enquiries@csantander.co.uk
Phone: +44 745 224 6449
Fax:  +44 704 576 5582
Contact Person:  Mr.  Charles Frankfurt (General Director of Operations) Head of Private &amp; Business Clients
</code></pre></div></div>

<p>If you feel like it start a conversation with them and be original. You may help someone or have a couple of laughs.</p>

<p><em>EDIT:</em> After this post, someone pointed me to <a href="https:///www.419eater.com/html/419faq.htm">419Eater</a>. It is an effort where people commit to wasting the scammer’s time by pretending to fall for their scams. If you want some more action, go there</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Humor" /><category term="Email" /><category term="Humor" /><summary type="html"><![CDATA[Scam email is still escaping spam filters so having fun it is!]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/id.jpg" /><media:content medium="image" url="https://tsangiotis.com/id.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Just kill the messenger</title><link href="https://tsangiotis.com/just-kill-the-messenger/" rel="alternate" type="text/html" title="Just kill the messenger" /><published>2016-12-21T00:00:00+00:00</published><updated>2016-12-21T00:00:00+00:00</updated><id>https://tsangiotis.com/just-kill-the-messenger</id><content type="html" xml:base="https://tsangiotis.com/just-kill-the-messenger/"><![CDATA[<p>We are all in constant search of the perfect chat app. Myself, I thought I had things settled with my beloved Facebook Messenger. Little did I know it would break my heart.</p>

<!--more-->

<p>Messenger was a minor player in my text life till recently. I was happy with Telegram back then. Telegram is the perfect app. Not the perfect chat app. The perfect app. Stable, fast, very good native apps for phones AND computers, bots, etc. Everything that Telegram implements is well thought through and stable on release. The problem is that Telegram is not something that most of my friends would bother to meet. So in my quest for a minimalistic communications strategy, Telegram had to go.</p>

<p>So here I am searching on what to use next. I evaluated WhatsApp, Viber and even Signal. Every one of those had huge deal breakers. Poor gif support was the main one and the second was poor clients. The only one that was convenient and feature full was Facebook Messenger. And the best part, is that everyone has it on their phones since Facebook made it mandatory if you want to use it’ s chat function on your mobile device to annoy people on the go.</p>

<p>Because annoying on the go is like a cherished dream for most, today except from email if one must have an app for sending text around, this app would be Facebook Messenger. That reality caries a certain responsibility for Facebook. It is the same responsibility that Google has to fulfill when they provide email apps (I did not mention Apple because everyone knows their email apps are rubbish). Let’s see how these two great entities compare when they deal with their responsibilities.</p>

<h2 id="gmail-by-google">Gmail by Google</h2>

<p>It is universally true that Gmail makes the best email experience out there. They may scrap your email to collect information about you, they may be the big brother everyone fears but if you get past that, they make a hell of an email client. Everything is stable, aliases and alternative addresses work as expected on all devices, the interface is simple but with all the functions at a hand’ s reach and finally, mail gets through always and fast.</p>

<p>When Gmail wanted to try a new very original thing and re-thing the way we do email, they made a separate app called <a href="https://inbox.google.com/">Inbox</a>. Some people love it and some don’ t. Those who do not like or do not care, they can still use the same old Gmail. If something from Inbox can help the Gmail users it can be implemented in a non aggressive way.</p>

<p>This is how you do new features on a workhorse.</p>

<h2 id="messenger-by-facebook">Messenger by Facebook</h2>

<p>Facebook Messenger has all the features you might need in a chat app and more. It sends text and images, links auto-advance to video or images and you can make calls or video calls if you prefer. It also features some non-essential but fancy tools like GIFs, stickers, mini games, optionally encrypted conversations and a very clever event reminder option which I use vigorously in the group chat I maintain with my friends. In some countries you can even send money through the app.</p>

<p>All these features make for a bloated app though. A friend with a recent but not so powerful Android phone hates it because Messenger is laggy for him. The binary on Android is a huge 56MB download and on the iPhone a whopping 150MB download. This is a weird strategy from the company that launched the <a href="https://info.internet.org/en/">internet.org</a> initiative to promote universal internet access considering that the people who will be affected, use phones that are way lower specced than the one my friend uses.</p>

<p>But this is not <strong>my</strong> problem with Messenger. It runs ok for the most part on my aging but decent devices. My problem is with the new camera. It is the worst user experience I have ever seen on a major product and I am almost angry it passed the quality control.</p>

<p>If you are lucky enough to have not updated your apps or you live on another planet, this is what happened. Facebook released to the wild an update that turns your texting app into Snapchat. It is not like Instagram where it enhanced the whole experience without disrupting the way the app works. It’ s a shameless <em>“We copied Snapchat which is a different app from a different company that we couldn’ t buy and slapped it on top of our app without a care in the world”</em> kind of thing.</p>

<p>This is a screenshot of Snapchat:</p>

<p><img src="/images/just-kill-the-messenger/snapchat.jpg" alt="Snapchat" /></p>

<p>This is a screenshot from the new Facebook Messenger app. Maybe you can spot the similarities.</p>

<p><img src="/images/just-kill-the-messenger/messenger.jpg" alt="Messenger" /></p>

<p>The second picture is what happens if you scroll up and discover the selfie camera. Another way to enable that camera is to press the circle button. One more way to find that camera if you escaped all of the above is to press the <strong>+ Add to your day</strong> rectangle on the top left. Maybe there are more ways to take a picture with a chat app but I have still to find them. Maybe I am dumb and the next update will fix that by completely removing the tiny <strong>+</strong> icon on the top right that stands for <strong>New message</strong> replacing it with a camera icon. Dear Mark Zuckerberg or random hiring rep from Facebook, if you liked that idea please note that I am available for hire. If you can’ t find how to contact me via your app, do not hesitate to contact me via email. I think it still works.</p>

<p>If Facebook really wants to do something like Snapchat, it can follow the Gmail example. Make another app called Messchat or whatever and do crazy and original things there. The least it should do is give the option to the people like me who hate the new format to opt-out.</p>

<p>Humor aside Facebook, this app is now a commodity used by all of your users and more. It would be nice if you could beat Snapchat but let’ s face it, you are just the weird dad who sits with the teens at the holiday table. You are not as cool as Snapchat because being cool means to be original. So quit copying the cool kids and be the grown company you are. People like that too.</p>

<p><img src="/images/just-kill-the-messenger/ui-change.png" alt="xkcd.com - UI Change" /></p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><category term="Facebook" /><category term="Messaging" /><summary type="html"><![CDATA[A rant on Facebook Messenger’ s new redesign and functions]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/intro.jpg" /><media:content medium="image" url="https://tsangiotis.com/intro.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Aircraft design the NASA way</title><link href="https://tsangiotis.com/aircraft-design-the-nasa-way/" rel="alternate" type="text/html" title="Aircraft design the NASA way" /><published>2016-10-12T00:00:00+00:00</published><updated>2016-10-12T00:00:00+00:00</updated><id>https://tsangiotis.com/aircraft-design-the-nasa-way</id><content type="html" xml:base="https://tsangiotis.com/aircraft-design-the-nasa-way/"><![CDATA[<p>I have not said anything about it here but my thesis is about a VTOL aircraft. That stands for Vertical Take Off and Landing aircraft. If this is nonsense to you, don’t worry. You can just watch Jeremy Clarkson explain it in TopGear fashion in the video bellow.</p>

<div class="videoWrapper">
  <iframe width="560" height="315" src="https://www.youtube.com/embed/MXo_d6tNWuY" frameborder="0" allowfullscreen=""></iframe>
</div>

<p>Basically it combines a copter and a plane allowing to take off and land without the need for an airstrip like a copter but cruise at the speed of a plane providing autonomy. It’s a rad concept.</p>

<!--more-->

<blockquote>
  <p>But how does one design and build a thing like that?</p>
</blockquote>

<p>My thought while writing this is to make a series of posts explaining common tactics and thought process, demonstrating some popular (and free) tools used by recognised organisations, comparing some options and getting some feedback. To be fair, I’ve played with quadcopters but most of this is new to me. Also most of the information you will get here, is already on the internet but it is most of the time scattered with the rare exception when it is concentrated and explained by good people. If you are a newbie I will try to get you around the roadbumps I hit so you can hit your own roadbumps.</p>

<p>Copters are fairly easy to design and construct. You can literally make one by crucifying  a tupper on a wooden cross like that.
<img src="/images/aircraft-design-the-nasa-way/quadcopter.jpg" alt="" /></p>

<p>Strap on a cheap ready to fly kit following the simple instructions inside and with around $50 you have in your hands something that can fly (or damage them severely if you are not careful).</p>

<p>Of course it gets more sophisticated than that but you <strong>can</strong> build it just by following the above paragraph. The reason quadcopter drones got so popular is because they are so simple and allow for error.</p>

<p>I will eventually tell you what I know about deciding on motors and batteries for your beautiful contraption, how to design a frame and power distribution system that will help you experiment and if I am in dark side of the force mood I will tell you how to mess with the PID controllers (the algorithms that keeps your flying machine stable) on your flight controller.</p>

<p>A VTOL however is mostly a plane. It is designed to cruise most of the time.</p>

<p><img src="/images/aircraft-design-the-nasa-way/plane.jpg" alt="A fixed wing I built in 2012" /></p>

<p class="text-center">A fixed wing I built in 2012</p>

<p>The plane design part is kind of trickier. You have to calculate masses and aerodynamic data meticulously to fly without crashing on liftoff. And with only so much masses to allocate in a fixed design you have to plan in advance.</p>

<blockquote>
  <p>Don't I need massive amounts of computing power and expensive programs to design airplanes?</p>
  <p style="text-align: right;">- You</p>
</blockquote>

<p>Yes and no. It helps to have a capable enough computer and access to CAD programs like SolidWorks but it is not a requirement. At least this is my case. Most of the programs I use for aircraft design are completely free and open-source running on my now 4 years old low-to-medium spec computer.</p>

<p><img src="/images/aircraft-design-the-nasa-way/compiling.png" alt="Slow computers have advantages" /></p>

<p class="text-center">Slow computers have advantages</p>

<p>Actually one of the programs I mentioned is made by some folks at NASA. It’s called <a href="https:///www.openvsp.org/">OpenVSP</a> and stands for Open Vehicle Sketch Pad. Spoiler alert: It’s much more than a sketch pad.</p>

<p>The other one is <a href="https:///www.xflr5.com/xflr5.htm">XFLR5</a>. It is an extremely capable aerodynamics analysis tool for airfoils and complete wings. It started from a little known university called MIT and has been used in bizarre cases like <a href="https:///www.xflr5.com/sail7/sail7.html">studying sail boat performance</a>.</p>

<p>Anyhow, for the next few months, life is going to include a lot of this stuff. In true Tasos fashion I may completely abandon documenting this as I have to explain a lot of things I have already done but I will try and if people are actually interested I will try harder. I will start with a post a week and see how that works.</p>

<p>Until then, Pink Floyd’s Learning to Fly is a fitting song and study until the next post:</p>

<div class="videoWrapper">
  <iframe width="560" height="315" src="https://www.youtube.com/embed/eCB_INs2E24" frameborder="0" allowfullscreen=""></iframe>
</div>]]></content><author><name>Tasos Sangiotis</name></author><category term="Projects" /><category term="Design" /><category term="UAS" /><category term="VTOL" /><category term="great" /><summary type="html"><![CDATA[The tools used to design modern model aircrafts.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">The ways of the Quad</title><link href="https://tsangiotis.com/the-ways-of-the-quad/" rel="alternate" type="text/html" title="The ways of the Quad" /><published>2016-10-12T00:00:00+00:00</published><updated>2016-10-12T00:00:00+00:00</updated><id>https://tsangiotis.com/the-ways-of-the-quad</id><content type="html" xml:base="https://tsangiotis.com/the-ways-of-the-quad/"><![CDATA[<p>Recently a bunch of equipment made its way to my workbench and I’m invigorated! So I figured it’s high time we <a href="/aircraft-design-the-nasa-way">continued</a> our trip.</p>

<p>The vertical take-off and landing aircraft I am building, will use a quadcopter or X8 (like a quadcopter with double motors) configuration to successfully justify the vertical part of it’s title.</p>

<!--more-->

<p>Quadcopters you are likely familiar with. If not, the word derives from the words Quadrotor Helicopter. They are more commercial than ever and you can buy them really easy. In movies they are being used more and more and if you are into YouTube or Instagram, all the big stars have one (or many).</p>

<p>Anyway, it’ s that contraption:
<img src="/images/the-ways-of-the-quad/iris1.jpg" alt="" /></p>

<p>As you can imagine going airborne is hard. Maybe flying is too mainstream these days and you can’t imagine but let me tell you, going high into the air and having control of your motion is not an easy feat. Humans were not able to do it before the Wright brothers did it at the dawn of the 20th century. If you want to know more about how a couple of engineers with no social skills and an obsession threw themselves under the wagon, you can read <a href="https:///idlewords.com/2003/12/100_years_of_turbulence.htm">an essay by Maciej Cegłowski</a> about the Wright brothers and patent law.</p>

<p>Going airborne is hard first and foremost because earth has this thing called gravity that pulls you down and keeps you close. Yes, earth is passionately possessive. So man up and deal with it. You have to beat gravity and to do exactly that, you have to push down harder than the earth pulls you.</p>

<p>The mystery now is how a quadcopter succeeds in that regard. Not significantly different from helicopters, quadcopters use four propellers and four motors which generate thrust in order to fly. Thrust is the force you use to beat gravity. Call me Yoda cause I will teach you how to use the force Luke! First lesson, <em>“from your sister, away get!”</em></p>

<p><img src="/images/the-ways-of-the-quad/xkcd-quad.png" alt="" /></p>

<p>When we talk about forces, we need a coordinates system so we can communicate some concepts. What most people use for this one, is the Euler angles. It was developed by the mathematician Euler in the 18th century and it uses a set of three angles to describe the rotation of an object. Those angles are called pitch, roll and yaw.</p>

<p><img src="/images/the-ways-of-the-quad/euler.jpg" alt="" /></p>

<p>Think of the box in the picture as your head. You roll your head when you tilt it from shoulder to shoulder, you pitch your head when you look up and down and you yaw your head when you turn to look before crossing the street.</p>

<p>Now that you understand the movements, you are ready to understand how they are actually done.</p>

<p>At the core of the quadcopter movements is the rotational speed of the motors. The motion is governed by the lift forces produced by the rotating propeller blades whereas the translational and rotational motions are achieved by means of difference in the counter rotating blades. Adjusting the relative speeds of the motors, thus adjusting the produced lift of each motor in the right way, we are able to rotate the quad around any of the aforementioned axis (pitch, roll, yaw).</p>

<p>If I blowed your mind, relax. Imagine you are lying down, playing with a child. One common game is “the airplane” where you lift the kid up in the air with your feet and hands in order to balance it in the air. In that game, to keep the little devil still, you have to remain still. If the kid moves or you want to move it, you have to use different amount of force on the different extremities to keep it in the air. It is the same principle.</p>

<p><img src="/images/the-ways-of-the-quad/example.jpg" alt="" /></p>

<p>Now leave the kid down because there is no reason to try the next motions with it. Let’s say we want to move our copter forward. To do that we need the two motors on the back to move faster than the two motors on the front. That translates to the back producing more lift than the front thus making the quadcopter tilt forward.</p>

<p><img src="/images/the-ways-of-the-quad/pitch.jpg" alt="" /></p>

<p>In the same way we can move the copter left by making the motors on the left spin faster than the motors on the right.</p>

<p><img src="/images/the-ways-of-the-quad/roll.jpg" alt="" /></p>

<p>If this was simple enough, follow me on a more complex matter: Controlling the rotation about the yaw axis.</p>

<p>A valid question can be raised when you first see a quadcopter. How can a machine with four powerful rotating engines not only avoid a state of constantly spinning but also manage to remain completely still?</p>

<p><img src="/images/the-ways-of-the-quad/yaw-mayhem.jpg" alt="" /></p>

<p>Each motor spins around its axis. If all motors rotated in the same direction we would have a grave scenario. A contraption spinning around itself in the air, chaos and tears on the streets, Los Angeles burning etc. But that does not happen because while we build a quadcopter or any copter, we make the wise decision to set up the motors so that each motor spins in the opposite direction than its neighbors. That way each motor cancels out it’s neighbors will to rotate the copter.</p>

<p><img src="/images/the-ways-of-the-quad/yaw-correct.jpg" alt="" /></p>

<p>You see, when a propeller spins, for example clockwise, the law of the conservation of angular momentum directs that the body of the quadrotor will have a tendancy to spin counter-clockwise. This is due to Newton’s third law of motion <em>“for every action, there is an equal and opposite counter reaction”</em> (don’t live your life by that mantra). The body of the quad will want to spin in the direction opposite of the rotational direction of the propellers.</p>

<p>Now that you got the hang of it and you feel like you understood, think about the scenario where we actually <em>want</em><strong>_ _</strong>to rotate the quadcopter around the yaw axis. Don’t panic. Like the other motions, changing the speed of two of the motors achieves our goal. Though in this case, we change the speed of the _diametrically opposing_motors.</p>

<p>To see an example, if we want to rotate the drone clockwise we must have the counter-clockwise motors spin faster. The tendancy of those motors to rotate the body clockwise is stronger and prevails.</p>

<p><img src="/images/the-ways-of-the-quad/yaw.jpg" alt="" /></p>

<p>Beyond the fun experience of building and flying a multicopter lie a lot of mathematics and physics. In the above text I am just giving you a mild taste. If you get into this you will learn a lot but please be careful. We are talking about high speed flying spinning knives.</p>

<p>Happy flying and please tell me if that was at all helpful.</p>

<hr />

<p><em>Credits: Some of the images used, come from the website </em><a href="https:///blacktieaerial.com/creative-commons-licenced-multirotor-images/"><em>Black Tie Aerial</em></a><em> where they are available under the </em><a href="https:///creativecommons.org/licenses/by-nc-sa/4.0/"><em>Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</em></a><em>. In that regard, any image used in this post is under the same license.</em></p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Projects" /><category term="UAS" /><category term="VTOL" /><category term="Quad Copter" /><category term="great" /><summary type="html"><![CDATA[The theory of operation behind the most prominent drone and how to choose yours.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/iris1.jpg" /><media:content medium="image" url="https://tsangiotis.com/iris1.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Shooting film</title><link href="https://tsangiotis.com/shooting-film/" rel="alternate" type="text/html" title="Shooting film" /><published>2016-10-08T16:22:30+00:00</published><updated>2016-10-08T16:22:30+00:00</updated><id>https://tsangiotis.com/shooting-film</id><content type="html" xml:base="https://tsangiotis.com/shooting-film/"><![CDATA[<p>Remember when <a href="https://tsangiotis.com/bye-maria-dot-dot-dot-relax-dude-its-a-camera/">my camera had the worst swim ever</a>?</p>

<p>Well, I figured I could use the old film camera my grandfather bought on one of his trips. It is a Pentax camera from the 60s, very advanced for it’s age and relatively new as they mostly used it for family pictures. It has only manual controls, it looks cool and I could learn a thing or two from the absence of any automation.</p>

<p>So I picked up a film cartridge from Kodak and threw the camera in my backpack before a daytrip to Patras where I had some chores to run for my thesis.</p>

<table style="width:100%">
  <tr>
    <td><a href="/images/shooting-film/r001-006.jpg"><img src="/images/shooting-film/r001-006.jpg" /></a></td>
    <td><a href="/images/shooting-film/r001-007.jpg"><img src="/images/shooting-film/r001-007.jpg" /></a></td>
    <td><a href="/images/shooting-film/r001-008.jpg"><img src="/images/shooting-film/r001-008.jpg" /></a></td>
  </tr>
  <tr>
    <td><a href="/images/shooting-film/000062.jpg"><img src="/images/shooting-film/r001-011.jpg" /></a></td>
    <td><a href="/images/shooting-film/r001-012.jpg"><img src="/images/shooting-film/r001-012.jpg" /></a></td>
    <td><a href="/images/shooting-film/r001-013.jpg"><img src="/images/shooting-film/r001-013.jpg" /></a></td>
  </tr>
  <tr>
    <td><a href="/images/shooting-film/r001-014.jpg"><img src="/images/shooting-film/r001-014.jpg" /></a></td>
    <td><a href="/images/shooting-film/r001-015.jpg"><img src="/images/shooting-film/r001-015.jpg" /></a></td>
    <td><a href="/images/shooting-film/r001-020.jpg"><img src="/images/shooting-film/r001-020.jpg" /></a></td>
  </tr>
</table>

<p>The results were gratifying! Much better than what I was expecting.</p>

<!--more-->

<p>Shooting the camera is extremely fun. Advancing the film manually and hitting the shutter button is kind of therapeutic. I know it reads silly but its a form of fidgeting. Index up, thumb to the right, release and click. Doing that, results to an image being exposed on a thin film of chemicals that rests on top of a plastic strip. You can’t argue that this isn’t at least interesting.</p>

<p>I shot film for the rest of the summer. I can say that I had a lot of shots I liked and I discarded a lot less than I discard with my camera or my phone. I believe that this comes with the patience and thought that goes in each shot when you only have 36 of those.</p>

<table style="width:100%">
  <tr>
    <td><a href="/images/shooting-film/000033.jpg"><img src="/images/shooting-film/000033.jpg" /></a></td>
    <td><a href="/images/shooting-film/000057.jpg"><img src="/images/shooting-film/000057.jpg" /></a></td>
    <td><a href="/images/shooting-film/000058.jpg"><img src="/images/shooting-film/000058.jpg" /></a></td>
  </tr>
  <tr>
    <td><a href="/images/shooting-film/000062.jpg"><img src="/images/shooting-film/000062.jpg" /></a></td>
    <td><a href="/images/shooting-film/000063.jpg"><img src="/images/shooting-film/000063.jpg" /></a></td>
    <td><a href="/images/shooting-film/000064.jpg"><img src="/images/shooting-film/000064.jpg" /></a></td>
  </tr>
  <tr>
    <td></td>
    <td><a href="/images/shooting-film/000065.jpg"><img src="/images/shooting-film/000065.jpg" /></a></td>
    <td></td>
  </tr>
</table>

<p>However as I was using film more, it became apparent that this is not something I would like to default to. For starters, it’s hard to find. If you are out of film you are out of film. Your only reliable way is to order online. I could buy from kiosks or other stores but film is not so common anymore. In August I spent two weeks in Porto Heli and near the end of week #1 I was out. Even photography studios do not carry film anymore so I resorted to my phone.</p>

<table style="width:100%">
  <tr>
    <td><a href="/images/shooting-film/000051.jpg"><img src="/images/shooting-film/000051.jpg" /></a></td>
    <td><a href="/images/shooting-film/000044.jpg"><img src="/images/shooting-film/000044.jpg" /></a></td>
  </tr>
  <tr>
    <td><a href="/images/shooting-film/argyroupoli.jpg"><img src="/images/shooting-film/argyroupoli.jpg" /></a></td>
    <td><a href="/images/shooting-film/ioanna_candle.jpg"><img src="/images/shooting-film/ioanna_candle.jpg" /></a></td>
  </tr>
</table>

<p>Another problem is the price. Film costs about € 3 per cartridge. Developing costs € 3 more. After that you can either print or scan your photos in 2 MP images. Printing all of your pictures costs around € 7 and scanning them around € 3. Even If that price is not an issue for you, the quality of what you are getting is subpar. You can see in many of the pictures, black spots or frames from not properly aligned scanners. Also a resolution of 2 MP is not enough these days to fill the standard 1980x1080 screen resolution of today’s devices.</p>

<table style="width:100%">
  <tr>
    <td><a href="/images/shooting-film/storm.jpg"><img src="/images/shooting-film/storm.jpg" /></a></td>
    <td><a href="/images/shooting-film/000037.jpg"><img src="/images/shooting-film/000037.jpg" /></a></td>
    <td><a href="/images/shooting-film/000038.jpg"><img src="/images/shooting-film/000038.jpg" /></a></td>
  </tr>
  <tr>
    <td><a href="/images/shooting-film/000039.jpg"><img src="/images/shooting-film/000039.jpg" /></a></td>
    <td><a href="/images/shooting-film/granpa.jpg"><img src="/images/shooting-film/granpa.jpg" /></a></td>
    <td><a href="/images/shooting-film/granma_chris.jpg"><img src="/images/shooting-film/granma_chris.jpg" /></a></td>
  </tr>
</table>

<p>Overall I enjoyed using film a lot and I want to experiment more with it. I will definitely get my hands on some black &amp; white film and maybe try some weird ones from Lomography.</p>

<p>Film is history and many swear by it. When you shoot film you feel more proud about your pictures because you took them with no help at all. No image processing, no Instagram filters. You opened a little curtain for a fraction of a second and whatever light was sucked in stayed in that way.</p>

<p>If your parents have a film camera somewhere find it, buy some film and shoot. Even if you don’t want to buy film just shoot. The sound is very rewarding.</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Photography" /><category term="Film" /><summary type="html"><![CDATA[Remember when my camera had the worst swim ever? Well, I figured I could use the old film camera my grandfather bought on one of his trips. It is a Pentax camera from the 60s, very advanced for it’s age and relatively new as they mostly used it for family pictures. It has only manual controls, it looks cool and I could learn a thing or two from the absence of any automation. So I picked up a film cartridge from Kodak and threw the camera in my backpack before a daytrip to Patras where I had some chores to run for my thesis. The results were gratifying! Much better than what I was expecting.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">MARVELlous Music</title><link href="https://tsangiotis.com/marvellous-music/" rel="alternate" type="text/html" title="MARVELlous Music" /><published>2016-10-02T12:44:00+00:00</published><updated>2016-10-02T12:44:00+00:00</updated><id>https://tsangiotis.com/marvellous-music</id><content type="html" xml:base="https://tsangiotis.com/marvellous-music/"><![CDATA[<p>OK, Marvel Entertainment, LLC or whatever your full name is. What you are doing to music, it has to… Continue!</p>

<p>I just finished the latest Marvel superhero series. It’s about the indestructible black man named Luke Cage. He lives in Harlem, NY and wants to be left alone but personal reasons convince him to fight the mafia leaving me once again astonished by the selection of music made by the producers.</p>

<p>On that note (when you see it), I want to make a recap of the music Marvel brought to my attention. Some of this was really new to me and some of this was really old to me. I will give you the link for the song that stuck in your head and you couldn’t Shazam but first let’s get some things straight for the uninitiated.</p>

<p>It all started with <em>Guardians of the Galaxy</em> and the <em>Awesome Mix Vol 1</em>:</p>

<iframe src="https://www.youtube.com/embed/NrI-UBIB8Jk?feature=oembed" width="100%" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
<!--more-->
<p>If you have not seen the movie, you should. If the name of the soundtrack is not self explanatory to you first you should check your self. Anyway it was just a cassette tape that a dying mother made with her favourite tunes for her son. It was a mix of songs from the 70s when music was undoubtedly awesome. Peter’s mom made a consistently great selection of songs. I was listening on this album on repeat for months and I didn’t skip a song. I was <a href="https://www.youtube.com/watch?v=ULL7apmAJTE">going all the way</a> holding this mix tight.</p>

<p>Then there was a couple of good but expected tunes from <em>Iron Man</em> and <em>Avengers</em> movies. Nothing spectacular really. With all the explosions good music would have been ruined anyway. Why waste it.</p>

<p>The rest is from Netflix. When they introduced Daredevil they did it with <a href="https://www.youtube.com/watch?v=jAy6NJ_D5vU">a really nice trailer</a>. Half the way through the video a song kicks in. That song stuck in my head and it is still on my <em>“get your shit together”</em> playlist:</p>

<iframe src="https://www.youtube.com/embed/iMq3lQFFHFw?feature=oembed" width="100%" frameborder="0" allowfullscreen="allowfullscreen"></iframe>

<p>But with <em>Luke Cage</em> things reached another level. Here Marvel portrays Harlem and you can’t do that without Hip Hop, Jazz and weird converges between the two. The art, the music and the traditions and that have branched out of the harlem renaissance are there and the series does a good job of making them known to the mainstream.</p>

<iframe src="https://www.youtube.com/embed/videoseries?list=PL6DQ5bOYWQVAmTbDQI3Ps6gGx2it_1LoQ" width="100%" frameborder="0" allowfullscreen="allowfullscreen"></iframe>

<p>The artists are primarily dark coloured which is one of the issues the series is pressing on and range from <em>Wu-Tang Clan</em> and <em>2Pac</em> to <em>Faith Evans</em> and <em>Raphael Saadiq</em>. Actually Saadiq sings an unreleased song on the first episode of the series which is awesome. We don’t even know the name of the song but one can safely assume. The soundtrack is to be released next week and I can’t wait.</p>

<p>Until then <em>no one compares…</em></p>

<iframe src="https://www.youtube.com/embed/2L12F1GIfrg?feature=oembed" width="100%" frameborder="0" allowfullscreen="allowfullscreen"></iframe>]]></content><author><name>Tasos Sangiotis</name></author><category term="Short" /><category term="Marvel" /><category term="Music" /><summary type="html"><![CDATA[OK, Marvel Entertainment, LLC or whatever your full name is. What you are doing to music, it has to… Continue! I just finished the latest Marvel superhero series. It’s about the indestructible black man named Luke Cage. He lives in Harlem, NY and wants to be left alone but personal reasons convince him to fight the mafia leaving me once again astonished by the selection of music made by the producers. On that note (when you see it), I want to make a recap of the music Marvel brought to my attention. Some of this was really new to me and some of this was really old to me. I will give you the link for the song that stuck in your head and you couldn’t Shazam but first let’s get some things straight for the uninitiated. It all started with Guardians of the Galaxy and the Awesome Mix Vol 1:]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">- Bye Maria… - Relax dude, it’s a camera!</title><link href="https://tsangiotis.com/bye-maria-dot-dot-dot-relax-dude-its-a-camera/" rel="alternate" type="text/html" title="- Bye Maria… - Relax dude, it’s a camera!" /><published>2016-07-29T15:30:00+00:00</published><updated>2016-07-29T15:30:00+00:00</updated><id>https://tsangiotis.com/bye-maria-dot-dot-dot-relax-dude-its-a-camera</id><content type="html" xml:base="https://tsangiotis.com/bye-maria-dot-dot-dot-relax-dude-its-a-camera/"><![CDATA[<p>Today I got the news. Maria is officially dead.</p>

<p><img src="/images/bye-maria-dot-dot-dot-relax-dude-its-a-camera/mariaisdead.jpg" alt="" /></p>

<!--more-->

<p>Maria was my camera. I changed the name to Maria from CAMERA #1 about a week ago when she was baptised in the waters of Naxos. By accident of course.</p>

<blockquote class="instagram-media" data-instgrm-captioned="" data-instgrm-version="7" style=" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"><div style="padding:8px;"> <div style=" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;"> <div style=" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAMUExURczMzPf399fX1+bm5mzY9AMAAADiSURBVDjLvZXbEsMgCES5/P8/t9FuRVCRmU73JWlzosgSIIZURCjo/ad+EQJJB4Hv8BFt+IDpQoCx1wjOSBFhh2XssxEIYn3ulI/6MNReE07UIWJEv8UEOWDS88LY97kqyTliJKKtuYBbruAyVh5wOHiXmpi5we58Ek028czwyuQdLKPG1Bkb4NnM+VeAnfHqn1k4+GPT6uGQcvu2h2OVuIf/gWUFyy8OWEpdyZSa3aVCqpVoVvzZZ2VTnn2wU8qzVjDDetO90GSy9mVLqtgYSy231MxrY6I2gGqjrTY0L8fxCxfCBbhWrsYYAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;"></div></div> <p style=" margin:8px 0 0 0; padding:0 4px;"> <a href="https://www.instagram.com/p/BIQs-t5j8OL/" style=" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;" target="_blank">What&#39;s in a name, really?</a></p> <p style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;">A photo posted by Ryan Hudson (@ryankhudson) on <time style=" font-family:Arial,sans-serif; font-size:14px; line-height:17px;" datetime="2016-07-24T22:28:17+00:00">Jul 24, 2016 at 3:28pm PDT</time></p></div></blockquote>
<script async="" defer="" src="//platform.instagram.com/en_US/embeds.js"></script>

<p>When I realised what had happened, I remained calm and said: “Hope the pictures are ok”.</p>

<p>Inside me I died for a moment as this camera is the only thing I’ve been able to keep alive for 7 years. Here I would like to confess that I am a goldfish and plant murderer by negligence. Deal with it.</p>

<p>If I crossed the sea to get these photos, they are more valuable than my cheapo camera. Alright, it was about 5 meters worth of sea but still some sea to be swam!</p>

<p>And what photos! This is me Ash Ketchum style while catching Vaporeon on Pokémon Go (real life edition):</p>

<p><img src="/images/bye-maria-dot-dot-dot-relax-dude-its-a-camera/ash.jpg" alt="" /></p>

<p>Cameras are tools to make pictures. Nothing more, nothing less. If you treat them as such you will make great or at least enjoyable pictures. If you treat them like fragile babies, you will be too afraid to make good photos outdoors.</p>

<blockquote>
  <ul>
    <li>Dude, stuff is expensive!</li>
  </ul>
</blockquote>

<p>I know and I respect that. But it’s relative.</p>

<p>Sure, Maria 7 years ago was more expensive than what my friends were willing to spend on a camera. But they may spent that much (or more) on other stuff. By camera standards, it was as cheap as you could get at the time.</p>

<p>Also back then your phone’s camera was quiet shitty. Now it’s really good! I am thinking about not replacing the camera and stick with my phone. Or go completely old-school and check out film photography. Waterproof by design.</p>

<p>On that note, if you like doing something, respect the tools but don’t babysit them. You are interested in your hobby/job, not the tools, right? RIGHT?!</p>

<p>Now that I lectured you, check out Maria on the operation table and if you see me doing something stupid like that again, punch me:</p>

<p><img src="/images/bye-maria-dot-dot-dot-relax-dude-its-a-camera/mariadisassembly.jpg" alt="" /></p>

<p><em>P.S.: This was written in under 30 minutes and by now I hate the name Maria for a camera.</em></p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><category term="Photography" /><summary type="html"><![CDATA[how my camera died]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Is it futile to un-Google?</title><link href="https://tsangiotis.com/is-it-futile-to-un-google/" rel="alternate" type="text/html" title="Is it futile to un-Google?" /><published>2015-09-12T00:00:00+00:00</published><updated>2015-09-12T00:00:00+00:00</updated><id>https://tsangiotis.com/is-it-futile-to-un-google</id><content type="html" xml:base="https://tsangiotis.com/is-it-futile-to-un-google/"><![CDATA[<p>I was watching Citizenfour the other day so you may understand my confusion.</p>

<p>I can say that I am privacy aware. On a high level, I understand how things work. I use a different strong password for everything, I have a GPG key and I opt for using open source services that make security a priority.</p>

<p>However I still use services that are not so privacy centric. I use Facebook and nearly all Google Services (Search, Gmail, Drive, Photos, etc.). These two alone can show you everything about me.</p>

<p>According to Edward Snowden’s revelations everything is busted. Dropbox, Google, Apple. You are not safe.</p>

<p>On the bright side, Snowden notes that the big software companies are doing steps in the right direction.</p>

<p>But let’s say I stop using services from these companies and find alternatives. Am I really doing anything except dealing with bad UX experiences and beta software?</p>

<blockquote>
  <p>Any time I email somebody who uses Gmail — and anytime they email me — Google has that email.</p>
</blockquote>

<p>That was what <a href="https://mako.cc/">Benjamin Mako Hill</a> who maintains his own mail server realised and tried to estimate how much of his emails Google has. <a href="https://mako.cc/copyrighteous/google-has-most-of-my-email-because-it-has-all-of-yours">Here are his findings</a>.</p>

<p><strong>TL;DR;</strong> 51% of his email at the year of measurement had passed through Google’s servers. Just wow! This guy works so hard and spends so much money every year to avoid this and there he goes.</p>

<!--more-->

<p>The only way i can think of to email other people and keep it private without blowing my head up, is if I use <a href="https://protonmail.ch/">Protonmail</a> which I think is awesome. But even then, starting a casual conversation demands that you have to teach the other person how to use the service. Also mobile is a pain and the web interface is not packing the 11 years of experience that Google has with Gmail (yes, proper shortcuts).</p>

<p>Email is one and probably the easiest thing of all to keep private. There are many other ways your privacy can be invaded.</p>

<p>Most chat services are not encrypted by default (however this is changing), there has been massive security breaches and big data dumps in the last years. Your phone tracks your position constantly for years and records your habits. Your browser sees what websites you visit and where you click, what you search, what you need and when. Wearables will track your biometrics and exercise habits. There has been proof of manufacturers putting malware on their <a href="https:///www.forbes.com/sites/thomasbrewster/2015/02/19/superfish-need-to-know/">laptops</a> or <a href="https://public.gdatasoftware.com/Presse/Publikationen/Malware_Reports/G_DATA_MobileMWR_Q2_2015_EN.pdf">phones</a>. One can go insane in minutes thinking about it.</p>

<p>Many of the above can be turned off but for most people the default remains current. I suppose there are very few people who have turned their Android’s location history off and I am not one of them.</p>

<p>Why? The thing is that all these things make us more productive and they are very convenient. They provide the things we are most pumped about. Automation, collaboration and convenience. I can work on documents collaboratively with Google Docs and as I travel a lot I can easily work remotely with Dropbox and Drive. Using my location to tell me when I should leave accounting, transit time and traffic data to be on time for my next calendar event is awesome. Spotify analysing my music preferences and giving me something new to enjoy once a week is not that bad. There are many benefits in using these technologies to ignore them.</p>

<p>For regular folks, like me that want to make stuff and get work done, it is not an easy feat to do so with 100% privacy. To keep private you should spend a lot of time and work on it to setup and maintain the complicated systems. You have to change burner phones all the time and live like Harold from Person of Interest.</p>

<h3 id="so-we-give-up">So we give up?</h3>

<p>Absolutely not. But instead of getting down to build you own password manager because no one can be trusted and change online services every six months pursuing your tail, you can start by not doing EVERYTHING online.</p>

<p>Ironically most of my friends will argue that DOINGEVERYTHINGONLINE should be my nickname. They don’t see the need to keep stuff accessible from anywhere and that’s fine. For me having all the stuff I need accessible from any device and suffer minimum to zero dataloss in case of failure of my main machine is crucial. But it is not EVERYTHING. I do the following.</p>

<p>I evaluate privacy importance on my stuff. Long story short, if something must be seen by you and you only for whatever reason, don’t put it online (without encrypting it for good at least).</p>

<p>Realistically this is what you can do to use the internet today without becoming paranoid.</p>

<p>On the grand scale the only solution is for the law to be enforced appropriately. If we don’t have that the only thing we are doing is avoiding the unavoidable.</p>

<!-- Comments start -->
<div class="mt-5">
<hr />
<h5>Comments</h5>
  <!-- Comment level 1-->
  <div class="my-4 d-flex">
    <div>
      <div class="mb-2">
        <h5 class="m-0">Volker Birk</h5>
        <a href="mailto:hey@tsangiotis.com?subject=RE: Volker Birk comment on Is%20it%20futile%20to%20un-Google?" class="text-body fw-normal">Reply</a>
      </div>
      <p>I don’t use any Google product. If you ask for the obvious: it’s Duckduckgo. But for all other things I’m not using Google products. I’m using OpenStreetmap. I’m using Firefox. I’m using LibreOffice. There is no dependency on Google at all. And I’m doing fine, thank you.</p>
      <p>If people like Google’s products, they can use them. I dislike the idea of giving up my privacy, so I don’t. It’s everyone’s joice. Perhaps Google convince me in the future to use some products of them. Who knows?</p>
    </div>
  </div>
  <!-- Comment level 1 -->
  <div class="my-4 d-flex">
    <div>
      <div class="mb-2">
        <h5 class="m-0">Rick</h5>
        <a href="mailto:hey@tsangiotis.com?subject=RE: Rick comment on Is%20it%20futile%20to%20un-Google?" class="text-body fw-normal">Reply</a>
      </div>
      <p>I dislike the way Google injects their politics into everything (especially regarding gay marriage). I tried to de-Google but found it impossible. The government needs to break them up. They are too big.</p>
    </div>
  </div>
  <!-- Comment children level 2 -->
    <div class="my-4 d-flex ps-2 ps-md-3">
      <div>
        <div class="mb-2">
          <h5 class="m-0">Karen</h5>
          <a href="mailto:hey@tsangiotis.com?subject=RE: Karen comment on Rick comment on Is%20it%20futile%20to%20un-Google?" class="text-body fw-normal">Reply</a>
        </div>
        <p>You’re conflating several issues. Do you think the government should break them up because they’re big, or because they “inject their politics” into their work?</p>
        <p>Do you only believe this because you disagree with their politics, or do you think large political companies like Chick-Fil-A, White Castle, and Waffle House should be broken up for promoting conservative positions, too?</p>
        <p>Google isn’t a terribly big company. If they’re big enough to warrant government intervention, then the government has a few hundred other companies to dismantle first.</p>
        <p>They’re not even terribly political, compared to other big companies. I hope you don’t use any Tylenol, Listerine, Pepcid, Imodium, Sudafed, Rolaids, Motrin, Benadryl, etc., because J&amp;J is running a national TV commercial right now featuring a gay couple.</p>
        <p>Lots of people have de-Googled. If you can’t, it just means they provide services that you value.</p>
      </div>
    </div>
    <!-- Comment children level 3 -->
      <div class="my-4 d-flex ps-3 ps-md-5">
        <div>
          <div class="mb-2">
            <h5 class="m-0">Rick</h5>
            <a href="mailto:hey@tsangiotis.com?subject=RE: Rick comment on Karen comment on Rick comment on Is%20it%20futile%20to%20un-Google?" class="text-body fw-normal">Reply</a>
          </div>
          <p>“Google isn’t a terribly big company”?!? Google is a $350 Billion behemoth!</p>
        </div>
      </div>
  <!-- Comment level 1 -->
  <div class="my-4 d-flex">
    <div>
      <div class="mb-2">
        <h5 class="m-0">happy googler</h5>
        <a href="mailto:hey@tsangiotis.com?subject=RE: happy googler comment on Is%20it%20futile%20to%20un-Google?" class="text-body fw-normal">Reply</a>
      </div>
      <p>I recently un googled just fine. It was a swift decision, made after years of using every google product there is. All my pictures were on google photos, then moved them to google drive just to discover google created a mess of them all. All my music was on google music, bookmarks in chrome, email was gmail, social network was google plus, mobile was android – everything that google had as a product, I was using. I was using gmail since the first days it launced. Chrome? When it was still v1 beta. I was using Chrome Remote Desktop to connect to my work computer. I even have a chromebook that at some point was my main workhorse at home. I even developed online, using web IDEs such as codenvy, koding and cloud9. I resented all desktop applications and moved entirely in the google cloud.</p>
      <p>Until one day. For you see, at some point you have enough. I had enough of google messing with my photos, enough of google’s shitty browser, enough of it’s shitty services that seem to be made by a bunch of retarded kids thinking they are the world’s messiah. Google chrome has tens if not almost one hundred flags, options and parameters for debugging. You would expect those flags to become fully implemented features at some point. Nope, not in google chrome. They just seem forgotten experiments that some hyperactive OCD kids don’t care about anymore.</p>
      <p>You are in Dublin and search for Milano pizza restaurant? Good luck, as google maps will kindly point you to the next airport, to board the next plane to Italy. I mean come on, they gather SO much information about me, surely they should know I am just looking to grab a bite. No way. They think I am really interested in Italy. And google docs? It’s a plain joke. Yes, it has all the features I need – but have you tried writing a book in it? Yeah, I thought so – well you can’t. It starts to slow down past the 90 pages mark. Good luck from there.</p>
      <p>Anyway, it’s not impossible to un google once you get fed up. And yes, I must say I am not better than anybody hooked to the cloud – I still am. I am using Microsoft’s services now, perfectly integrated in windows 10. But anyway that’s not the point. If you want to stay away from google – you can. It’s even quite easy. You just need a different point of view.</p>
    </div>
  </div>
  <!-- Comment level 1 -->
  <div class="my-4 d-flex">
    <div>
      <div class="mb-2">
        <h5 class="m-0">Sia</h5>
        <a href="mailto:hey@tsangiotis.com?subject=RE: Sia comment on Is%20it%20futile%20to%20un-Google?" class="text-body fw-normal">Reply</a>
      </div>
      <p>Hey, what if I tell you I have designed an architecture to reduce that 51% to 0? A way to hide meta-data from servers and services in the middle or on both ends?</p>
    </div>
  </div>
  <div class="my-4 d-flex">
    <div>
      <div class="mb-2">
        <h5 class="m-0">Happy progressive degoogler</h5>
        <a href="mailto:hey@tsangiotis.com?subject=RE: Happy progressive degoogler comment on Is%20it%20futile%20to%20un-Google?" class="text-body fw-normal">Reply</a>
      </div>
      <p>I only partially Google things up (DuckDuckGo’s convenient “g!”), block ads, support companies that do not rely on tracking to advertise you—as in “advertise you as product to other companies”, and as “track your profile to target ads to you”. It’s all doable.</p>
    </div>
  </div>
  <div class="my-4 d-flex">
    <div>
      <div class="mb-2">
        <h5 class="m-0">Francesco</h5>
        <a href="mailto:hey@tsangiotis.com?subject=RE: Francesco comment on Is%20it%20futile%20to%20un-Google?" class="text-body fw-normal">Reply</a>
      </div>
      <p>I’m roughly in your same situation: I need to have “everything important” online to avoid issues (I had multiple hdd failures in 2 years, we talk about 6 hdds failures, so I am unlucky indeed, considering I use roughly only 2 hdd).</p>
      <p>That being said, disable history on search for me it’s not an option, I’m a software developer and when I search for “Ruby” my first result must be about the programming language, not about some JEWELRY, result which I get when I’m on Incognito mode (same goes for all programming languages with all the weirdest names).</p>
      <p>When I think about what’s DANGEROUS to be post online, I can think about the following:</p>
      <ul>
        <li>Political preferences (this is probably the main one), someone might not hire you because of your political preferences (it might be good not be hired by such person though)</li>
        <li>Photos of your partner “not-suitable-for-work”</li>
        <li>Sex preferences (and unfortunately I must specify, this is specifically NOT for straight people, usually)</li>
        <li>Which porn website you visit (use another browser! Firefox should be installed for that reason only!!!)</li>
        <li>What you were doing at a specific time of the day (work-related, you might not want to show you were not working while you should have!)</li>
      </ul>
      <p>I see a common pattern around this though, it’s “social related”. If google knows I love programming, I love videogames, and such, it’s not really a problem… Actually I prefer that they show me ads related to this stuff than “picture of XXX naked” here and there (and believe me, it does that only because a specific italian-TV-related woman pictures were found, and since I’m italian, it was showing me that related ads, argh!).</p>
      <p>So for me the main thing you might not want to use it’s a social network. The second big (bigger) problem, you might not want gps tracking capabilities and history, which is something extremely helpful, I need that because google maps app is not great with “favourite locations”.</p>
      <p>Sure, you should skip using google search if you want to avoid any tracking of time-related activities and this is another problem and I have no idea how to solve it, given how good is google search.</p>
      <p>My emails are work related or friends related (quite uncommon, mostly work related), the work related ones aren’t a problem at all even if they are tracked (and if I have to keep something secret, believe me, I’ll use an encrypted email, won’t trust ANY service).</p>
      <p>The friends related aren’t a problem UNLESS they are leaked (a security issue) and made available to all the internet. They are private, you might want to write a lovely email for your wife but you don’t want your friends to read that and discover that you are an extremely romantic guy!!! (or they might discover your partner-intimate-nickname). I’m not sure if you can SUE the company in this case, maybe, because of disclosure of private data? But writing a romantic email and ENCRYPTING IT somewhat defeats the “romantic side”…</p>
      <p>I would love other suggestions about “what you should keep private”</p>
    </div>
  </div>
  <div class="my-4 d-flex">
    <div>
      <div class="mb-2">
        <h5 class="m-0">Eisar</h5>
        <a href="mailto:hey@tsangiotis.com?subject=RE: Eisar comment on Is%20it%20futile%20to%20un-Google?" class="text-body fw-normal">Reply</a>
      </div>
      <p>Google must not be trusted. They have betrayed our trust far too many times. To make things worse, a lot of they’re employees are extremely arrogant.</p>
      <p>There are very good alternatives for most Google services, so not reason to continue sacrificing you’re privacy.</p>
      <p>I will consider using Google products again when they fire Eric Schmidt.</p>
      <p>Disclaimer: I work for Google.</p>
    </div>
  </div>
  </div>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><category term="Privacy" /><category term="great" /><summary type="html"><![CDATA[A rant on the obsession with privacy stuff.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Running streak</title><link href="https://tsangiotis.com/running-streak/" rel="alternate" type="text/html" title="Running streak" /><published>2015-09-05T00:00:00+00:00</published><updated>2015-09-05T00:00:00+00:00</updated><id>https://tsangiotis.com/running-streak</id><content type="html" xml:base="https://tsangiotis.com/running-streak/"><![CDATA[<p>For 5 days now I run every day morning or afternoon. And it’s great!</p>

<p>I tried to form this habit many times in the past but for some reason it did not stick. At some point, my excuse would be that I could not find time and one day out of the loop was enough to throw me out of it.</p>

<p>Casey is very motivating in that stuff so for the first time I decided to make running (among other things) a priority.</p>

<h2 id="why-running-is-great">Why running is great</h2>

<p>First of all, I generally feel better. Much better.</p>

<p>I feel more accountable for my diet and I drink a lot less on social occasions. I am more likely to be more focused on other tasks and I move 80% more.</p>

<p>A run gets almost an hour from my day which is OK. Especially when it is at 6.30 in the morning. In that hour, I feel free and I can do things I don’t do so often anymore. That is listening to music, snap some pictures but mostly think and clear my mind.</p>

<blockquote>
  <div style="padding:8px;">

<div style=" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;">

<div style=" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;">

</div>

</div>

<a href="https://instagram.com/p/7CUuo1tZzf/" style=" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;" target="_top">Way too early.. #sunrise #moon #running #boat #sea #wakeup</a>

A photo posted by Tasos Sagiotis (@tsagiotis) on Aug 30, 2015 at 10:38pm PDT

</div>
</blockquote>

<blockquote>
  <div style="padding:8px;">

<div style=" background:#F8F8F8; line-height:0; margin-top:40px; padding:36.9907407407% 0; text-align:center; width:100%;">

<div style=" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;">

</div>

</div>

<a href="https://instagram.com/p/7GLm7atZ0W/" style=" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;" target="_top">I'm on a streak! #atlanticdiana #running #sunset #patras #port</a>

A photo posted by Tasos Sagiotis (@tsagiotis) on Sep 1, 2015 at 10:36am PDT

</div>
</blockquote>

<p>After that I have time for a good shower and a breakfast (not on rush) which is magic. There I get down on zeroing my inbox and by 9 o’clock it is already a good day. The rest of the day I feel more focused and I start working at full mode earlier.</p>

<p>Running with a friend is strongly recommended. Especially if they are in better shape than you. Yesterday I run with a friend and she is regularly exercising. It was pretty intense but it pushed my limits and I covered more distance with almost double the pace.</p>

<h2 id="how-to-track-things-aka-toys">How to track things (aka. Toys)</h2>

<p>Tracking things helps a lot to stay on track and do better every time. However the point here is to go as simple as possible.</p>

<p>I have used Nike+ and Runkeeper to track my runs. I think I prefer Runkeeper as it is snappier and more stable.</p>

<p>For music I use Spotify as ever and a party playlist.</p>

<p>The more convenient thing is the bluetooth earbuds. If you use them once, everything else feels bulky.</p>

<p><img src="/assets/images/posts/running-streak/01-73a98a6798e8451daad8b4e11c7ca5b1a5ce9241_main_hero_image.jpg" alt="" /></p>

<p>I use <a href="https://stacksocial.com/sales/toccs-feather-buds-the-lightweight-crystal-clear-bluetooth-headphones-us">these</a> cheap ones so I don’t have to worry. They last 2-3 hours which is pretty good for what I need.</p>

<p>Having said all this, if you feel like running, please do! :)</p>

<p><em>Liked it? </em><a href="http://eepurl.com/bIEi_9"><em>Every week I send an email</em></a><em>. It involves:</em></p>

<ul>
  <li><em>Interesting things from the internet world.</em></li>
  <li><em>Discussions on pressing matters.</em></li>
  <li><em>Some personal additions.</em></li>
  <li><em>Many surprises!</em></li>
</ul>

<p><a href="http://eepurl.com/bIEi_9"><em>Join now</em></a><em> and enjoy every Friday in your inbox! </em><a href="http://eepurl.com/bIEi_9"><em>Sign Up here!</em></a></p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Personal" /><summary type="html"><![CDATA[For 5 days now I run every day morning or afternoon. And it’s great! I tried to form this habit many times in the past but for some reason it did not stick. At some point, my excuse would be that I could not find time and one day out of the loop was enough to throw me out of it. Casey is very motivating in that stuff so for the first time I decided to make running (among other things) a priority. Why running is great First of all, I generally feel better. Much better. I feel more accountable for my diet and I drink a lot less on social occasions. I am more likely to be more focused on other tasks and I move 80% more. A run gets almost an hour from my day which is OK. Especially when it is at 6.30 in the morning. In that hour, I feel free and I can do things I don’t do so often anymore. That is listening to music, snap some pictures but mostly think and clear my mind. Way too early.. #sunrise #moon #running #boat #sea #wakeup A photo posted by Tasos Sagiotis (@tsagiotis) on Aug 30, 2015 at 10:38pm PDT I'm on a streak! #atlanticdiana #running #sunset #patras #port A photo posted by Tasos Sagiotis (@tsagiotis) on Sep 1, 2015 at 10:36am PDT After that I have time for a good shower and a breakfast (not on rush) which is magic. There I get down on zeroing my inbox and by 9 o’clock it is already a good day. The rest of the day I feel more focused and I start working at full mode earlier. Running with a friend is strongly recommended. Especially if they are in better shape than you. Yesterday I run with a friend and she is regularly exercising. It was pretty intense but it pushed my limits and I covered more distance with almost double the pace. How to track things (aka. Toys) Tracking things helps a lot to stay on track and do better every time. However the point here is to go as simple as possible. I have used Nike+ and Runkeeper to track my runs. I think I prefer Runkeeper as it is snappier and more stable. For music I use Spotify as ever and a party playlist. The more convenient thing is the bluetooth earbuds. If you use them once, everything else feels bulky. I use these cheap ones so I don’t have to worry. They last 2-3 hours which is pretty good for what I need. Having said all this, if you feel like running, please do! :) Liked it? Every week I send an email. It involves: Interesting things from the internet world. Discussions on pressing matters. Some personal additions. Many surprises! Join now and enjoy every Friday in your inbox! Sign Up here!]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Social media frenzy</title><link href="https://tsangiotis.com/social-media-frenzy/" rel="alternate" type="text/html" title="Social media frenzy" /><published>2015-08-24T00:00:00+00:00</published><updated>2015-08-24T00:00:00+00:00</updated><id>https://tsangiotis.com/social-media-frenzy</id><content type="html" xml:base="https://tsangiotis.com/social-media-frenzy/"><![CDATA[<p>It all started with Twitter.. or foursquare… or Snapchat!</p>

<p>I think it was foursquare though. Twitter in Greece was not that popular and foursquare was a funny game for me. I even checked “in” at the bus stop.</p>

<p>Anyhow. The last two months I’ve been under the Snapchat frenzy and friends I razzed about their addiction are coming out swinging.</p>

<p><img src="/assets/images/posts/social-media-frenzy/01-large_snapcode.png" alt="" /></p>

<p>I also share more on Instagram and Twitter. Swarm (formerly foursquare) check-ins never stopped.</p>

<blockquote>
  <p>This ranting is just a vague assessment of what is happening with our social media addiction and oversharing. </p>
</blockquote>

<p>I recall Snapchat becoming popular among friends about two years ago.</p>

<p>I tried it, it was hitting my nerves and my battery was disappearing like a ghost (see what I did there?) so I got rid of it soon by deleting my account.</p>

<p>During last summer my friends were on Snapchat frenzy so I got it back on my phone (with a different username as deleting your account on snapchat does not release the username).</p>

<p>The engagement was crazy!</p>

<p>Everyone is eager to see what you (or anyone) posted and you are crazy to see what everyone is posting.</p>

<p>The same was with Facebook on the first years. It was the easiest way to share something with the world. </p>

<p>Then twitter made it even faster. It also gave you the possibility if you were fast and funny enough to become a celebrity of sort on the medium. People were expecting for your content.</p>

<p>Same thing with Instagram. The faster way to share a picture. There you could also get the celebrity feeling. (hashtags are a powerfull thing).</p>

<p>Then there was Snapchat which is even faster and more intimate! And now <a href="http://techcrunch.com/2015/07/28/a-week-in-casey-neistats-new-app-beme-has-1-1m-videos-shared/http://" target="_blank">beme</a> is making things more faster! And faster makes for more engagement.</p>

<p>If I did not snap in a day or two people (and not just close friends) will ask me:</p>

<blockquote>
  <p>“No snap today?” or “Everything ok? I didn’t see a snap from you today!”</p>
</blockquote>

<p>Let me tell you, it is pretty nice (and somewhat vain) when people are eager to see your highlight of the day (or your tweet, or instagram picture or whatever). When this happens you feel like sharing a lot more. Everyone feels like they are <a href="http://youtube.com/caseyneistat">Casey Neistat</a> (who is awesome).\</p>

<p>Because when you share fast, others check out fast because they fear of missing something in the scrolling sea or in the Snap lifespan. To give an example, even if the lifespan of a Snap is 24h, it becomes irrelevant in an hour or two.</p>

<p>That’s pretty much it.. And most active users are suffering from this behaviour, me included.</p>

<p>As a result you are scrolling and refreshing way too much. So, it is time for me to tone down a bit.</p>

<p>I deleted Twitter, Snapchat, Instagram and Medium from my phone and spoiler alert: I am not locked in at the bathroom eating my nails!</p>

<p>My tablet is for slacking anyway so these apps live a happy life there.\</p>

<p>I just have less brakes and get more work done. Simple as that.</p>

<p>\</p>

<p><em>Liked it? </em><a href="http://eepurl.com/bIEi_9"><em>Every week I send an email like this</em></a><em>. It involves:</em></p>

<ul>
  <li><em>Interesting things from the internet world.</em></li>
  <li><em>Discussions on pressing matters.</em></li>
  <li><em>Some personal additions.</em></li>
  <li><em>Many surprises!</em></li>
</ul>

<p><a href="http://eepurl.com/bIEi_9"><em>Join now</em></a><em> and enjoy every Friday in your inbox! </em><a href="http://eepurl.com/bIEi_9"><em>Sign Up here!</em></a></p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Personal" /><summary type="html"><![CDATA[It all started with Twitter.. or foursquare… or Snapchat! I think it was foursquare though. Twitter in Greece was not that popular and foursquare was a funny game for me. I even checked “in” at the bus stop. Anyhow. The last two months I’ve been under the Snapchat frenzy and friends I razzed about their addiction are coming out swinging. I also share more on Instagram and Twitter. Swarm (formerly foursquare) check-ins never stopped. This ranting is just a vague assessment of what is happening with our social media addiction and oversharing.  I recall Snapchat becoming popular among friends about two years ago. I tried it, it was hitting my nerves and my battery was disappearing like a ghost (see what I did there?) so I got rid of it soon by deleting my account. During last summer my friends were on Snapchat frenzy so I got it back on my phone (with a different username as deleting your account on snapchat does not release the username). The engagement was crazy! Everyone is eager to see what you (or anyone) posted and you are crazy to see what everyone is posting. The same was with Facebook on the first years. It was the easiest way to share something with the world.  Then twitter made it even faster. It also gave you the possibility if you were fast and funny enough to become a celebrity of sort on the medium. People were expecting for your content. Same thing with Instagram. The faster way to share a picture. There you could also get the celebrity feeling. (hashtags are a powerfull thing). Then there was Snapchat which is even faster and more intimate! And now beme is making things more faster! And faster makes for more engagement. If I did not snap in a day or two people (and not just close friends) will ask me: “No snap today?” or “Everything ok? I didn’t see a snap from you today!” Let me tell you, it is pretty nice (and somewhat vain) when people are eager to see your highlight of the day (or your tweet, or instagram picture or whatever). When this happens you feel like sharing a lot more. Everyone feels like they are Casey Neistat (who is awesome).\ Because when you share fast, others check out fast because they fear of missing something in the scrolling sea or in the Snap lifespan. To give an example, even if the lifespan of a Snap is 24h, it becomes irrelevant in an hour or two. That’s pretty much it.. And most active users are suffering from this behaviour, me included. As a result you are scrolling and refreshing way too much. So, it is time for me to tone down a bit. I deleted Twitter, Snapchat, Instagram and Medium from my phone and spoiler alert: I am not locked in at the bathroom eating my nails! My tablet is for slacking anyway so these apps live a happy life there.\ I just have less brakes and get more work done. Simple as that. \ Liked it? Every week I send an email like this. It involves: Interesting things from the internet world. Discussions on pressing matters. Some personal additions. Many surprises! Join now and enjoy every Friday in your inbox! Sign Up here!]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">U Can’t Touch This</title><link href="https://tsangiotis.com/u-cant-touch-this/" rel="alternate" type="text/html" title="U Can’t Touch This" /><published>2015-08-10T00:00:00+00:00</published><updated>2015-08-10T00:00:00+00:00</updated><id>https://tsangiotis.com/u-cant-touch-this</id><content type="html" xml:base="https://tsangiotis.com/u-cant-touch-this/"><![CDATA[<p><img src="/assets/images/posts/u-cant-touch-this/01-large_1-QrWPWyapYktXYLxbdVsTwA.jpeg" alt="" /></p>

<p>No bro, it is not cool when I enter the room, you use my computer and then ask me if it’s cool. It wasn’t when you started it and it is not now.</p>

<blockquote>
  <p>I said <em>“Look at this”</em> showing you a picture. I surely don’t remember saying get the phone off my hand, check all my pictures/apps and don’t forget to log me out of Facebook to check if people still like you.</p>
</blockquote>

<blockquote>
  <p>That big old CD collection you see there, is not for you to pick up and shuffle.</p>
</blockquote>

<blockquote>
  <p>Same for my books library.</p>
</blockquote>

<blockquote>
  <p>You are at my home smoking without asking. OK. That happens above my keyboard with your hellish cigarette torch that spills ashes everywhere trying to figure out how YouTube works. Guess how OK that is my metalhead friend…</p>
</blockquote>

<blockquote>
  <p>Don’t get offended when you want to try out my computer/phone/glasses as if you’ve never seen one of them before and I politely say no.</p>
</blockquote>

<blockquote>
  <p>No little kid. The game you were playing in daddy’s office is not playable on my computer.</p>
</blockquote>

<blockquote>
  <p>My glasses have “My” and not “Our” in front of them. You don’t look sophisticated, you look like an idiot performing an unsuccessful myopia test to himself.</p>
</blockquote>

<blockquote>
  <p>You dare thinking about tasting my food/drink? From what planet did you come from?</p>
</blockquote>

<blockquote>
  <p>If I can reasonably call it mine, leave it alone.</p>
</blockquote>

<p>All the above, I can do to you. But you don’t mind, right?\</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Short" /><summary type="html"><![CDATA[No bro, it is not cool when I enter the room, you use my computer and then ask me if it’s cool. It wasn’t when you started it and it is not now. I said “Look at this” showing you a picture. I surely don’t remember saying get the phone off my hand, check all my pictures/apps and don’t forget to log me out of Facebook to check if people still like you. That big old CD collection you see there, is not for you to pick up and shuffle. Same for my books library. You are at my home smoking without asking. OK. That happens above my keyboard with your hellish cigarette torch that spills ashes everywhere trying to figure out how YouTube works. Guess how OK that is my metalhead friend… Don’t get offended when you want to try out my computer/phone/glasses as if you’ve never seen one of them before and I politely say no. No little kid. The game you were playing in daddy’s office is not playable on my computer. My glasses have “My” and not “Our” in front of them. You don’t look sophisticated, you look like an idiot performing an unsuccessful myopia test to himself. You dare thinking about tasting my food/drink? From what planet did you come from? If I can reasonably call it mine, leave it alone. All the above, I can do to you. But you don’t mind, right?\]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Elafonisos</title><link href="https://tsangiotis.com/elafonisos/" rel="alternate" type="text/html" title="Elafonisos" /><published>2015-08-03T11:25:00+00:00</published><updated>2015-08-03T11:25:00+00:00</updated><id>https://tsangiotis.com/elafonisos</id><content type="html" xml:base="https://tsangiotis.com/elafonisos/"><![CDATA[<h1 id="on-the-road">On the road</h1>

<p><img src="/images/elafonisos/road.jpg" alt="" /></p>

<!--more-->

<h1 id="simos-beach">Simos beach</h1>

<p>Simos is a the biggest beach in Elafonisos. It consists of Big Simos and Small Simos. There is sand everywhere and the water is mesmerising.</p>

<p><img src="/images/elafonisos/simos.jpg" alt="" /></p>

<p>The name of the beach is due to the of the drowning of the sponge diver Simos from Kalymnos in the area where the Small Simos beach is now.</p>

<p><img src="/images/elafonisos/boat.jpg" alt="" /></p>

<h1 id="company-was-awesome">Company was awesome</h1>

<p><img src="/images/elafonisos/company.jpg" alt="" /></p>

<p>There was cockfighting involved (and asking for mercy).</p>

<p><img src="/images/elafonisos/cockfight.jpg" alt="" /></p>

<h1 id="the-sun-goes-down">The sun goes down</h1>

<p>Islands of Madonna (Nisia tis Panagias) is a beach and a restaurant on a high spot of the island. From there you can have a great view of the beach and the sunset.</p>

<p><img src="/images/elafonisos/sunset.jpg" alt="" /></p>

<h1 id="resulted-to-moon-rising">Resulted to Moon rising</h1>

<p>The moon was almost full and with the help of some beer, a good lens and a tripod I almost saw Neil Armstrong’s flag.</p>

<p><img src="/images/elafonisos/moon.jpg" alt="" /></p>

<h1 id="the-port">The Port</h1>

<p>The town and port of Elafonisos is a typical one. Except the small rock where the small church of Saint Spyridonas is located. Saint Spyridonas is considered the protector of the island and the small rock is the most beautiful part of the port.</p>

<p><img src="/images/elafonisos/port.jpg" alt="" /></p>

<hr />

<p><em>Canon EOS 1000D (Canon EF-S 18-55mm f/3.5-5.6, Canon EF 70-200mm f/4.0L IS II USM) // Nexus 5</em></p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Photography" /><category term="Travel" /><category term="Greece" /><category term="Vacation" /><summary type="html"><![CDATA[On the road]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">A smart and witty Martian</title><link href="https://tsangiotis.com/a-smart-and-witty-martian/" rel="alternate" type="text/html" title="A smart and witty Martian" /><published>2015-07-13T06:00:00+00:00</published><updated>2015-07-13T06:00:00+00:00</updated><id>https://tsangiotis.com/a-smart-and-witty-martian</id><content type="html" xml:base="https://tsangiotis.com/a-smart-and-witty-martian/"><![CDATA[<p><img src="/images/a-smart-and-witty-martian/martian.png" alt="" /></p>

<p>Just yesterday I finished reading <a href="https:///www.goodreads.com/book/show/18007564-the-martian">The Martian</a>. I wont lie, this book is not for eveyone but I really liked it.</p>

<p>Mark Whitney, an engineer and botanist, was left on Mars by accident and he has to survive some years since he has even a chance to get back to Earth.</p>

<p>While he is at the same time the luckiest and unluckiest person on Mars he manages to crack jokes all the time.</p>

<p>Here are some of the highlights I made on Kindle (<em>WARNING!</em> Minor spoilers ahead, proceed with caution)!</p>

<!--more-->

<blockquote>
  <p>How come Aquaman can control whales? They’re mammals! Makes no sense.</p>
</blockquote>

<blockquote>
  <p>I used a sophisticated method to remove sections of plastic (hammer), then carefully removed the solid foam insulation (hammer again).</p>
</blockquote>

<blockquote>
  <p>Using advanced construction techniques (duct tape)</p>
</blockquote>

<blockquote>
  <p>Even if it’s got a bigger problem, he’s an engineer!” Dialing, he added, “Fixing things is his job!”.</p>
</blockquote>

<blockquote>
  <p>It’s a strange feeling. Everywhere I go, I’m the first. Step outside the rover? First guy ever to be there! Climb a hill? First guy to climb that hill! Kick a rock? That rock hadn’t moved in a million years!</p>
</blockquote>

<blockquote>
  <p>The battery was a lithium thionyl chloride non-rechargeable. I figured that out from some subtle clues: the shape of the connection points, the thickness of the insulation, and the fact that it had “LiSOCl2 NON-RCHRG” written on it.</p>
</blockquote>

<blockquote>
  <p>“Yes!” They said, “Yes!” I haven’t been this excited about a “yes” since prom night!</p>
</blockquote>

<blockquote>
  <p>“Brought product to surface of Mars. It stopped working. 0/10.”</p>
</blockquote>

<blockquote>
  <p>“Jesus, what a complicated process,” Venkat said. “Try updating a Linux server sometime,” Jack said.</p>
</blockquote>

<blockquote>
  <p>I mostly ignore them. I don’t want to come off as arrogant here, but I’m the best botanist on the planet.</p>
</blockquote>

<blockquote>
  <p>I told NASA what I did. Our (paraphrased) conversation was:
<strong>Me:</strong> “I took it apart, found the problem, and fixed it.”
<strong>NASA:</strong> “Dick.”</p>
</blockquote>

<blockquote>
  <p>Yes, of course duct tape works in a near-vacuum. Duct tape works anywhere. Duct tape is magic and should be worshiped.</p>
</blockquote>

<blockquote>
  <p>I used a geological sample container (also known as “a box”).</p>
</blockquote>

<blockquote>
  <p>I got really bored, so I decided to pick a theme song!</p>
</blockquote>

<blockquote>
  <p>Something appropriate. And naturally, it should be something from Lewis’s godawful seventies collection. It wouldn’t be right any other way. There are plenty of great candidates: “Life on Mars?” by David Bowie, “Rocket Man” by Elton John, “Alone Again (Naturally)” by Gilbert O’Sullivan.</p>
</blockquote>

<blockquote>
  <p>But I settled on “Stayin’ Alive” by the Bee Gees.</p>
</blockquote>

<blockquote>
  <p>The worst moments in life are heralded by small observations. The tiny lump on your side that wasn’t there before. Coming home to your wife and seeing two wineglasses in the sink. Anytime you hear “We interrupt this program …”</p>
</blockquote>

<blockquote>
  <p>One kilowatt-hour per sol is … it can be anything … um … I suck at this … I’ll call it a “pirate-ninja.”</p>
</blockquote>

<blockquote>
  <p>I tested the brackets by hitting them with rocks. This kind of sophistication is what we interplanetary scientists are known for.</p>
</blockquote>

<blockquote>
  <p>That makes me a pirate! A space pirate!</p>
</blockquote>

<blockquote>
  <p>The fifth one is reserved for the day I launch. It’s labeled “Last Meal.”</p>
</blockquote>

<blockquote>
  <p>“What would an Apollo astronaut do?” He’d drink three whiskey sours, drive his Corvette to the launchpad, then fly to the moon in a command module smaller than my Rover. Man those guys were cool.</p>
</blockquote>

<blockquote>
  <p>I’m in my space suit on Mars and I’m navigating with sixteenth-century tools. But hey, they work.</p>
</blockquote>

<blockquote>
  <p>They’ll probably say, “Thanks for gathering samples. But leave them behind. And one of your arms, too. Whichever one you like least.”</p>
</blockquote>

<blockquote>
  <p>Have you ever taken the wrong freeway entrance? You just need to drive to the next exit to turn around, but you hate every inch of travel because you’re going away from your goal.</p>
</blockquote>

<blockquote>
  <p>I’m traveling 90 kilometers per day as usual, but I only get 37 kilometers closer to Schiaparelli because Pythagoras is a dick.</p>
</blockquote>

<blockquote>
  <p>I started the day with some nothin’ tea. Nothin’ tea is easy to make. First, get some hot water, then add nothin’.</p>
</blockquote>

<blockquote>
  <p>It’s been a long time since I’ve seen a woman. Just sayin’. Anyway, to ensure I don’t crash again, I’ll — Seriously … no women in like, years. I don’t ask for much. Believe me, even back on Earth a botanist/mechanical engineer doesn’t exactly have ladies lined up at the door. But still, c’mon.</p>
</blockquote>

<blockquote>
  <p>It’s true, you know. In space, no one can hear you scream like a little girl.</p>
</blockquote>

<blockquote>
  <p>But really, they did it because every human being has a basic instinct to help each other out. It might not seem that way sometimes, but it’s true.</p>
</blockquote>]]></content><author><name>Tasos Sangiotis</name></author><category term="Short" /><category term="Books" /><category term="Movies" /><summary type="html"><![CDATA[Just yesterday I finished reading The Martian. I wont lie, this book is not for eveyone but I really liked it. Mark Whitney, an engineer and botanist, was left on Mars by accident and he has to survive some years since he has even a chance to get back to Earth. While he is at the same time the luckiest and unluckiest person on Mars he manages to crack jokes all the time. Here are some of the highlights I made on Kindle (WARNING! Minor spoilers ahead, proceed with caution)!]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Well, it looks like the Deadpool movie is going to be awesome!</title><link href="https://tsangiotis.com/well-it-looks-like-the-deadpool-movie-is-going-to-be-awesome/" rel="alternate" type="text/html" title="Well, it looks like the Deadpool movie is going to be awesome!" /><published>2015-07-12T06:00:00+00:00</published><updated>2015-07-12T06:00:00+00:00</updated><id>https://tsangiotis.com/well-it-looks-like-the-deadpool-movie-is-going-to-be-awesome</id><content type="html" xml:base="https://tsangiotis.com/well-it-looks-like-the-deadpool-movie-is-going-to-be-awesome/"><![CDATA[<p><img src="/images/well-it-looks-like-the-deadpool-movie-is-going-to-be-awesome/deadpool.jpeg" alt="" /></p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Short" /><category term="Deadpool" /><category term="Movies" /><summary type="html"><![CDATA[]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Questions after No</title><link href="https://tsangiotis.com/questions-after-no/" rel="alternate" type="text/html" title="Questions after No" /><published>2015-07-06T06:00:00+00:00</published><updated>2015-07-06T06:00:00+00:00</updated><id>https://tsangiotis.com/questions-after-no</id><content type="html" xml:base="https://tsangiotis.com/questions-after-no/"><![CDATA[<p><img src="/images/questions-after-no/1-gZTKmrZgI7Z8Lau3e4cKHg.jpeg" alt="" /></p>

<p>It was a rough and fast week. From the announcement of the Greek referendum to the announcement of the final and big <em>No</em>.</p>

<p>That was little time to think about many things for me and for everyone.</p>

<p>However the million (Euro?) question was the following:</p>

<blockquote>
  <p>What is the plan?</p>
</blockquote>

<!--more-->

<p>Not the plan of the government, not the plan of the people and not even the plan of the rest European leaders.</p>

<p>What is the grand plan? Is there any?</p>

<p>Nobody really knows but I write this trying to put my thoughts and mental simulations in order. I believe I will fail but it would be interesting. Let’s calmly answer some questions.</p>

<h2 id="what-was-the-questionintention">What was the question/intention?</h2>

<p><img src="/images/questions-after-no/refgr.jpeg" alt="" /></p>

<p><img src="/images/questions-after-no/refgb.jpeg" alt="" /></p>

<p>As the question was anything but clear, through the week we had many different scenarios for this.</p>

<ul>
  <li>The official one was that Syriza wanted to push Europe for a better deal.</li>
  <li>The other was that Syriza was aiming to reduce the political cost of making a high austerity deal.</li>
  <li>Another was that Syriza was tricking people to answer if they prefer to be in or out of the Eurozone and to gain time.</li>
</ul>

<h2 id="what-is-the-clearer-message-we-can-get-from-the-result">What is the clearer message we can get from the result?</h2>

<p>That is a difficult one. Because of the unclear nature of the question, people answered to the version of the question they understood.</p>

<p>People and especially young ones (<em>75%</em> of them) voted No. At the same time<em>75%</em> of all people answered to polls that they wanted to stay in the Eurozone.</p>

<p>My interpretation is that this means out with the old and in with the new. Not just the old and the new of Greece but the old of Europe too.</p>

<p>At the same time people threw the ball back at Alexis Tsipras.</p>

<h2 id="why-so-loudly">Why so loudly?</h2>

<p>The result got me by surprise. <em>No</em> won by something more that <strong>60/30</strong> and in Athens there was a <strong>70/30</strong> ratio. We should examine why.</p>

<p><em>Yes</em> was represented (maybe deliberately) in Greece by the people that run Greece after its big political reform in 1974 and in Europe by anyone who has been austere to Greece in the past 5 years. Also almost all private media were channeling people to vote <em>Yes</em>. That pretty much erased chances for a_Yes _because Greek people hate all or some of the above categories.</p>

<p>However polls and even <a href="https:///topsy.com/analytics?q1=Oxi%20OR%20%CE%BF%CF%87%CE%B9&amp;q2=Nai%20OR%20%CE%BD%CE%B1%CE%B9&amp;via=Topsy">Twitter stats</a> showed that people changed their minds at the last time.</p>

<p><img src="/images/questions-after-no/topsy.png" alt="" /></p>

<p>People are angry with the situation. The last week helped to that. An hour a day in queue while in fear and uncertainty was an optimistic day plan. Angry people don’t choose positively.</p>

<p>At the same time the government strongly supported that there is no danger in choosing No. It seems like people believed them.</p>

<h4 id="what-happens-now">What happens now?</h4>

<p>Nobody knows for sure. We still have to find out what we voted for.</p>

<blockquote>
  <p>So… now what!? <a href="https://twitter.com/hashtag/Greferendum?src=hash">#Greferendum</a></p>

  <p>— The Greek Analyst (@GreekAnalyst) <a href="https://twitter.com/GreekAnalyst/status/617783648323018752">July 5, 2015</a></p>
</blockquote>

<p>The Prime Minister is ready to get again in negotiations and for the first time in these 5 months, Alexis Tsipras will make a move to form a united front for Greece with the help of the rest Greek leaders.</p>

<p>This could help Greece in the negotiations or if things go sideways Alexis Tsipras political cost would be highly reduced.</p>

<p>Many believe that this was the plan all along. That governing is too much for Syriza and they prefer to get back at the opposition where they feel comfortable and let the others take the blame of anything inevitable that will happen. It makes sense if you think how easy this gets with the referendum.</p>

<p>Now that we are here, let’s note that ex Prime Minister Antonis Samaras stepped down last night as a party leader meaning that the New Democracy party is going to get through (likely massive) reforms to become relevant and avoid the fate of Pasok.</p>

<p>At the same time Greece is divided. Many Syriza voters voted <em>Yes</em> because they feel betrayed by Syriza and many voters of other parties that were pro-<em>Yes</em> voted <em>No</em>. The thing is not party related and the word traitor gets thrown around a lot. People are afraid and uncertain. At least I am a little (less than last Friday I must say). This must be fixed really soon.</p>

<h4 id="what-can-we-do">What can we do?</h4>

<p>I am on a bus to Patras. A woman next to me is on the phone organising a play and her contact on the phone is anxious about what would happen. But the show must go on.</p>

<p>Be optimistic, hope for the best, continue our lives and search for ways to produce wealth <em>in</em> Greece. Armageddon is not coming and this will not be the end of everything. However things can still go bad or really bad but they can also go better.</p>

<p>Only time will tell…</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><category term="Greece" /><summary type="html"><![CDATA[It was a rough and fast week. From the announcement of the Greek referendum to the announcement of the final and big No. That was little time to think about many things for me and for everyone. However the million (Euro?) question was the following: What is the plan?]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Ας μην ξανακολλάμε</title><link href="https://tsangiotis.com/as-min-ksanakollame/" rel="alternate" type="text/html" title="Ας μην ξανακολλάμε" /><published>2015-07-03T00:00:00+00:00</published><updated>2015-07-03T00:00:00+00:00</updated><id>https://tsangiotis.com/as-min-ksanakollame</id><content type="html" xml:base="https://tsangiotis.com/as-min-ksanakollame/"><![CDATA[<p><img src="/assets/images/posts/as-min-ksanakollame/01-large_as.jpeg" alt="" /></p>

<p>Όσο άσχετο και να είναι το δημοψήφισμα ως προς το ερώτημά του πλέον, σαν Έλληνες έχουμε πάρει θέσεις ηχηρά και οπαδικά ως συνήθως. Αναπόφευκτα λοιπόν τσακωνόμαστε και ξεκατινιαζόμαστε. Άριστοι σε αυτό από τα βάθη της ιστορίας.\</p>

<p><img src="/assets/images/posts/as-min-ksanakollame/02-large_fpalm.jpeg" alt="" /></p>

<p>Είμαι 22. Στη δύσκολη αρχή της κρίσης πήγαινα ακόμη σχολειο. Μικρές οι απαιτήσεις μου και χωρίς ρωγμές η φυσαλίδα μου.\</p>

<p>Από τότε σπούδασα σε άλλη πόλη, ταξίδεψα, δούλεψα, πήρα μια μικρή ιδέα από δημόσιες υπηρεσίες και ενήλικες διαδικασίες και λίγο πολύ είδα μια πιθαμή πράγματα από τον κόσμο και την Ελλάδα.</p>

<p>Ταυτόχρονα ζω στο ίντερνετ. Το ίντερνετ είναι ένα άγριο μέρος όταν ο κόσμος είναι μπερδεμένος και πορωμένος όπως τώρα. Να χτυπάς με κακία ένα πληκτρολόγιο είναι αρκετά εύκολη και γρήγορη ευχαρίστηση. Τα αποτελέσματα στην προκειμένη περίπτωση ήταν αναμενόμενα.</p>

<p>Το λιγότερο αναμενόμενο για μένα ήταν το ότι βρίζαμε και υποβιβάζαμε τον Πύρρο Δήμα όταν πήρε θέση στην τηλεόραση. Έναν άνθρωπο που ο παππούς μου με φώναζε από μικρός που ήμουν να δω να σηκώνει τα βάρη, τον δοξάζαμε σαν έθνος για χρόνια και ανέβαζε την εθνική μας υπερηφάνεια με κάθε αρασέ και ζετέ. Και τώρα είναι ο<em>Αλβανός</em>, ο <em>αγράμματος</em> και <em>βολεμένος</em>.</p>

<p>Αφού βρέθηκα αναπόφευκτα και σε ένα ΑΤΜ κατέληξα ότι για ακόμη μία φορά δεν έχουμε κοινό στόχο. Μόνο χωριζόμαστε ανάλογα με τους κοινούς μας εχθρούς.</p>

<p>Ο κόσμος κοιτάει το κενό λες και έχει φάει μία σφαλιάρα και δεν έχει ακόμη συνέλθει. Στο δρόμο οι οδηγοί είναι νευρικοί. Άκουσα στο ραδιόφωνο κόσμο να πλακώνεται στην ουρά στο πεζοδρόμιο για το ποιός φταίει.</p>

<blockquote>
  <p>- Ο δικός σου ρε μαλακα!\</p>
  <ul>
    <li>Γιατί, ο δικός σου καλύτερος ήταν ρε προδότη;</li>
  </ul>
</blockquote>

<p>Τους χώρισε ένας ηλικιωμένος. Κάποιου άλλου του έσπασαν το μαγαζί επειδή είχε μία σημαία της Ευρώπης έξω.</p>

<p>Ήδη νομίζω ότι χτίζουμε μόνοι μας ένα εμφύλιο. Πολλές οι φωτογραφίες από τον εφοδιασμό μας για πυρηνικό πόλεμο.</p>

<h2 id="ας-μην-πάει-μακρυά-αυτή-η-βαλίτσα"><em>Ας μην πάει μακρυά αυτή η βαλίτσα.</em></h2>

<p>Ό, τι και να βγει από αυτό το “δημοψήφισμα” τη Δευτέρα θα πρέπει να χτίσουμε μαζί τη χώρα και να βοηθήσουμε όποιον το χρειάζεται. Το ΝΑΙ και το ΟΧΙ είναι μία προτίμηση σε ένα ερώτημα που δεν υπάρχει πια. Είναι μία δήλωση. Πόσο καλό ή κακό μπορεί να κάνει αυτή η δήλωση μένει να φανεί. Δεν παίζουμε μπάλα και δεν υπάρχει κύπελλο για το νικητή.</p>

<p>Συζητήστε μεταξύ σας με ανοιχτό μυαλό και χωρίς μνησικακίες. Σεβαστείτε τον άλλο και καταλάβετέ τον. Αυτό είναι αναγκαίο.</p>

<h2 id="αν-δεν-αντέχουμε-ο-ένας-τον-άλλο-τη-δευτέρα-το-παιχνίδι-έχει-ήδη-χαθεί"><em>Αν δεν αντέχουμε ο ένας τον άλλο τη Δευτέρα το παιχνίδι έχει ήδη χαθεί.</em></h2>]]></content><author><name>Tasos Sangiotis</name></author><category term="Greek" /><category term="Opinion" /><summary type="html"><![CDATA[Όσο άσχετο και να είναι το δημοψήφισμα ως προς το ερώτημά του πλέον, σαν Έλληνες έχουμε πάρει θέσεις ηχηρά και οπαδικά ως συνήθως. Αναπόφευκτα λοιπόν τσακωνόμαστε και ξεκατινιαζόμαστε. Άριστοι σε αυτό από τα βάθη της ιστορίας.\ Είμαι 22. Στη δύσκολη αρχή της κρίσης πήγαινα ακόμη σχολειο. Μικρές οι απαιτήσεις μου και χωρίς ρωγμές η φυσαλίδα μου.\ Από τότε σπούδασα σε άλλη πόλη, ταξίδεψα, δούλεψα, πήρα μια μικρή ιδέα από δημόσιες υπηρεσίες και ενήλικες διαδικασίες και λίγο πολύ είδα μια πιθαμή πράγματα από τον κόσμο και την Ελλάδα. Ταυτόχρονα ζω στο ίντερνετ. Το ίντερνετ είναι ένα άγριο μέρος όταν ο κόσμος είναι μπερδεμένος και πορωμένος όπως τώρα. Να χτυπάς με κακία ένα πληκτρολόγιο είναι αρκετά εύκολη και γρήγορη ευχαρίστηση. Τα αποτελέσματα στην προκειμένη περίπτωση ήταν αναμενόμενα. Το λιγότερο αναμενόμενο για μένα ήταν το ότι βρίζαμε και υποβιβάζαμε τον Πύρρο Δήμα όταν πήρε θέση στην τηλεόραση. Έναν άνθρωπο που ο παππούς μου με φώναζε από μικρός που ήμουν να δω να σηκώνει τα βάρη, τον δοξάζαμε σαν έθνος για χρόνια και ανέβαζε την εθνική μας υπερηφάνεια με κάθε αρασέ και ζετέ. Και τώρα είναι οΑλβανός, ο αγράμματος και βολεμένος. Αφού βρέθηκα αναπόφευκτα και σε ένα ΑΤΜ κατέληξα ότι για ακόμη μία φορά δεν έχουμε κοινό στόχο. Μόνο χωριζόμαστε ανάλογα με τους κοινούς μας εχθρούς. Ο κόσμος κοιτάει το κενό λες και έχει φάει μία σφαλιάρα και δεν έχει ακόμη συνέλθει. Στο δρόμο οι οδηγοί είναι νευρικοί. Άκουσα στο ραδιόφωνο κόσμο να πλακώνεται στην ουρά στο πεζοδρόμιο για το ποιός φταίει. - Ο δικός σου ρε μαλακα!\ Γιατί, ο δικός σου καλύτερος ήταν ρε προδότη; Τους χώρισε ένας ηλικιωμένος. Κάποιου άλλου του έσπασαν το μαγαζί επειδή είχε μία σημαία της Ευρώπης έξω. Ήδη νομίζω ότι χτίζουμε μόνοι μας ένα εμφύλιο. Πολλές οι φωτογραφίες από τον εφοδιασμό μας για πυρηνικό πόλεμο. Ας μην πάει μακρυά αυτή η βαλίτσα. Ό, τι και να βγει από αυτό το “δημοψήφισμα” τη Δευτέρα θα πρέπει να χτίσουμε μαζί τη χώρα και να βοηθήσουμε όποιον το χρειάζεται. Το ΝΑΙ και το ΟΧΙ είναι μία προτίμηση σε ένα ερώτημα που δεν υπάρχει πια. Είναι μία δήλωση. Πόσο καλό ή κακό μπορεί να κάνει αυτή η δήλωση μένει να φανεί. Δεν παίζουμε μπάλα και δεν υπάρχει κύπελλο για το νικητή. Συζητήστε μεταξύ σας με ανοιχτό μυαλό και χωρίς μνησικακίες. Σεβαστείτε τον άλλο και καταλάβετέ τον. Αυτό είναι αναγκαίο. Αν δεν αντέχουμε ο ένας τον άλλο τη Δευτέρα το παιχνίδι έχει ήδη χαθεί.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">No drama please</title><link href="https://tsangiotis.com/no-drama-please/" rel="alternate" type="text/html" title="No drama please" /><published>2015-06-29T00:00:00+00:00</published><updated>2015-06-29T00:00:00+00:00</updated><id>https://tsangiotis.com/no-drama-please</id><content type="html" xml:base="https://tsangiotis.com/no-drama-please/"><![CDATA[<p>Yesterday I realised that an acquaintance unfriended me on Facebook due to a certain political post I suppose.\</p>

<p>I would lie if I said that his profile did not stood up on my feed. He is a very loud supporter of the Syriza government and I have read in the past many of his rage posts. I did not agree but I really evaluated them without being biased.\</p>

<p>I don’t have any close ties to the guy. We met at a Startup Weekend, we share interest for certain technologies and comment on each others technical blogs from time to time.</p>

<p>But when I realised that I don’t see the raging posts anymore, for a moment I felt sad.</p>

<p>Then I read something from a friend:</p>

<p><img src="/assets/images/posts/no-drama-please/01-large_conv.png" alt="" /></p>

<p>Same thing there and I suppose there are more examples out there.\</p>

<p>So, Greek people are diminished to fiercely choosing sides. We are choosing sides on a question we don’t understand and we refuse to even see people with different opinions that may make us rethink ours. All this with 6 days in front of us and without an official statement on what the question will be or if there is a secret question to find between the lines.</p>

<p>Yeah, Facebook is not real life except when it is. People are putting opinions up there and evaluate other people opinions. So right now Facebook and Twitter, are the broadest means of conversation.</p>

<p>I know it is hard when you have been dragged around so much and I strongly believe that this choice should not have fallen on our backs.</p>

<p>However this is the situation now and until Sunday you better spend your time free of drama and dogma, getting as much opinions as possible and demand calm voices from people around you.</p>

<h2 id="just-dont-think-about-your-self-and-make-the-choice-you-believe-is-better-for-your-children"><em>Just don’t think about your self and make the choice you believe is better for your children.</em></h2>

<p><em>Whatever that is, if you really believe it, I am confident it is the right one.</em></p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><summary type="html"><![CDATA[Yesterday I realised that an acquaintance unfriended me on Facebook due to a certain political post I suppose.\ I would lie if I said that his profile did not stood up on my feed. He is a very loud supporter of the Syriza government and I have read in the past many of his rage posts. I did not agree but I really evaluated them without being biased.\ I don’t have any close ties to the guy. We met at a Startup Weekend, we share interest for certain technologies and comment on each others technical blogs from time to time. But when I realised that I don’t see the raging posts anymore, for a moment I felt sad. Then I read something from a friend: Same thing there and I suppose there are more examples out there.\ So, Greek people are diminished to fiercely choosing sides. We are choosing sides on a question we don’t understand and we refuse to even see people with different opinions that may make us rethink ours. All this with 6 days in front of us and without an official statement on what the question will be or if there is a secret question to find between the lines. Yeah, Facebook is not real life except when it is. People are putting opinions up there and evaluate other people opinions. So right now Facebook and Twitter, are the broadest means of conversation. I know it is hard when you have been dragged around so much and I strongly believe that this choice should not have fallen on our backs. However this is the situation now and until Sunday you better spend your time free of drama and dogma, getting as much opinions as possible and demand calm voices from people around you. Just don’t think about your self and make the choice you believe is better for your children. Whatever that is, if you really believe it, I am confident it is the right one.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">WTF?! Oh shit! #Greferendum</title><link href="https://tsangiotis.com/wtf-oh-shit-number-greferendum/" rel="alternate" type="text/html" title="WTF?! Oh shit! #Greferendum" /><published>2015-06-28T06:00:00+00:00</published><updated>2015-06-28T06:00:00+00:00</updated><id>https://tsangiotis.com/wtf-oh-shit-number-greferendum</id><content type="html" xml:base="https://tsangiotis.com/wtf-oh-shit-number-greferendum/"><![CDATA[<p>That was me checking twitter two nights ago while getting ready for an exam.</p>

<p>I jumped from my study and fired up the TV.</p>

<p>Alexis Tsipras announced that there will be a referendum next Sunday on whether to accept a deal made by the three institutions or not.</p>

<p>The government asked people to answer <em>no</em> while not explaining what that means. Most experts however agree that this will lead to a Grexit.</p>

<p>All this happens while the current program, thus life support of Greece’s banking system, is ending on Tuesday with institutions refusing an extension.</p>

<p>I froze and went for a walk to see an image like the one above at any ATM around.</p>

<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">This is a historic moment. We moved from 40 years of govt opportunism, to 5 months of govt amateurism that end w a big bang. <a href="https://twitter.com/hashtag/Greece?src=hash">#Greece</a></p>&mdash; The Greek Analyst (@GreekAnalyst) <a href="https://twitter.com/GreekAnalyst/status/614549466268454912">June 26, 2015</a></blockquote>
<script async="" src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

<!--more-->

<p>That created much panic. For two days there is a continuous bank run.</p>

<p><img src="/images/wtf-oh-shit-number-greferendum/brun.jpeg" alt="" /></p>

<p>Yanis Varoufakis just enforced capital control with banks and ATMs closing and 60€/day withdrawal limit from next Tuesday.</p>

<p>That means older people who don’t have a debit card cannot get their pension on Wednesday.</p>

<p>People went on crazy mode. In addition to the bank run they buy food and top up their fuel tanks.</p>

<blockquote>
  <p>60€ withdrawal limit from banks reports <a href="https://twitter.com/pitrofos4">@pitrofos4</a> in <a href="https://twitter.com/skaigr">@skaigr</a> when <a href="https://twitter.com/hashtag/Greek?src=hash">#Greek</a> banks open next Tuesday</p>

  <p>— Eleni Varvitsiotis (@Elbarbie) <a href="https://twitter.com/Elbarbie/status/615228786943127552">June 28, 2015</a></p>
</blockquote>

<p>The situation is fucked up and things are happening all the time.</p>

<p>There are many theories on what is the plan of the government or the possible outcomes. In any case, the people who are going to decide the future of Greece are in great shock and the decision they make should be thought through.</p>

<p>Polls are showing that people still <a href="https:///news.in.gr/greece/article/?aid=1500008268">prefer to stay in Europe</a> (sorry, Greek article).</p>

<h2 id="myself-i-am-furious">Myself I am furious.</h2>

<p>In a very difficult time for Greece the government decides to divide the people and play dice with their fate without having a plan and acting plain stupid and irresponsibly. Also they are giving people 7 days to decide on something that is their responsibility to negotiate and decide for 6 months now. They are cowardly playing hot potato with the people and dress it as democracy at the end of the cliff.</p>

<p><img src="/images/wtf-oh-shit-number-greferendum/clif.jpeg" alt="" /></p>

<p>If this is a negotiation tactic or one of Varoufakis famous game theory tricks, the risk and the cost are just too high. Even if it works there will not be a huge gain if any. Also trust in Greece is lower than ever. Specially when we are at the verge of the summer, the most prosperous time of the year for Greece. This is bad. People will suffer and will be our fault and no one elses.</p>

<p>Many believe that Syriza’s plan from the start was to lead the country out of the euro and try to pull a Chávez in Greece. This is way different from what the citizens asked him for. I did not believe this at first but now I can’t understand the logic if there is one.</p>

<p>Even if I really hoped at first, I’ve came to believe that they are just plain stupid cowards with no less appetite for power than anyone else before them. The difference with the previous governments is that they have no damn clue what is happening.</p>

<p>The only thing we can do is hope for the best, whatever that is…</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><category term="Greece" /><summary type="html"><![CDATA[That was me checking twitter two nights ago while getting ready for an exam. I jumped from my study and fired up the TV. Alexis Tsipras announced that there will be a referendum next Sunday on whether to accept a deal made by the three institutions or not. The government asked people to answer no while not explaining what that means. Most experts however agree that this will lead to a Grexit. All this happens while the current program, thus life support of Greece’s banking system, is ending on Tuesday with institutions refusing an extension. I froze and went for a walk to see an image like the one above at any ATM around. This is a historic moment. We moved from 40 years of govt opportunism, to 5 months of govt amateurism that end w a big bang. #Greece&mdash; The Greek Analyst (@GreekAnalyst) June 26, 2015]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Higher education and higher education communities like college are not dead</title><link href="https://tsangiotis.com/higher-education-and-higher-education-communities-like-college-are-not-dead/" rel="alternate" type="text/html" title="Higher education and higher education communities like college are not dead" /><published>2015-06-05T06:00:00+00:00</published><updated>2015-06-05T06:00:00+00:00</updated><id>https://tsangiotis.com/higher-education-and-higher-education-communities-like-college-are-not-dead</id><content type="html" xml:base="https://tsangiotis.com/higher-education-and-higher-education-communities-like-college-are-not-dead/"><![CDATA[<p><em>This is a response to</em> <em><a href="https://medium.com/@YesManWatches/is-college-dead-class-from-a-student-s-perspective-fd699dd0c180">“Is College Dead? Class From A Student’s Perspective”</a> and it was originally posted on <a href="https://medium.com/@tsagi/higher-education-and-higher-education-communities-like-college-are-not-dead-225a26e4fdf9">Medium</a>__.</em></p>

<p>As you have learned by now, college is not a must to start a business. There are people who own successful businesses and have not finished high-school. They learned by experience what you have learned in class (and in life).</p>

<p>That goes both ways. The fact that someone finishes college does not mean he/she is entitled to a great job.
<!--more-->
Education is actually slowly but steadily evolving. More and more companies are getting into that game and also students demand it. This evolution though is slow for the better I believe. Imagine if a whole system that involves students, professors, staff, companies and governments changed every year. There would be chaos. It is better to change small stuff in a slow and reliable manner than to jump to the newer trend all the time. The same happens with law by the way.</p>

<p>There is actually a say:</p>

<blockquote>
  <p>If it ain’t broke don’t fix it.</p>
</blockquote>

<p>Now that we got that out of the way, let’s talk about what you get from college.</p>

<h2 id="1-you-dont-get-to-reinvent-the-wheel">1. You don’t get to reinvent the wheel</h2>

<p>It is magical to learn from your own mistakes. However it is very time and money consuming. Imagine someone who makes carriages. Does he learn from someone how to make something simple like wheels or he tries by himself to start and invent the wheel from scratch?</p>

<p>The core of your trade remains the same. In college you learn the absolute core and build on top of it.</p>

<h2 id="2-you-learn-in-depth">2. You learn in depth</h2>

<p>College lets you learn things in depth if you study hard and learning things in depth is invaluable.</p>

<p>Keep in mind that there are people getting second and third degrees to learn things in depth and not just to put them on their resume.</p>

<p>Take for example <a href="https:///en.wikipedia.org/wiki/Elon_Musk">Elon Musk</a>. He could have started his awesome career two years earlier but he didn’t. He took his Bachelor of Science degree in Economics just after Bachelor of Science degree in Physics.</p>

<p>This gave him the advantage in many ways.</p>

<h2 id="3-valuable-connections-and-experiences">3. Valuable connections and experiences</h2>

<p>You probably wouldn’t have a sense that the people in your story existed if you skipped college.</p>

<p>You also wouldn’t have met your professors.</p>

<p>Your professors are not recordings of a class. They are most of the times respected and successful people in their field. You should learn about their work and ask for advice. They know the industry and it’s needs.</p>

<h2 id="4-college-broadens-your-horizons">4. College broadens your horizons</h2>

<p>Kind of cliche, I know but it’s true and it is the main stuff.</p>

<p>Steve Jobs was inspired by college (even if he dropped out). He was inspired because it gave him the ability to explore things that he didn’t know he liked.</p>

<p>Some more down to earth examples?</p>

<p>Some engineering students and friends in my university were excited about medicine and they published with some medicine students, a paper on bio-medicine that has seen great success.</p>

<p>Another guy I met at a party last month, is ready to leave for a university in France to write algorithmic economics simulations because he took an economics class and he liked it.</p>

<p>To conclude, college is not obsolete. Sure it can improve but it has great value even in its current form</p>

<p>Having said that, I hope that your business thrives and that I’ll see your watches soon on people’s wrists or even mine!☺</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><category term="Education" /><summary type="html"><![CDATA[This is a response to “Is College Dead? Class From A Student’s Perspective” and it was originally posted on Medium__. As you have learned by now, college is not a must to start a business. There are people who own successful businesses and have not finished high-school. They learned by experience what you have learned in class (and in life). That goes both ways. The fact that someone finishes college does not mean he/she is entitled to a great job.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">A Soliless smartwatch is a soulless smartwatch</title><link href="https://tsangiotis.com/a-soliless-smartwatch-is-a-soulless-smartwatch/" rel="alternate" type="text/html" title="A Soliless smartwatch is a soulless smartwatch" /><published>2015-06-02T06:00:00+00:00</published><updated>2015-06-02T06:00:00+00:00</updated><id>https://tsangiotis.com/a-soliless-smartwatch-is-a-soulless-smartwatch</id><content type="html" xml:base="https://tsangiotis.com/a-soliless-smartwatch-is-a-soulless-smartwatch/"><![CDATA[<p><img src="/images/a-soliless-smartwatch-is-a-soulless-smartwatch/solihead.jpeg" alt="" /></p>

<p>Google’s project Soli is the future of wearable interaction.</p>

<p>Project Soli is basically a miniaturised radar implementation of the LEAP Motion sensor.</p>

<!--more-->

<p>It can track precise finger gestures and at the same time is very compact as there is no combination of cameras and IR sensors.</p>

<iframe src="https://www.youtube.com/embed/0QNiZfSsPc0?feature=oembed" width="800" height="450" frameborder="0" allowfullscreen="allowfullscreen"></iframe>

<p>As you see there is no much of implementation. The team has only raw data support for now but they say soon the sensor will be at the hands of the developers.</p>

<p>The most profound application is wearables. And the hot wearable right now is the smartwatch.</p>

<p><img src="/images/a-soliless-smartwatch-is-a-soulless-smartwatch/soli.jpeg" alt="" /></p>

<p>On a regular watch you don’t fondle the screen all the time and the crown is not intended to be used more than twice a year. Also it shouldn’t matter if you wear gloves. So a new interface should arise that is capable of satisfying smartwatches requirements. I believe that this will be Soli (or something like it).</p>

<blockquote>
  <p>On a regular watch you don’t fondle the screen all the time and the crown is not intended to be used more than twice a year.</p>
</blockquote>

<p>Until two days ago, I was waiting for smartwatches to become less bulky but now I am waiting for manufacturers to incorporate Soli too.</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><category term="Google" /><category term="IoT" /><summary type="html"><![CDATA[Google’s project Soli is the future of wearable interaction. Project Soli is basically a miniaturised radar implementation of the LEAP Motion sensor.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">The Gambler</title><link href="https://tsangiotis.com/the-gambler/" rel="alternate" type="text/html" title="The Gambler" /><published>2015-05-29T06:00:00+00:00</published><updated>2015-05-29T06:00:00+00:00</updated><id>https://tsangiotis.com/the-gambler</id><content type="html" xml:base="https://tsangiotis.com/the-gambler/"><![CDATA[<p>I recently watched <a href="https:///www.imdb.com/title/tt2039393/">The Gambler</a> movie.</p>

<p>I liked it but most I liked the music!</p>

<p>Enjoy! :)</p>

<iframe class="embedly-embed" src="//cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fembed.spotify.com%2F%3Furi%3Dspotify%3Aalbum%3A4D5NBgMHcFISyxdvRdqE8L&amp;url=https%3A%2F%2Fopen.spotify.com%2Falbum%2F4D5NBgMHcFISyxdvRdqE8L&amp;image=http%3A%2F%2Fo.scdn.co%2Fcover%2F41dd854edf19a5b301a5a2a27a2cb888880ff423&amp;key=f4bac076b26f4b91aedcc8e1a057b429&amp;type=text%2Fhtml&amp;schema=spotify" width="394" height="500" frameborder="0" scrolling="no" allowfullscreen="allowfullscreen"></iframe>]]></content><author><name>Tasos Sangiotis</name></author><category term="Short" /><category term="Movies" /><category term="Music" /><category term="Soundtrack" /><summary type="html"><![CDATA[I recently watched The Gambler movie. I liked it but most I liked the music! Enjoy! :)]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">The Musk Battery</title><link href="https://tsangiotis.com/the-musk-battery/" rel="alternate" type="text/html" title="The Musk Battery" /><published>2015-05-29T00:00:00+00:00</published><updated>2015-05-29T00:00:00+00:00</updated><id>https://tsangiotis.com/the-musk-battery</id><content type="html" xml:base="https://tsangiotis.com/the-musk-battery/"><![CDATA[<p>Tesla is an electric car company. A really good one actually and I really want one of their cars one day.\</p>

<p>Over the last year <a href="http://venturebeat.com/2015/04/03/tesla-ships-record-10030-cars-in-q1-2015-up-55-year-over-year/">they managed to up their sales game by 55%</a>.</p>

<p><img src="/assets/images/posts/the-musk-battery/01-large_tesla.jpeg" alt="" /></p>

<p>Now you want one too!\</p>

<p>As it’s reasonable when in that place and with BMW and Audi up your ass you want to ship fast!\</p>

<p>So to keep those sweet state of the art batteries of yours coming by building a separate factory for them!</p>

<p><img src="/assets/images/posts/the-musk-battery/02-large_gigafactory.jpeg" alt="" /></p>

<p>You power it with solar energy and with the help of your batteries of course, you are going emission free and you get yourself some great investor backing.\</p>

<p>The math is good on your plant so why not make some batteries to power other people businesses and homes with the research you already did for yourself?</p>

<p>Looks good to me.</p>

<p>I don’t see something new though.</p>

<p>With a simple Google search there are options for about 5000 € that include the solar panels, setup and support of the whole system.</p>

<p>Maybe the systems are not so smart or pretty as the Tesla Power Pack but hey, I don’t think the smarts are Space X level stuff. Easily someone can make these smarts into a safe product if they have not done it already.</p>

<p>They work too, for less money and they include the expensive solar panels.</p>

<h2 id="ok-then-why-it-matters">OK then. Why it matters?\</h2>

<p>With the hype around Musks name and the attractiveness of the product, people are going to actually try the technology.\</p>

<p>This will give work to people doing the setup and providing the solar panels. With Tesla open-sourcing it’s patents there maybe will be an industry standard. Who knows?</p>

<p>As people become more familiar and hyped with going more environmental friendly I cannot see something wrong.</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><summary type="html"><![CDATA[Tesla is an electric car company. A really good one actually and I really want one of their cars one day.\ Over the last year they managed to up their sales game by 55%. Now you want one too!\ As it’s reasonable when in that place and with BMW and Audi up your ass you want to ship fast!\ So to keep those sweet state of the art batteries of yours coming by building a separate factory for them! You power it with solar energy and with the help of your batteries of course, you are going emission free and you get yourself some great investor backing.\ The math is good on your plant so why not make some batteries to power other people businesses and homes with the research you already did for yourself? Looks good to me. I don’t see something new though. With a simple Google search there are options for about 5000 € that include the solar panels, setup and support of the whole system. Maybe the systems are not so smart or pretty as the Tesla Power Pack but hey, I don’t think the smarts are Space X level stuff. Easily someone can make these smarts into a safe product if they have not done it already. They work too, for less money and they include the expensive solar panels. OK then. Why it matters?\ With the hype around Musks name and the attractiveness of the product, people are going to actually try the technology.\ This will give work to people doing the setup and providing the solar panels. With Tesla open-sourcing it’s patents there maybe will be an industry standard. Who knows? As people become more familiar and hyped with going more environmental friendly I cannot see something wrong.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Women in engineering</title><link href="https://tsangiotis.com/women-in-engineering/" rel="alternate" type="text/html" title="Women in engineering" /><published>2015-05-28T06:00:00+00:00</published><updated>2015-05-28T06:00:00+00:00</updated><id>https://tsangiotis.com/women-in-engineering</id><content type="html" xml:base="https://tsangiotis.com/women-in-engineering/"><![CDATA[<p><img src="/images/women-in-engineering/wie.jpeg" alt="" /></p>

<p>Women contribute massively in all technological fields. They are an active part of the engineering community.</p>

<p>But they should contribute <em>more</em>.</p>

<p>Why they don’t? Because of numbers.</p>

<!--more-->

<p>Just days ago Business Insider published it’s yearly showcase of the <a href="https:///www.businessinsider.com/most-powerful-women-engineers-in-2015-2015-5">most powerful women engineers</a> and as they say, it was hard to dig them out. Of course it was! The percentage of of women holding technical jobs in corporate America is abysmally small (about 15%) and in Europe things go lower. Just 6% of professional engineers are women in the UK (the lowest proportion in Europe).</p>

<p>That is actually very bad. In one of the most blooming places to be and women are not in here. And this is not about politically correctness. It’ s a shame.</p>

<p>Women are capable for engineering the same way men are and that means more capable people in an industry that really needs them.</p>

<p>We have to get their attention!</p>

<p>There are many dedicated initiatives to push women to become engineers.<a href="https:///www.ieee.org/membership_services/membership/women/index.html">IEEE Women in engineering</a>, <a href="https:///societyofwomenengineers.swe.org/">Society of Women Engineers</a>, <a href="https:///wie.gatech.edu/home">dedicated</a><a href="https:///www.wie.umd.edu/">university</a> <a href="https:///www.engr.ncsu.edu/womeninengineering/">programs</a> and many more just a google search away. But why they fail so far?</p>

<p><a href="https:///www.businessinsider.com/7-things-keeping-women-out-of-science-2013-10">An article</a> puts the reasons in order:</p>

<ol>
  <li>Teasing in school</li>
  <li>A Lack of Encouragement</li>
  <li>Stereotypes</li>
  <li>Childcare</li>
  <li>Competition</li>
  <li>Marginalisation</li>
  <li>Bias</li>
</ol>

<p>These are mostly society perception issues.</p>

<p>However many women decide to follow scientific careers, but it is hard to keep them there. <a href="https:///tweentribune.com/tween56/why-aren-t-there-more-female-engineers">A study</a> showed that 40% of women who got an engineering degree never used it professionally or when they did, they soon left. The reasons were mostly because they claimed that they had uncivil workplaces, supervisors didn’t support them and they also complained about male coworkers.</p>

<p>Many women are interested in engineering but they are being kept back.</p>

<p>Some companies try to change that. Not in the best way possible in my opinion but they try.</p>

<p>The trend is to show how easy it is for women to get involved with electronics by giving them ways to incorporate them in their clothes.</p>

<p>But when you mostly showcase that women want sew stuff with conductive thread and glue textiles everywhere, I believe you are kind of reducing them.</p>

<blockquote>
  <p>Hey, look how easy it is to do this. As easy as this other stuff you know how to do as a woman. Stitching, isn’t it?</p>
</blockquote>

<p>I wouldn’t like it.</p>

<p>I am talking mostly about Sparkfun and Adafruit which are two companies that I love. <a href="https://www.adafruit.com/about">Adafruit’s CEO</a> (Ladyada) is a woman by the way.</p>

<p><img src="/images/women-in-engineering/limor.jpeg" alt="" /></p>

<p>With the <a href="https://www.adafruit.com/products/659">Arduino Flora</a> there was a chance for women interested in the fashion industry to add sensors, buttons and lights to their clothes. This is awesome and broadening for the fashion enthusiast but this can’t be the end of it. There are many more interesting engineering stuff out there that are not “girly” and women may want to mess with.</p>

<blockquote>
  <p>“I’m not a woman engineer. I’m an engineer”.
Carla (<a href="https:///www.imdb.com/name/nm4561787/?ref_=tt_cl_t15">Alice Wetterlund</a>), <a href="https:///www.imdb.com/title/tt2575988/">Silicon Valley</a></p>
</blockquote>

<p>Many women like to play with motors, high voltages or design rockets. Many of my friends are like that and they are good engineers. This looks more interesting and more inspiring to me. Women that have genuine interest for the technology and not just the final application.</p>

<p>What we should do instead?</p>

<p>Showcase the countless women that disrupt engineering every day, like Ladyada for whom we talked about or <a href="https:///www.businessinsider.com/most-powerful-women-engineers-in-2015-2015-5">those who Business Insider found</a>. That women are engineers of equal capacity to men and that we loose great possible engineers due to social idiocy. If you are a woman, don’t come and play with electronics because it is easy (it is not). Come because you love it and you are needed. Not as woman. As an individual!</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><category term="Engineering" /><category term="great" /><summary type="html"><![CDATA[Understanding why there are problems and how to fix them.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Dear Jessie</title><link href="https://tsangiotis.com/dear-jessie/" rel="alternate" type="text/html" title="Dear Jessie" /><published>2015-04-29T06:00:00+00:00</published><updated>2015-04-29T06:00:00+00:00</updated><id>https://tsangiotis.com/dear-jessie</id><content type="html" xml:base="https://tsangiotis.com/dear-jessie/"><![CDATA[<p>Jessie is not a person.</p>

<p>Jessie is the new stable release of Debian. And maybe it will get Debian to be my Linux operating system of choice.</p>

<p><img src="/images/dear-jessie/debianwall.jpeg" alt="" /></p>

<!--more-->

<p>As you may know I use a MacBook Air and I am happy with OS X.</p>

<p>To increase my disk space I got a 240GB SSD from <a href="https://www.macsales.com/">OWC</a> and for almost a year the system was humming fine.</p>

<p>Last week I experienced freezes and discovered that the SSD was under extensive heat. I swapped it for the old one and realised that I should shrink my space requirements until I know what’s happening with the old disk and how to fix it.</p>

<p>Immediately I thought…</p>

<h2 id="put-linux-on-this-thing"><em>Put Linux on this thing!</em></h2>

<p>I’ve mostly used Ubuntu and Arch in my past computers.</p>

<p>Ubuntu mentioned on it’s wiki that there was some problems with my model. Also I can tolerate Ubuntu’s Unity but that is not to say I am fond of it. Suddenly I remembered that Linus Torvalds uses Fedora on his MacBook Air. So I gave it a shot.</p>

<p>I could not find an image that included the Broadcom drivers for my wireless card so my installation required a few more steps. Extensive heat, Gnome 3 and the random clicking from the trackpad made me give up in an hour or two (mostly Gnome 3 though).</p>

<p>Then I found out on twitter that the latest stable Debian release (codenamed Jessie) was out on Saturday. What a coincidence that on Saturday was my birthday!</p>

<p>I found a Debian image that included the non-free packages and I installed it on my whole drive.</p>

<p>The famous Cinnamon from Linux Mint was available as a choice so I used that.</p>

<p>Now I can say I am thrilled!</p>

<p>The last time I tried to install Debian I ended up with an unusable computer. Now on of the least supported notebooks on Linux it ran fairly well.</p>

<p>I tuned the touchpad as a point and shoot device removing the fancy stuff and followed some guides to prevent some interrupts that were going crazy on Mac while on Linux and the thing was more than usable.</p>

<p>Even the display port worked seamlessly!</p>

<p>Not to say there was no problems.</p>

<p>Battery life was not good. 3 hours compared to 5ish on OS X with moderate use. The touchpad in the configuration I had was not so pleasure to work with and there was excessive heat and fan spinning for simple tasks.</p>

<p>A day latter I did a clean install of OS X.</p>

<p>I needed the battery life and a trackpad that does not crack my nerves as I bus-travel a lot every week.</p>

<p>However I am very impressed with Debian. I can even recommend it to Ubuntu users and enthusiasts. It is a legit choice if you want something almost as stable as Arch with the compatibility offerings of Ubuntu.</p>

<p>If I don’t grab a MacBook for my next computer (Surface Pro please become cheaper), it will probably dual boot with Debian!</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><category term="Debian" /><category term="Linux" /><category term="MacBook" /><summary type="html"><![CDATA[Jessie is not a person. Jessie is the new stable release of Debian. And maybe it will get Debian to be my Linux operating system of choice.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Activating kids</title><link href="https://tsangiotis.com/activating-kids/" rel="alternate" type="text/html" title="Activating kids" /><published>2015-04-13T00:00:00+00:00</published><updated>2015-04-13T00:00:00+00:00</updated><id>https://tsangiotis.com/activating-kids</id><content type="html" xml:base="https://tsangiotis.com/activating-kids/"><![CDATA[<p>Recently we had the chance to show some kids what Electrical and Computer Science Engineers do and challenge them to tackle a problem in their school.</p>

<p>And boy that was awesome!</p>

<p>I am a board member at the <a href="https:///ieee-upatras.gr/en/">IEEE Student Branch of the University of Patras</a>and with some other members we decided to implement an IEEE program called <a href="https:///www.ieee.org/education_careers/education/preuniversity/tispt/index.html">TISP</a>. <strong>And we believe we nailed it!</strong></p>

<!--more-->

<p>We contacted a lyceum close to our uni. They heard us and they decided they would like to work with us.</p>

<p>First step was to get some kids to one of our events.</p>

<p>It happened so our next programmed event was “Robotics &amp; 3D Printing” which would be an awesome demonstration!</p>

<p>Here are some photos from there.</p>

<p><img src="/images/activating-kids/rob1.jpeg" alt="" /></p>

<p><img src="/images/activating-kids/rob2.jpeg" alt="" /></p>

<p>Kids were excited!</p>

<p>So it was our turn to get on their school. We prepared our slides and a surprise activity.</p>

<p>The teachers organised a limited student event with 25 people max so we could be as effective as possible.</p>

<p>As we learned, we already had created high expectations and some kids escaped their classes to attend our event resulting to an audience double in numbers from what we expected.</p>

<p>That made us super happy and anxious at the same time. We had 2 hours to do so much!</p>

<p><em>So we started!</em></p>

<p><img src="/images/activating-kids/prez.jpeg" alt="" /></p>

<p>Algorithmic problems, circuits and robots were flying in front of their eyes.</p>

<p>Kid’s were hooked from the first minutes and they made some interesting questions.</p>

<p>Then it was project time!</p>

<p>The theme was a cliche but it really worked.</p>

<p><strong><em>Let’s become engineers</em></strong></p>

<p>Kids formed teams and were asked to:</p>

<ul>
  <li>Identify a problem</li>
  <li>Examine solutions</li>
  <li>Propose a final solution along with it’s requirements.</li>
  <li>Present all that in class</li>
</ul>

<p><img src="/images/activating-kids/kids.jpeg" alt="" /></p>

<p>Very original ideas came up from e-learning to energy savings and school security.</p>

<p>One particular team pinched my interest. The kids that seem to have little to no interest for school.</p>

<p>The irony was that they proposed a solution to a problem that they mostly create, which is <em>class skipping.</em></p>

<p>It was an actual problem in schools and their solution was one that could be easily implemented, had little to no adoption curve and was chosen between other good solutions (some of them unorthodox).</p>

<p>The teachers were very impressed too! These boys are a real challenge to keep as an audience for 10 minutes in a regular class. And then you see them attached to something interactive like this for two hours!</p>

<hr />

<p>Next day was awesome too!</p>

<p>I had prepared a Python workshop for another class.</p>

<p>We did some basic stuff and at the end I guided them through creating their own simple web app using <strong>Wolfram Alpha</strong> and <strong>IMdB</strong> to get the IMdB links of the best selling movies of the year they chose.</p>

<p>You can see it as a heroku app <a href="https:///ieee-py-kastritsi.herokuapp.com/">here</a>!</p>

<p>They saw they could go from Zero to Hero in no time and Wolfram Alpha (a tool that we use regularly as engineers) was in their arsenal to play with.</p>

<hr />

<p>We started packing to leave and we spotted a girl studying the equation plots of a RLC circuit on Wolfram Alpha.</p>

<p>It felt good.</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Personal" /><category term="Education" /><category term="IEEE" /><category term="great" /><summary type="html"><![CDATA[Experiences on making kids interested in programming.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">#bansports or #fixsports?</title><link href="https://tsangiotis.com/number-bansports-or-number-fixsports/" rel="alternate" type="text/html" title="#bansports or #fixsports?" /><published>2015-04-04T06:00:00+00:00</published><updated>2015-04-04T06:00:00+00:00</updated><id>https://tsangiotis.com/number-bansports-or-number-fixsports</id><content type="html" xml:base="https://tsangiotis.com/number-bansports-or-number-fixsports/"><![CDATA[<p><img src="/images/number-bansports-or-number-fixsports/jjrun.jpeg" alt="" /></p>

<p>I’ve been a competition Ju Jitsu athlete for my entire life until the combination of an injury and the start of my University life pointed that I will never be in my full game again while studying Electrical Engineering.</p>

<p>If sports and mostly the competition did not exist I would not have been the individual I am today.</p>

<!--more-->

<blockquote>
  <p><strong>Competition</strong> in biology, ecology, and sociology, <strong>is a contest</strong> between organisms, animals, individuals, groups, etc., for territory, a niche, or a location of resources,<strong>for</strong> resources and goods, mates, for prestige, recognition, awards, or group or social status, for leadership.</p>
</blockquote>

<p>This is where the problems grow. No man that enjoys a good run or play/watch a game of basketball can do any harm.</p>

<p>Competition is great so it attracts money for greater results. Without it there are no sports and no interest in them. Even if we run alone we want to be in competition with ourself. To beat our last record or cover a bigger distance.</p>

<p>So far so good.</p>

<p>However this is where the word professional comes in and where bad practices begin like excessive pressure, unauthorized (or “authorized”) supplements, athlete exploitation (see <a href="https://www.youtube.com/watch?v=pX8BXH3SJn0">March Madness</a>) and so on.</p>

<p>Sport events take huge extends some times and fan behavior can be dangerous or lethal. Once in Greece on the year 1981 and at the end of a football match <a href="https:///en.wikipedia.org/wiki/Karaiskakis_Stadium_disaster">21 people died because some stepped on them literally</a>.</p>

<p>As with many things in our current society like diversity, xenophobia, etc. the problem can be solved with better education even if the lack of it cannot be blamed as the main factor of this problem’s origin. People get excited with exciting stuff and if we are to ban sports we should start with other stuff first.</p>

<p>People like sports and there is nothing wrong with it. They like sports and sport events from the ancient times so we can say that this is a thing that is not going anywhere and we cannot realistically ban it due to some incidents. And we shouldn’t.</p>

<h2 id="what-weshoulddo-isfix-sports"><em>What we </em><strong><em>should</em></strong><em> do is </em><strong><em>Fix Sports</em></strong><em>!</em></h2>

<p>Educate athletes and mostly their families, coaches and if possible the fans.</p>

<p>Sports build character like nothing I’ve seen. Me and my teamates are a valid example of this. Maybe we were just lucky and had a great coach and great families but hey, there are many examples just like us for this to be a coincidence.</p>

<p>So, don’t #bansports! #fixsports!</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><category term="Ju-Jitsu" /><summary type="html"><![CDATA[I’ve been a competition Ju Jitsu athlete for my entire life until the combination of an injury and the start of my University life pointed that I will never be in my full game again while studying Electrical Engineering. If sports and mostly the competition did not exist I would not have been the individual I am today.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">FORCE your self!</title><link href="https://tsangiotis.com/force-your-self/" rel="alternate" type="text/html" title="FORCE your self!" /><published>2015-04-03T06:00:00+00:00</published><updated>2015-04-03T06:00:00+00:00</updated><id>https://tsangiotis.com/force-your-self</id><content type="html" xml:base="https://tsangiotis.com/force-your-self/"><![CDATA[<p>This is one of the most important and motivating TED talks I’ve seen.</p>

<p>I promise, it worths your time:</p>

<iframe src="https://www.youtube.com/embed/Lp7E973zozc?feature=oembed" width="800" height="450" frameborder="0" allowfullscreen="allowfullscreen"></iframe>

<p>I’ve been in a mode of getting more stable and reliable in the last months but when I saw this 3 or 4 days ago, it was like the random thoughts in my head strengthen and got in order. I try to avoid the <em>emergency brake</em> in any situation. Of course it fails some times but the rest of them are very satisfying.</p>

<blockquote>
  <p>Change is hard and you are never gonna feel like it.
The more you <strong>force </strong>yourself, the more you are going to <strong>feel like it</strong>.</p>
</blockquote>

<p><img src="/images/force-your-self/force.jpeg" alt="" /></p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Short" /><category term="Motivation" /><category term="TEDx" /><summary type="html"><![CDATA[This is one of the most important and motivating TED talks I’ve seen. I promise, it worths your time: I’ve been in a mode of getting more stable and reliable in the last months but when I saw this 3 or 4 days ago, it was like the random thoughts in my head strengthen and got in order. I try to avoid the emergency brake in any situation. Of course it fails some times but the rest of them are very satisfying. Change is hard and you are never gonna feel like it. The more you force yourself, the more you are going to feel like it.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Greece’s biggest company is it’s national bank</title><link href="https://tsangiotis.com/greeces-biggest-company-is-its-national-bank/" rel="alternate" type="text/html" title="Greece’s biggest company is it’s national bank" /><published>2015-03-18T00:00:00+00:00</published><updated>2015-03-18T00:00:00+00:00</updated><id>https://tsangiotis.com/greeces-biggest-company-is-its-national-bank</id><content type="html" xml:base="https://tsangiotis.com/greeces-biggest-company-is-its-national-bank/"><![CDATA[<p>Looks like the National Bank of Greece is the biggest company in the country.\</p>

<p><img src="/assets/images/posts/greeces-biggest-company-is-its-national-bank/01-large_comp.png" alt="" /></p>

<p>I can’t guarantee the accuracy of this infographic (source <a href="http://dailyinfographics.eu/biggest-companies-in-european-countries/">DailyInfographics</a>) but now that I think about it I can’t name a company that is big enough to be there.</p>

<p>I hope this changes though…</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Short" /><summary type="html"><![CDATA[Looks like the National Bank of Greece is the biggest company in the country.\ I can’t guarantee the accuracy of this infographic (source DailyInfographics) but now that I think about it I can’t name a company that is big enough to be there. I hope this changes though…]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Does Greece have a plan?</title><link href="https://tsangiotis.com/does-greece-have-a-plan/" rel="alternate" type="text/html" title="Does Greece have a plan?" /><published>2015-03-17T08:00:00+00:00</published><updated>2015-03-17T08:00:00+00:00</updated><id>https://tsangiotis.com/does-greece-have-a-plan</id><content type="html" xml:base="https://tsangiotis.com/does-greece-have-a-plan/"><![CDATA[<p>How can a country afford to be so unready all the time?</p>

<p><img src="/images/does-greece-have-a-plan/vouli.jpeg" alt="" /></p>

<p>I am talking about Greece. We were the centre of the world for a while some days ago for the 4 month bailout extension we got in February. And of course for our controversial Minister of Economics, Mr. Varoufakis.</p>

<!--more-->

<p>As for a little context, Greek people voted for a Greece in Euro and out of the crisis minus the austerity. Maybe it is a fool’s quest, maybe not.</p>

<p><img src="/images/does-greece-have-a-plan/barouf.jpeg" alt="" /></p>

<p>From the day after, Mr. Varoufakis has become <a href="https://www.youtube.com/watch?v=Afl9WFGJE0M">the Rock Star of the Economics aka. Minister of Awesome aka. Minister of OMFG</a>. due to his looks and attitude. As for negotiating it looks like he bit more than he could possibly chew. Let’s say it could have gone better…</p>

<p>Spending some time to the TV news and watching Syriza’s representatives, 3 or 4 plans seem to exist. And the collisions between them are fundamental.</p>

<p>You see, the thing with the government is that they are not a united body with a common direction. They are more like children having their shoes glued together and everyone want’s to go somewhere else.</p>

<p>There are people who say we must cooperate and do the needed by common sense changes. There are people suggesting to use the extension as a prep to leave euro and return to drachma. Some other few want to get in bed with Mr. Putin.</p>

<p><img src="/images/does-greece-have-a-plan/drax.jpeg" alt="" /></p>

<p>As a result no common direction can be achieved and we end up stalling. And every day that continues it costs vastly.</p>

<p>Mr. Tsipras is more capable than I thought for his place. He is a populist alright but he has managed to keep these children and the people together even if Syriza has skewed from it’s program which was more like a fairytale. He is reachable and people like him. As an individual I can say he is the better leader from what’s available.</p>

<p><img src="/images/does-greece-have-a-plan/alexis.jpeg" alt="" /></p>

<p>That’s why Alexis Tsipras must give or even force direction to the children with the glued shoes. If he does not, his government will do <em>exactly</em> what <a href="https:///tsangiotis.com/samaras-does-not-want-to-rule">Antoni’s Samaras government did</a>. <em>Virtually</em> nothing. Not because it couldn’t because it stalled.</p>

<p>There is a chance for an actual change for Greece. It is the first time in many years that people actually support their government. And that is the key for Greece to fix stuff it couldn’t before.</p>

<p>So please, stop wondering how it will look like. First month is gone. Stop stalling and start working because there are many things to solve and you haven’t even picked your first.</p>

<p><em>Tick Tack</em></p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><category term="Greece" /><category term="Syriza" /><summary type="html"><![CDATA[How can a country afford to be so unready all the time? I am talking about Greece. We were the centre of the world for a while some days ago for the 4 month bailout extension we got in February. And of course for our controversial Minister of Economics, Mr. Varoufakis.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Troubleshooting Using Bias Voltage</title><link href="https://tsangiotis.com/troubleshooting-using-bias-voltage/" rel="alternate" type="text/html" title="Troubleshooting Using Bias Voltage" /><published>2015-03-13T00:00:00+00:00</published><updated>2015-03-13T00:00:00+00:00</updated><id>https://tsangiotis.com/troubleshooting-using-bias-voltage</id><content type="html" xml:base="https://tsangiotis.com/troubleshooting-using-bias-voltage/"><![CDATA[<p>ICP Sensors are nice!</p>

<p><img src="/images/troubleshooting-using-bias-voltage/1_SH0ksHu31UW8_n3YdYejQg.jpeg" alt="" /></p>

<p>The last two days I was frustrated with an <a href="https:///en.wikipedia.org/wiki/Integrated_circuit_piezoelectric_sensor"><strong>ICP</strong></a> (<strong>I</strong>ntegrated <strong>C</strong>ircuit<strong>P</strong>iezoelectric) vibration sensor not working.</p>

<p>There were glimpses of uptime but it was just that. Glimpses…</p>

<!--more-->

<p>The sensor is driven by a dead simple circuit:</p>

<p><img src="/images/troubleshooting-using-bias-voltage/schem.png" alt="" /></p>

<p>As you see:</p>

<ul>
  <li>A current limiting diode (surprisingly expensive)</li>
  <li>A polarised capacitor (<em>Tip</em>: Use a tantalum capacitor for lower noise levels)</li>
  <li>A 470K resistor</li>
</ul>

<p>The circuit has worked before and even if it is difficult to mess, I checked more than 10 times the polarity and the continuity of the circuit.</p>

<p>As you can see in the picture, there is one thing there called <strong>DC Bias</strong>. Just keep it on your mind.</p>

<h2 id="brief-fun-theory">Brief (fun?) theory</h2>

<p>As I mentioned we are using an ICP sensor. These sensors are powered with a constant current DC source. The power supply is typically <em>18–30 Volts DC_current limited via a constant current diode between _2 and 20 mA</em>. Typical battery operated supplies offer <em>2 mA</em> of constant current to extend battery life while continuous monitoring systems offer more current in order to drive longer cables.</p>

<p>The signal output of an ICP sensor is a low impedance voltage signal proportional to the dynamic measurement such as force, pressure, or vibration. This voltage signal is carried on a <strong>DC bias</strong> voltage. The AC dynamic signal is superimposed on the DC bias voltage and is allowed to swing between the supply voltage and ground. Unlike an Operational Amplifier (Op Amp) that requires a plus and minus supply and allows the signal to “ride” on ground and “swing” between the plus and minus “rails,” the ICP sensor requires the output signal to be DC biased.</p>

<h2 id="lets-get-troubleshooting">Let’s get troubleshooting!</h2>

<p>So, how do you check the sensor?</p>

<p><img src="/images/troubleshooting-using-bias-voltage/meas1.jpeg" alt="" /></p>

<p>As you see I cannot break through it to see if I’ve fried it (these are pretty sturdy and frying them is harder than it sounds). I am also pretty sure that my circuit is good as it have worked perfectly before.</p>

<p>The DC Bias of the sensor can quickly and reliably show us if the sensor is working and if we have connected it correctly.</p>

<p>Below there is a table with common DC Bias voltages and their meaning:</p>

<p><img src="/images/troubleshooting-using-bias-voltage/1_johuYRS6cjMoiOARPi1QWQ.png" alt="" /></p>

<p><img src="/images/troubleshooting-using-bias-voltage/1_MzQ_WmE5MhYW6TLDq8Y19A.jpeg" alt="" /></p>

<p>Three scenarios are possible:</p>

<ol>
  <li>Generally, if you get around half your supply voltage you are good to go.</li>
  <li>If you get <em>0 Volts</em> you have probably shorten out something. Woops!</li>
  <li>In my case, I got my supply voltage which means the connection to the sensor is faulty resulting to an open circuit. Check your cable!</li>
</ol>

<p><img src="/images/troubleshooting-using-bias-voltage/1_5iayBhetGZa5SkGaioNyVQ.jpeg" alt="" /></p>

<h2 id="conclusions">Conclusions</h2>

<p>As you see the DC Bias on these sensors is very useful for troubleshooting. So next time you bump on a wall like that you know what to do!</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Guides" /><category term="Accelerometer" /><category term="Electronics" /><category term="Vibration" /><category term="great" /><summary type="html"><![CDATA[Basicaly how to check if your industrial accelerometer is connected correctly.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">The new MacBook is not there yet</title><link href="https://tsangiotis.com/the-new-macbook-is-not-there-yet/" rel="alternate" type="text/html" title="The new MacBook is not there yet" /><published>2015-03-12T08:00:00+00:00</published><updated>2015-03-12T08:00:00+00:00</updated><id>https://tsangiotis.com/the-new-macbook-is-not-there-yet</id><content type="html" xml:base="https://tsangiotis.com/the-new-macbook-is-not-there-yet/"><![CDATA[<p>I literally wrote the title at the start of the Apple Watch announcement at Apple’s “Spring Forward” event. It was “The new MacBook is awesome”.</p>

<p>Then I changed it.</p>

<p><img src="/images/the-new-macbook-is-not-there-yet/mbook.png" alt="" /></p>

<p>I am not an Apple fanboy by any means. I bought my 13” MacBook Air at the end of 2012 because it was the best computer for the money and my needs at the time of buy.</p>

<p>I’ve absolutely loved it.</p>

<p>It still performs really well and to me and my workflow, it is the much lighter, longer battery, less noisy Linux machine I had without the quirks and the annoying graphics card problems.</p>

<p>When I saw <a href="https:///www.apple.com/macbook/">the new MacBook</a> I was stunned. I wanted to have it.</p>

<!--more-->

<p>I know it is not easy to live on one port… I will manage it… I will buy a bunch of<a href="https:///tsangiotis.com/the-new-macbook-is-there-yet/#fn:1">1</a>adapters and put them on my workspaces…</p>

<p>Who am I kidding…</p>

<p>I get pissed when I have to use a hub now that I have 2 USB ports. Imagine having a bunch around and chaining them. I cannot do CAD work on a trackpad even if it is the best. I’ve struggled with bluetooth mouses in the past so I don’t bother anymore. And I like the key travel on my current MacBook and even more on my mechanical keyboard. Why should I trade that for some <a href="https:///www.businessinsider.com/new-apple-macbook-keyboard-2015-3">butterfly</a>?</p>

<p><img src="/images/the-new-macbook-is-not-there-yet/butterfly.gif" alt="" /></p>

<p>OK. This I’ll manage. But the underpowered CPU I cannot manage. And this is the actual deal breaker for the majority. Not the ports.</p>

<p>Most of us who <strong>want</strong> a machine like that, we need the power. When Core M is the equivalent of an i5 I am sold. Until then, this is a very expensive netbook and people are better of with a Chromebook.</p>

<h2 id="not-yet-there-ness">Not-yet-there-ness</h2>

<p>All this is very familiar. Remember the MacBook Air in 2008?</p>

<p>If yes, you are older than 12 years old and you know that the new MacBook will replace it in a couple of years if not sooner.</p>

<p>Like with the Air, the MacBook has considerably less ports. The world moved on then, it will move on now.</p>

<p>As for Core M CPUs, cut them some slack. This is their first iteration.</p>

<p>In one or two iterations, this will be the most recommended computer like it or not.</p>

<h2 id="apple-is-forking">Apple is forking.</h2>

<p>Into the fashion industry.</p>

<p>They will keep delivering some awesome hardware for power users who don’t want to mess with the system but also they are getting into fashion deeper than ever before.</p>

<p>The new MacBook is a better showcase of that fork than anything that appeared on the event (<em>looking at you Apple Watch</em>). It is slick, it is hot and a fashion statement but it is not for anyone who does more than basic web browsing and email not only due to the single port but most importantly for the intentionally underpowered CPU.</p>

<p><img src="/images/the-new-macbook-is-not-there-yet/mbook2.jpeg" alt="" /></p>

<p>So keep filling that piggy bank and someday we will get what many of us consider the best machine ever.</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><category term="Apple" /><category term="MacBook" /><summary type="html"><![CDATA[I literally wrote the title at the start of the Apple Watch announcement at Apple’s “Spring Forward” event. It was “The new MacBook is awesome”. Then I changed it. I am not an Apple fanboy by any means. I bought my 13” MacBook Air at the end of 2012 because it was the best computer for the money and my needs at the time of buy. I’ve absolutely loved it. It still performs really well and to me and my workflow, it is the much lighter, longer battery, less noisy Linux machine I had without the quirks and the annoying graphics card problems. When I saw the new MacBook I was stunned. I wanted to have it.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Rome Travel Log #2</title><link href="https://tsangiotis.com/rome-travel-log-number-2/" rel="alternate" type="text/html" title="Rome Travel Log #2" /><published>2014-12-26T00:00:00+00:00</published><updated>2014-12-26T00:00:00+00:00</updated><id>https://tsangiotis.com/rome-travel-log-number-2</id><content type="html" xml:base="https://tsangiotis.com/rome-travel-log-number-2/"><![CDATA[<p>Everything in rome is massive! Until you see for your self you do not understand.</p>

<p><a href="http://en.wikipedia.org/wiki/Colosseum" target="_blank">Colosseum</a> is not an exception. Due to the date of our visit, catacombs were closed.</p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/01-large_IMG_3842.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/06-large_IMG_3862.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/07-large_IMG_3859.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/08-large_PANO_20141225_110821.jpg" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/09-large_IMG_3959.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/10-large_IMG_3964.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/11-large_IMG_3966.JPG" alt="" /></p>

<p>Next is Vatican City and <a href="http://en.wikipedia.org/wiki/St._Peter&#39;s_Square" target="_blank">St. Peter’s Square</a>.</p>

<p>Here is a Photo Sphere:</p>

<blockquote>
  <p>By clicking the arrow in the disk on the floor you can go inside the Basilica.</p>

  <p>Cool! Huh?</p>
</blockquote>

<p><span class="small"><a href="https://www.google.com/maps/views/">Views</a>: <a href="https://www.google.com/maps/views/view/109316428502629371360/gphoto/6097194015620457314">Center of the Christmas St. Peter’s Square</a> by <a href="https://www.google.com/maps/views/profile/109316428502629371360">Tasos Sangiotis</a></span></p>

<p>\</p>

<p>Here are some more photos:</p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/02-large_IMG_3979.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/12-large_IMG_3999.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/13-large_IMG_4016.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/14-large_IMG_3981.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/15-large_IMG_3984.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/16-large_IMG_4028.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/17-large_IMG_4141.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/18-large_IMG_4143.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/19-large_IMG_20141225_162732.jpg" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/03-large_IMG_4035.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/20-large_IMG_4040.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/21-large_IMG_4048.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/22-large_IMG_4083.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/23-large_IMG_4085.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/24-large_IMG_4097.JPG" alt="" /></p>

<p>After that, we headed to the <a href="http://en.wikipedia.org/wiki/Piazza_del_Popolo" target="_blank">Piazza del Popolo</a> and then followed Via del Corso to the <a href="http://en.wikipedia.org/wiki/Piazza_di_Spagna" target="_blank">Piazza di Spagna</a>.</p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/04-large_IMG_4174.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/25-large_IMG_4194.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/26-large_IMG_4237.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/27-large_IMG_4245.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/28-large_IMG_20141225_174552.jpg" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/29-large_IMG_20141225_182038.jpg" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/30-large_IMG_20141225_182304.jpg" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/31-large_IMG_20141225_182922.jpg" alt="" /></p>

<p>Today we just rumbled around the center of the capital. The most interesting was this church organ:</p>

<p><img src="/assets/images/posts/rome-travel-log-number-2/05-large_IMG_20141226_105836.jpg" alt="" /></p>

<p>Rome is beautiful and I hope to return soon! </p>

<p>\</p>

<p>I also hope you have a nice time doing what you are doing. </p>

<p>\</p>

<p>It’s been a while but some technical posts are coming! :)</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Photography" /><summary type="html"><![CDATA[Everything in rome is massive! Until you see for your self you do not understand. Colosseum is not an exception. Due to the date of our visit, catacombs were closed. Next is Vatican City and St. Peter’s Square. Here is a Photo Sphere: By clicking the arrow in the disk on the floor you can go inside the Basilica. Cool! Huh? Views: Center of the Christmas St. Peter’s Square by Tasos Sangiotis \ Here are some more photos: After that, we headed to the Piazza del Popolo and then followed Via del Corso to the Piazza di Spagna. Today we just rumbled around the center of the capital. The most interesting was this church organ: Rome is beautiful and I hope to return soon!  \ I also hope you have a nice time doing what you are doing.  \ It’s been a while but some technical posts are coming! :)]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Rome Travel Log #1</title><link href="https://tsangiotis.com/rome-travel-log-number-1/" rel="alternate" type="text/html" title="Rome Travel Log #1" /><published>2014-12-24T00:00:00+00:00</published><updated>2014-12-24T00:00:00+00:00</updated><id>https://tsangiotis.com/rome-travel-log-number-1</id><content type="html" xml:base="https://tsangiotis.com/rome-travel-log-number-1/"><![CDATA[<p>I am in Rome with family!</p>

<p>Never made such series of posts (and in no way I guarantee that this would not be for today only) but as my timetable is not so strict and I actually have time to write it it is a good chance to keep my blogging habit.</p>

<p>Let’s start…</p>

<p>First we visited <a href="http://en.wikipedia.org/wiki/Piazza_Venezia" target="_blank" title="Link: http://en.wikipedia.org/wiki/Piazza_Venezia">Piazza Venezia</a> and the <a href="http://en.wikipedia.org/wiki/Altare_della_Patria" target="_blank">Altare della Patria</a>.</p>

<p>Inside the Altare della Patria is located, the Monument of the Unknown Soldier.</p>

<p>Lot’s of military history there.</p>

<p>We bought some Hop On - Hop Off tickets and we headed to <a href="http://en.wikipedia.org/wiki/Piazza_Navona" target="_blank">Piazza Navona</a> and the <a href="http://en.wikipedia.org/wiki/Pantheon,_Rome" target="_blank">Pantheon</a>.</p>

<p>People with <em>Selfie Rods</em> running around taking pictures with the <em>Hole</em> while some were praying.</p>

<p>Here is a Photo Sphere:</p>

<p>\</p>

<p><span class="small"><a href="https://www.google.com/maps/views/">Views</a>: <a href="https://www.google.com/maps/views/view/109316428502629371360/gphoto/6096390653518666802">Pantheon Interior</a> by <a href="https://www.google.com/maps/views/profile/109316428502629371360" title="Link: https://www.google.com/maps/views/profile/109316428502629371360">Tasos Sangiotis</a></span></p>

<p>\</p>

<p>After that we had a great lunch at <a href="http://obica.com/" title="Link: http://obica.com/">Obicà Mozzarella Bar</a> and some awesome coffee at <a href="http://www.tazzadorocoffeeshop.com/" target="_blank" title="Link: http://www.tazzadorocoffeeshop.com/">Tazza D’Oro</a>.</p>

<p>\</p>

<p>Then some more rounds with the bus and we were back for a drink at the hotel.</p>

<p>\</p>

<p>That’s it for today.</p>

<p>\</p>

<p>Here are some photos and you can also find more on <a href="http://instagram.com/tsagiotis" target="_blank">Instagram</a>.</p>

<p>\</p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/01-large_IMG_3490.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/02-large_IMG_3491.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/03-large_IMG_3496.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/04-large_IMG_3498.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/05-large_IMG_3503.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/06-large_IMG_3505.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/07-large_IMG_3508.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/08-large_IMG_3524.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/09-large_IMG_3531.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/10-large_IMG_3533.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/11-large_IMG_3538.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/12-large_IMG_3542.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/13-large_IMG_3557.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/14-large_IMG_3571.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/15-large_IMG_3573.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/16-large_IMG_3575.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/17-large_IMG_3578.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/18-large_IMG_3583.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/19-large_IMG_3589.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/20-large_IMG_3594.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/21-large_IMG_3614.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/22-large_IMG_3616.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/23-large_IMG_3621.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/24-large_IMG_3625.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/25-large_IMG_3642.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/26-large_IMG_3647.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/27-large_IMG_3648.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/28-large_IMG_3653.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/29-large_IMG_3657.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/30-large_IMG_3668.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/31-large_IMG_3676.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/32-large_IMG_3688.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/33-large_IMG_3698.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/34-large_IMG_3703.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/35-large_IMG_3715.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/36-large_IMG_3717.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/37-large_IMG_3719.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/38-large_IMG_3721.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/39-large_IMG_3726.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/40-large_IMG_3743.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/41-large_IMG_3752.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/42-large_IMG_3759.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/43-large_IMG_3782.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/44-large_IMG_3788.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/45-large_IMG_3794.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/46-large_IMG_3808.JPG" alt="" /></p>

<p><img src="/assets/images/posts/rome-travel-log-number-1/47-large_IMG_3815.JPG" alt="" /></p>

<p>\</p>

<p>Merry Christmas guys and may the force be with you! ;)</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Photography" /><summary type="html"><![CDATA[I am in Rome with family! Never made such series of posts (and in no way I guarantee that this would not be for today only) but as my timetable is not so strict and I actually have time to write it it is a good chance to keep my blogging habit. Let’s start… First we visited Piazza Venezia and the Altare della Patria. Inside the Altare della Patria is located, the Monument of the Unknown Soldier. Lot’s of military history there. We bought some Hop On - Hop Off tickets and we headed to Piazza Navona and the Pantheon. People with Selfie Rods running around taking pictures with the Hole while some were praying. Here is a Photo Sphere: \ Views: Pantheon Interior by Tasos Sangiotis \ After that we had a great lunch at Obicà Mozzarella Bar and some awesome coffee at Tazza D’Oro. \ Then some more rounds with the bus and we were back for a drink at the hotel. \ That’s it for today. \ Here are some photos and you can also find more on Instagram. \ \ Merry Christmas guys and may the force be with you! ;)]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Working with people</title><link href="https://tsangiotis.com/working-with-people/" rel="alternate" type="text/html" title="Working with people" /><published>2014-12-11T12:17:00+00:00</published><updated>2014-12-11T12:17:00+00:00</updated><id>https://tsangiotis.com/working-with-people</id><content type="html" xml:base="https://tsangiotis.com/working-with-people/"><![CDATA[<p>The world nowadays works in teams and as you may know I’ ve been involved in many teams around this time.</p>

<p>This team can be a startup, a group, a hackerspace or even you and your friends.
When some people do something together they are a team. And a good team acts like a good piece of machinery.</p>

<p>Working in teams is hard but also very efficient.
If a team is managed correctly, many extraordinary things can be done.</p>

<p>This is what I’ve understood about being in teams and learning from my mistakes and others’.</p>

<!--more-->

<h2 id="score-the-goal-fast">Score the Goal fast</h2>

<p>I am not a football fan by any means but it is pretty straightforward that your sole concern is to put the ball behind the line.</p>

<p>It doesn’t really matter if you do it from the centre of the stadium with the most cinematic way or you do it with a simple boring move.</p>

<p>Either way you get <strong><em>one point</em></strong>.</p>

<p>Don’t over-thing about the best way to do something. It results almost always to a lot of talking and less doing.</p>

<h3 id="just-do-it">Just do it!</h3>

<h2 id="temporary-does-not-exist">Temporary does not exist</h2>

<p>Give final solutions. Not placeholders.</p>

<p>When you need to make a choice, never reschedule it with a wrong response. You will forget about it and learn to live with it.</p>

<p>So make every decision count by choosing the best solution at the time. You can always fine-tune later.</p>

<h2 id="stay-motivated">Stay motivated</h2>

<p>Being in a team can be exhausting but when you accomplish stuff, this does not matter.</p>

<p>However it is very common to get stuck. Your hands are tied and you can’t move.
When in this position don’t panic but do something to get cracking.</p>

<p>For as long you stay frozen, your team develops tension and if it reaches critical tension points often or stays on them for a long time, it might break.</p>

<p>When machines are static they rust and break.</p>

<p>As <a href="https:///finette.com/">Pascal Finette</a> says, <strong><a href="https:///theheretic.me/2014/12/04/always-run-never-walk/">Always run. Never walk</a></strong>.</p>

<h2 id="be-precise-and-push-when-needed">Be precise and push when needed</h2>

<p>You have to be clear and precise to others. Give them all the info that is needed and also demand it.</p>

<p>Also when the job at hand must finish, don’t wait for the others. Do the most you can and push them to do their part.</p>

<h2 id="log-everything">Log everything</h2>

<p>There should be a log of the team and things should not rely on memory.</p>

<p>Write down what happens when it happens and when the time comes you will be glad you did.</p>

<h2 id="but-be-bold-but-straight">But be bold but straight</h2>

<p>You cannot afford to keep things inside. <a href="/listen-to-people">Listen to people</a> and they will listen to you.</p>

<p>When you find that you don’t agree with something, tell it to the other’s face with care, not with grudge.</p>

<p>One can get defensive or better. If you do it the right way and everyone keeps an open mind, most of the times you will hit the second case.</p>

<h2 id="value-human-relations">Value human relations</h2>

<p>Many times we tend to forget that our teammates most of the times are also friends.</p>

<p>More often we forget about friends and people outside of the team. They are the ones who support you and you are the one who supports them.</p>

<p>Remember to have time for everyone. Most of all remember to have time for new connections.</p>

<p>That’s the only way you will meet more and more amazing people.</p>

<h2 id="be-positive">Be positive</h2>

<p>Hard times will come but also happy ones that make up for everything.</p>

<p>Solve your problems quickly and don’t blame others.</p>

<p>The thing you do best is to solve problems.
Put it in use for the things you <strong>can</strong> do something and don’t bother with things you <strong>can’ t</strong> do something about.</p>

<p>Hope I was of help. You can speak your mind in the comments! :)</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><summary type="html"><![CDATA[The world nowadays works in teams and as you may know I’ ve been involved in many teams around this time. This team can be a startup, a group, a hackerspace or even you and your friends. When some people do something together they are a team. And a good team acts like a good piece of machinery. Working in teams is hard but also very efficient. If a team is managed correctly, many extraordinary things can be done. This is what I’ve understood about being in teams and learning from my mistakes and others’.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">My edX Wishlist</title><link href="https://tsangiotis.com/my-edx-wishlist/" rel="alternate" type="text/html" title="My edX Wishlist" /><published>2014-11-27T00:00:00+00:00</published><updated>2014-11-27T00:00:00+00:00</updated><id>https://tsangiotis.com/my-edx-wishlist</id><content type="html" xml:base="https://tsangiotis.com/my-edx-wishlist/"><![CDATA[<p>Due to a violent occupation of the ECE Department of the University of Patras from students that has led to the semester’s loss, me and my friends are gonna end up with some extra free time.</p>

<p>\</p>

<p>We may study the next subjects by our selves or we can have some top notch professors and universities to teach us.<br />
Here is my (long and very unreal) <a href="http://www.edx.org/" target="_blank">edX</a> whishlist:</p>

<p>\</p>

<h2 id="robot-mechanics-and-control-part-i"><a href="https://www.edx.org/node/1529#.VHcMxOeUdEc" target="_blank" title="Link: https://www.edx.org/node/1529#.VHcMxOeUdEc">Robot Mechanics and Control, Part I</a></h2>

<p>I am actually doing this one now. It is very comprehensive and teaches the basics of kinematic chains and degrees of freedom. It is pretty fundamental stuff explained in the best way possible.</p>

<h2 id="electronic-interfaces-bridging-the-physical-and-digital-worlds"><a href="https://www.edx.org/course/electronic-interfaces-uc-berkeleyx-ee40lx#.VHcGDOeUdEc" target="_blank" title="Link: https://www.edx.org/course/electronic-interfaces-uc-berkeleyx-ee40lx#.VHcGDOeUdEc">Electronic Interfaces: Bridging the Physical and Digital Worlds</a></h2>

<p>Basic circuits and micro controller introduction. As internet of things and wearables are considered the great thing for the next couple of years this is a must to grasp the basics</p>

<h2 id="innovation-and-commercialization"><a href="https://www.edx.org/course/innovation-commercialization-mitx-3-086x#.VHcF7-eUdEc)" target="_blank">Innovation and Commercialization</a></h2>

<h2 id="how-innovative-products-are-made-not-a-must-but-it-is-interesting">How innovative products are made. Not a must but it is interesting.</h2>

<h2 id="economics-of-cybersecurity"><a href="https://www.edx.org/course/economics-of-cybersecurity-delftx-econsec101x#.VHcGE-eUdEc" target="_blank" title="Link: https://www.edx.org/course/economics-of-cybersecurity-delftx-econsec101x#.VHcGE-eUdEc">Economics of Cybersecurity</a></h2>

<p>\</p>

<p>With 2 major breaches in the last six months cyber security is a hot topic alright. Impacts on the economy are starting to show, so if you care about that stuff this seems good.</p>

<p>\</p>

<h2 id="mastering-quantum-mechanics"><a href="https://www.edx.org/course/mastering-quantum-mechanics-mitx-8-05x#.VHcGIeeUdEc" target="_blank">Mastering Quantum Mechanics</a></h2>

<p>\</p>

<p>Always wanted to be able to say the above. A dream coming true!</p>

<p>\</p>

<h2 id="signals-and-systems-part-2"><a href="https://www.edx.org/course/signals-systems-part-iitbombayx-ee210-2x#.VHcGN-eUdEc)" target="_blank">Signals and Systems, Part 2 </a></h2>

<p><br />
No introductions here. You can skip part one if you’re already familiar with the basics. </p>

<p>\</p>

<h2 id="circuits-and-electronics"><a href="https://www.edx.org/course/circuits-electronics-mitx-6-002x#.VHcGXeeUdEc" target="_blank">Circuits and Electronics</a></h2>

<p>\</p>

<p>Refresh your circuits skills and knowledge. Basic stuff again.</p>

<p>\</p>

<h2 id="introduction-to-aeronautical-engineering"><a href="https://www.edx.org/course/introduction-to-aeronautical-engineering-delftx-ae-1110x#.VHcGYOeUdEc" target="_blank">Introduction to Aeronautical Engineering</a></h2>

<p>\</p>

<p>Aeronautical Engineering was my second choice but I find it very interesting. </p>

<p>\</p>

<h2 id="introduction-to-solid-state-chemistry"><a href="https://www.edx.org/course/introduction-solid-state-chemistry-mitx-3-091x#.VHcGaOeUdEc" target="_blank">Introduction to Solid State Chemistry</a></h2>

<p>\</p>

<p>Great innovations happen in that sector. As graphene enters our lives a we should refresh organic chemistry at least.</p>

<p>\</p>

<h2 id="underactuated-robotics"><a href="https://www.edx.org/course/underactuated-robotics-mitx-6-832x#.VHcGdeeUdEc" target="_blank">Underactuated Robotics</a></h2>

<p>\</p>

<p>Walking and swimming robots. Nothing to say here.</p>

<p>\</p>

<h2 id="introduction-to-computational-thinking-and-data-science"><a href="https://www.edx.org/course/computational-thinking-python-mitx-6-00-2x#.VHcGjOeUdEc" target="_blank">Introduction to Computational Thinking and Data Science</a></h2>

<p>\</p>

<p>Learn to break problems to smaller problems. This is the first step to problem-solving, for this is actually what we do.</p>

<p>\</p>

<h2 id="the-science-of-happiness"><a href="https://www.edx.org/course/the-science-of-happiness-uc-berkeleyx-gg101x#.VHcGmeeUdEc" target="_blank">The Science of Happiness</a></h2>

<p>\</p>

<p>Don’t worry be happy!</p>

<p>\</p>

<h2 id="εntrepreneurship-101-who-is-your-customer"><a href="https://www.edx.org/course/entrepreneurship-101-customer-mitx-15-390-1x#.VHcGnueUdEc" target="_blank">Εntrepreneurship 101: Who is your customer?</a></h2>

<p>\</p>

<p>One of the main entrepreneurial problems.</p>

<p>\</p>

<h2 id="building-mobile-experiences"><a href="https://www.edx.org/course/building-mobile-experiences-mitx-21w-789x#.VHcGpeeUdEc" target="_blank">Building Mobile Experiences</a></h2>

<p>\</p>

<p>Mobile is everywhere now and as a result implementations of mobile experiences interest us.\</p>

<p>\</p>

<h2 id="discrete-time-signal-processing"><a href="https://www.edx.org/course/-discrete-time-signal-processing-mitx-6-341x#.VHcGqOeUdEc" target="_blank">Discrete-Time Signal Processing</a></h2>

<p>\</p>

<p>Aka. DSP.</p>

<p>This list is a completely personal collection choices resulting from a 5 minutes scrolling research. You can surely find something that interest you out there.</p>

<p>Other sites that provide courses are:</p>

<ul>
  <li><a href="https://www.coursera.org/" target="_blank">Coursera</a></li>
  <li><a href="https://www.udacity.com" target="_blank">Udacity</a></li>
  <li><a href="https://www.khanacademy.org" target="_blank">Khan Academy</a></li>
</ul>

<p>Hope I helped.</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Short" /><summary type="html"><![CDATA[Due to a violent occupation of the ECE Department of the University of Patras from students that has led to the semester’s loss, me and my friends are gonna end up with some extra free time. \ We may study the next subjects by our selves or we can have some top notch professors and universities to teach us. Here is my (long and very unreal) edX whishlist: \ Robot Mechanics and Control, Part I I am actually doing this one now. It is very comprehensive and teaches the basics of kinematic chains and degrees of freedom. It is pretty fundamental stuff explained in the best way possible. Electronic Interfaces: Bridging the Physical and Digital Worlds Basic circuits and micro controller introduction. As internet of things and wearables are considered the great thing for the next couple of years this is a must to grasp the basics Innovation and Commercialization How innovative products are made. Not a must but it is interesting. Economics of Cybersecurity \ With 2 major breaches in the last six months cyber security is a hot topic alright. Impacts on the economy are starting to show, so if you care about that stuff this seems good. \ Mastering Quantum Mechanics \ Always wanted to be able to say the above. A dream coming true! \ Signals and Systems, Part 2  No introductions here. You can skip part one if you’re already familiar with the basics.  \ Circuits and Electronics \ Refresh your circuits skills and knowledge. Basic stuff again. \ Introduction to Aeronautical Engineering \ Aeronautical Engineering was my second choice but I find it very interesting.  \ Introduction to Solid State Chemistry \ Great innovations happen in that sector. As graphene enters our lives a we should refresh organic chemistry at least. \ Underactuated Robotics \ Walking and swimming robots. Nothing to say here. \ Introduction to Computational Thinking and Data Science \ Learn to break problems to smaller problems. This is the first step to problem-solving, for this is actually what we do. \ The Science of Happiness \ Don’t worry be happy! \ Εntrepreneurship 101: Who is your customer? \ One of the main entrepreneurial problems. \ Building Mobile Experiences \ Mobile is everywhere now and as a result implementations of mobile experiences interest us.\ \ Discrete-Time Signal Processing \ Aka. DSP. This list is a completely personal collection choices resulting from a 5 minutes scrolling research. You can surely find something that interest you out there. Other sites that provide courses are: Coursera Udacity Khan Academy Hope I helped.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Get a Password Manager Now</title><link href="https://tsangiotis.com/get-a-password-manager-now/" rel="alternate" type="text/html" title="Get a Password Manager Now" /><published>2014-10-07T10:24:00+00:00</published><updated>2014-10-07T10:24:00+00:00</updated><id>https://tsangiotis.com/get-a-password-manager-now</id><content type="html" xml:base="https://tsangiotis.com/get-a-password-manager-now/"><![CDATA[<p>There is a new breach boy in town and this time is called <a href="https:///en.wikipedia.org/wiki/Shellshock_(software_bug)">ShellShock</a>.</p>

<p>Researchers claim that it is a lot worst than <a href="https:///heartbleed.com/">Heardbleed</a>.</p>

<p>It is a Bash bug that allows almost anyone to execute commands to a remote machine.</p>

<p>For more about that <a href="https:///www.troyhunt.com/2014/09/everything-you-need-to-know-about.html?m=1">here</a>.</p>

<p>When these bugs get exposed, fear push us to security.
And as Batman says, fear is a tool!</p>

<!--more-->

<p>Since then, <a href="https:///www.theverge.com/2014/9/26/6849461/can-1password-save-your-digital-life-jeff-shiner-david-chartier">1Password’s sales skyrocketed</a>!
Same thing with other passwords managers for sure. And why is that?</p>

<p>We mostly use one or two password everywhere, they are probably in the dictionary and our safeguard is that digit or character we change each time.
Sounds familiar?</p>

<p>It is known that passwords are a bad authentication method.
There are so many weird things going on when you want to be safe with them…</p>

<p>You have to remember a very long string of case sensitive jiberish with symbols and numbers.
Multiply that by all your accounts and you get 100+ such strings to remember. The guy from Rainman would have gotten dizzy.</p>

<p>This is where password managers come in.</p>

<p>These are tools that help you automate and secure your password problem.
They offer browser extensions to fill in passwords for you, integrate password generators and monitor when you change your passwords so you don’t forget to update your database.
Your passwords are stored in a database that stays encrypted and decrypts when needed.</p>

<p>Whichever manager you choose, it <strong>must have</strong> a mobile app.
We use our phones to do serious stuff so this part should not be underestimated.</p>

<p>The most famous are <strong>LastPass, 1Password &amp; Dashlane</strong> as far as I know.</p>

<h2 id="lastpass"><a href="https://lastpass.com/">LastPass</a></h2>

<p>One of the oldest. It is the <strong>LastPass</strong> that you have to remember and it works pretty well.
it is not the most well designed but it offers Linux and even Symbian support and that makes it the most versatile.
It is <strong>free</strong> for desktop use but if you want the sync features you have to pay $12 a year which is very cheap ($1/month).
On Android the app is a fork of the Firefox for Android browser and it works OK to dig up a password.
Note that your passwords are stored on LastPass servers (AES-256 encrypted though).</p>

<p><strong>What makes it special:</strong> A pop up comes up when you want to login in an app that you have a web account registered in LastPass.</p>

<h2 id="1password"><a href="https://agilebits.com/onepassword">1Password</a></h2>

<p>The only solution that offers control over where your data is stored Dropbox or simply locally.
It uses AES-256 encryption with a strong autogenerated key that is unlicked by your Master Password.
You can sync between your computer and mobile via Dropbox or via WiFi.
There is only Windows and Mac support on the Desktop and only iOS and Android on mobile.
The applications are very well designed but they don’t offer autologin on apps beyond their included browsers on mobile.
It has a free trial but after that it costs $50 for a one time licence.</p>

<p><strong>What makes it special:</strong> The ease of use and the ability to control where you store your passwords.</p>

<h2 id="dashlane"><a href="https://www.dashlane.com/">Dashlane</a></h2>

<p>It is my personal favorite but I am cheap and I use LastPass. It keeps your data encrypted (Yes, that uses AES-256 too) on Dashlane’s servers.
The interfaces are better than LastPass so you are going to use it more and it offers the ability to store Credit Cards and a very good form completion feature. It costs $40 a year which is not cheap.</p>

<p><strong>What makes it special:</strong> It has very good apps and it also offers an Android Keyboard to use to input your passwords on mobile. It is safe to believe that this is coming to iOS too.</p>

<h2 id="google">Google</h2>

<p>Google is more aggressively implementing password manager features in Google Chrome. It keeps passwords encrypted proposes randomly generated passwords and to save passwords but is not yet as advanced as the others.</p>

<p>Keeping all your really strong passwords in one place encrypted is better than using the same password everywhere.</p>

<p>Start using a password manager today.</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><category term="Passwords" /><category term="Security" /><summary type="html"><![CDATA[There is a new breach boy in town and this time is called ShellShock. Researchers claim that it is a lot worst than Heardbleed. It is a Bash bug that allows almost anyone to execute commands to a remote machine. For more about that here. When these bugs get exposed, fear push us to security. And as Batman says, fear is a tool!]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Create oAuth Login for your Android Application</title><link href="https://tsangiotis.com/create-oauth-login-for-your-android-application/" rel="alternate" type="text/html" title="Create oAuth Login for your Android Application" /><published>2014-08-04T00:00:00+00:00</published><updated>2014-08-04T00:00:00+00:00</updated><id>https://tsangiotis.com/create-oauth-login-for-your-android-application</id><content type="html" xml:base="https://tsangiotis.com/create-oauth-login-for-your-android-application/"><![CDATA[<p>As many services start to support 2 factor authentication you should</p>

<p>enable it and use it as a user.</p>

<p>But what if you created a beautiful login screen for when 2fa was not a thing<br />
and now people can’t login?</p>

<p>The solution is an easy one. Just simplify login using oAuth!</p>

<blockquote>
  <p>OAuth is an open standard for authorization. OAuth provides client applications<br />
a ‘secure delegated access’ to server resources on behalf of a resource owner.</p>
</blockquote>

<p>What that means? That with a dialog inside our application or a browser intent<br />
we can log the user in from the familiar and trustworthy site of the service we<br />
are using. Tokens generated from oAuth can be revoked by the user at any time he<br />
sees fit.</p>

<p>He is happy because he is safe and we are happy because we don’t have to worry<br />
about API changes, API calls and that creepy stuff.</p>

<p>In oAuth there are also some things called scopes.</p>

<p>That means that the app has only the permissions it needs. No more, no less.</p>

<p>What we need is some keys often found in the respective development sections of<br />
each service.</p>

<h2 id="talking-android">Talking Android</h2>

<p>Below is a gist from <a href="http://tsagi.me/jekyll-client-for-android/" title="Link: http://tsagi.me/jekyll-client-for-android/">Jekyll for Android</a><br />
an open source project I maintain to post on your Jekyll blog from Android:</p>

<p>With this code you can get Read/Write capabilities on the user’s\</p>

<p>repositories.</p>

<p>Change the scopes to get <em>just</em> what permissions you need.</p>

<p>You will be presented with a button that brings up the authentication dialog.</p>

<p>The script should be almost identical for other services using oauth.</p>

<p>These are Google, Yahoo, Facebook, Twitter, etc.</p>

<p>Have fun! :)</p>

<p><img src="/assets/images/posts/create-oauth-login-for-your-android-application/01-large_keep-calm-and-oauth2.png" alt="" /></p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Guides" /><summary type="html"><![CDATA[As many services start to support 2 factor authentication you should enable it and use it as a user. But what if you created a beautiful login screen for when 2fa was not a thing and now people can’t login? The solution is an easy one. Just simplify login using oAuth! OAuth is an open standard for authorization. OAuth provides client applications a ‘secure delegated access’ to server resources on behalf of a resource owner. What that means? That with a dialog inside our application or a browser intent we can log the user in from the familiar and trustworthy site of the service we are using. Tokens generated from oAuth can be revoked by the user at any time he sees fit. He is happy because he is safe and we are happy because we don’t have to worry about API changes, API calls and that creepy stuff. In oAuth there are also some things called scopes. That means that the app has only the permissions it needs. No more, no less. What we need is some keys often found in the respective development sections of each service. Talking Android Below is a gist from Jekyll for Android an open source project I maintain to post on your Jekyll blog from Android: With this code you can get Read/Write capabilities on the user’s\ repositories. Change the scopes to get just what permissions you need. You will be presented with a button that brings up the authentication dialog. The script should be almost identical for other services using oauth. These are Google, Yahoo, Facebook, Twitter, etc. Have fun! :)]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">An easy Media Server and Time Machine</title><link href="https://tsangiotis.com/an-easy-media-server-and-time-machine/" rel="alternate" type="text/html" title="An easy Media Server and Time Machine" /><published>2014-06-17T10:27:00+00:00</published><updated>2014-06-17T10:27:00+00:00</updated><id>https://tsangiotis.com/an-easy-media-server-and-time-machine</id><content type="html" xml:base="https://tsangiotis.com/an-easy-media-server-and-time-machine/"><![CDATA[<p>I hate mess… So I like remote solutions!</p>

<p>One thing that bothers me is the USB cable that I always have connected on my computer.
On it’s other end, lies a 1TB Hard Drive that stores my Time Machine backup.</p>

<p>From time to time I stream movies via <a href="https:///plexapp.com/">Plex</a> from the same hard disk.
That’s because I don’t want to store movies on my low capacity Macbook Air.</p>

<p>Since I got my Chromecast, Plex has gone to the top of my “Useful Software” list as it supports Chromecast and I can stream the Movies without connecting a HDMI cable.</p>

<p>So what I need? A HDD in my network that hosts my media and my backups.</p>

<!--more-->

<p><img src="/images/an-easy-media-server-and-time-machine/1-4.png" alt="" /></p>

<p>Nice, but not so cheap.</p>

<p>Using a spare very low powered netbook and the Time Machine HDD, I managed to put away these 2 functions from my laptop.</p>

<p>I could also get torrents directly on my netbook. Life would be easier…</p>

<p><em>Let’s do it!</em></p>

<h1 id="preparation">Preparation</h1>

<h2 id="what-we-will-need">What we will need</h2>

<ul>
  <li>We need something debian-based. Preferably use your old computer or netbook but not your Rasperry Pi as Plex does not support it officialy yet (I think). You can check your chances with <a href="https:///www.rasplex.com/">RasPlex</a> if you feel like it.
    <ul>
      <li>I used <strong>Ubuntu Server 14.04 LTS 32bit</strong> on an old Lenovo ideapad.</li>
    </ul>
  </li>
  <li>A large enough Hard Drive. TB has gone pretty cheap lately.</li>
  <li>An afternoon.</li>
</ul>

<h2 id="format-the-hard-drive">Format the Hard Drive</h2>

<p>Put the HDD on OS X and create a big partition for the Time Machine using Disk Utility.</p>

<p>Leave the rest Unallocated.</p>

<blockquote>
  <p>Remeber <strong>not</strong> to have spaces on the disk labels. I used <strong>timemachine</strong>and <strong>diskspace</strong></p>
</blockquote>

<p>Next holding <code class="language-plaintext highlighter-rouge">option</code> click partition from the sidebar and Disable Journaling.
We do this to ensure compatibility on case of restore.</p>

<p>Then on linux format the rest as <code class="language-plaintext highlighter-rouge">ext2</code>, <code class="language-plaintext highlighter-rouge">ext3</code> or <code class="language-plaintext highlighter-rouge">ext4</code>.</p>

<p>You can use <a href="https:///www.gnu.org/software/parted/manual/html_chapter/parted_2.html">parted</a> for that.</p>

<h1 id="setup-system">Setup system</h1>

<p>Use <code class="language-plaintext highlighter-rouge">blkid</code> to check your Partiotions UUIDs and note them.
The <code class="language-plaintext highlighter-rouge">sdb</code> ones are the ones we care about.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo blkid
/dev/sda1: UUID="dadbbcb0-0680-4633-b6a5-ebea09359478" TYPE="ext2"
/dev/sda5: UUID="PnN6eH-eipf-Rq1w-ddfi-FCf3-w23k-5NDAcE" TYPE="LVM2_member"
/dev/mapper/ideapad--vg-root: UUID="ab0966d5-eba5-4ca2-aeca-62234b4ce71f" TYPE="ext4"
/dev/mapper/ideapad--vg-swap_1: UUID="54745ca7-cb41-432f-aa3e-92ec708248e6" TYPE="swap"
/dev/sdb1: UUID="e14664bf-85bb-4265-99e3-787e454da730" TYPE="ext2"
/dev/sdb3: UUID="744f07e4-2075-34f5-811f-df6b37e2d2a7" LABEL="timemachine" TYPE="hfsplus"
</code></pre></div></div>

<p>Now create the mount points and give them the right permissions.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo mkdir /media/timemachine /media/tm_backup
sudo mkdir /media/diskspace /media/diskspace/transmission /media/diskspace/completed
sudo mkdir /media/diskspace/incomplete /media/diskspace/torrents
sudo chown -R tsagi:tsagi /media/diskspace/
sudo chown -R tsagi:tsagi /media/timemachine/
</code></pre></div></div>

<p>Add the settings to the end <code class="language-plaintext highlighter-rouge">/etc/fstab</code> so they mount on startup.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>UUID=e14664bf-85bb-4265-99e3-787e454da730 /media/diskspace ext2 defaults 0 0
UUID=744f07e4-2075-34f5-811f-df6b37e2d2a7 /media/timemachine hfsplus force,rw 0 0
</code></pre></div></div>

<p>Then reboot.</p>

<h1 id="time-machine">Time Machine</h1>

<h2 id="linux-server">Linux Server</h2>

<p>First install Netatalk:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo apt-get install netatalk
</code></pre></div></div>

<p>Edit /etc/netatalk/afpd.conf with your favorite editor and add the following line at the end (comment out every other line that might be active):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>- -tcp -noddp -uamlist uams_dhx.so,uams_dhx2_passwd.so -nosavepassword
</code></pre></div></div>

<div>`This will define the afpd server (Netatalk).`</div>

<p>Next make sure your /etc/default/netatalk file shows CNID_METAD_RUN=yes.
This will ensure that all the metadata that is needed by OS X is handled and saved by an extra daemon on the side, too.</p>

<p>Now add the following to <code class="language-plaintext highlighter-rouge">/etc/netatalk/AppleVolumes.default</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/media/timemachine/tm_backup "Time Machine" allow:username cnidscheme:dbd volsizelimit:650000 options:usedots,upriv,tm
</code></pre></div></div>

<p>Adjust the location of the directory and the username to your needs. The example above also limits the size shown to OS X as 650 GB (the number is given in MiB, so it’s 650.000 times 1024 in the real world). Also note that the tm option is only option separating a Time Machine capable directory from a regular afp share.</p>

<p>You should also edit the <code class="language-plaintext highlighter-rouge">:DEFAULT</code> property on<code class="language-plaintext highlighter-rouge">/etc/netatalk/AppleVolumes.default</code> file to match this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>:DEFAULT: cnidscheme:dbd options:upriv,usedots
</code></pre></div></div>

<p>Restart the Netatalk daemon to make sure it uses the newly adjusted configurations:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo service netatalk restart
</code></pre></div></div>

<p>We are now done configuring the server.</p>

<h2 id="os-x-client">OS X Client</h2>

<p>Open up <strong>Finder</strong> and press <code class="language-plaintext highlighter-rouge">Command + K</code> to bring up the “Connect to Server” dialog.</p>

<p>Connect to server dialog</p>

<p>Enter <strong>afp://ip_address_of_your_server</strong>, press Enter and select the according share from the list.
Fill in username and password from the user <strong>on the server</strong> (not the one on the Mac) and see if you have access to the share.
If everything works well, continue with the Time Machine preferences.</p>

<p>In the system preferences on your Mac, select Time Machine and click on “Select Disk…”</p>

<p>Select your share from the list, edit the other options like excluded directories and automatic backups to your liking and enjoy this cheap and reliable Time Machine solution!
The first backup might take quite some time, depending on your network and hard drive speed. All the following backups will be incremental and a lot faster.</p>

<p><strong>Bonus:</strong> you don’t even have to manually connect to the server share before a backup. Time Machine will let its magic happen and auto-mount / un-mount the share whenever it is needed. Peace of mind in a box.</p>

<p><em>Credits:</em> I used <strong><a href="https:///pwntr.com/2012/03/03/easy-mac-os-x-lion-10-7-time-machine-backup-using-an-ubuntu-linux-server-11-10-12-04-lts-and-up/">this</a></strong> guide with some changes I made.</p>

<p>Useful links:</p>

<p><a href="https:///netatalk.sourceforge.net/2.2/htmldocs/afpd.conf.5.html">afpd.conf manpage</a></p>

<p><a href="https:///netatalk.sourceforge.net/2.2/htmldocs/AppleVolumes.default.5.html">AppleVolumes.default manpage</a></p>

<h1 id="media-server">Media Server</h1>

<p>What it takes to make the perfect media server for me?</p>

<p>Just a good torrent client and Plex!</p>

<p>Let’s get to it!</p>

<h2 id="torrents">Torrents</h2>

<p>For the torrent client I just used <a href="https://www.transmissionbt.com/">Transmission</a>. It is more than good and it has a clean remote UI.</p>

<p><img src="/images/an-easy-media-server-and-time-machine/2-3.png" alt="" /></p>

<p>First get Transmission:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo add-apt-repository ppa:transmissionbt/ppa
sudo apt-get update
sudo apt-get install transmission-cli transmission-common transmission-daemon

</code></pre></div></div>

<p>We should add our user to the <code class="language-plaintext highlighter-rouge">debian-transmission</code> group.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo usermod -a -G debian-transmission user

</code></pre></div></div>

<p>Remember the directories we created earlier?
Let’s give the correct permissions.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo chmod -R 775 /media/diskspace/transmission

</code></pre></div></div>

<p>Now stop the daemon to configure transmission.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo service transmission-daemon stop

</code></pre></div></div>

<p>Backup the default settings:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cd /etc/transmission-daemon
sudo cp -a settings.json settings.json.default

</code></pre></div></div>

<p>Then create a transmission settings directory in your home folder (example:<code class="language-plaintext highlighter-rouge">/home/user/.config/transmission-daemon</code>), copy settings.json into it, and change its permissions to make it accessible to transmission-daemon:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mkdir /home/user/.config/transmission-daemon
sudo cp -a /etc/transmission-daemon/settings.json transmission-daemon/
sudo chgrp -R debian-transmission /home/user/.config/transmission-daemon
sudo chmod -R 770 /home/user/.config/transmission-daemon

</code></pre></div></div>

<p>Then, remove <code class="language-plaintext highlighter-rouge">/etc/transmission-daemon/settings.json</code>, create a symbolic link in the <code class="language-plaintext highlighter-rouge">/etc/transmission-daemon</code> folder, and edit it permissions to make it accessible to Transmission and the user account:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cd /etc/transmission-daemon
sudo rm settings.json
sudo ln -s /home/user/.config/transmission-daemon/settings.json settings.json
sudo chgrp -R debian-transmission /etc/transmission-daemon/settings.json
sudo chmod -R 770 /etc/transmission-daemon/settings.json

</code></pre></div></div>

<p>You can now start editing <code class="language-plaintext highlighter-rouge">/home/user/.config/transmission-daemon/settings.json</code>without worries of losing your settings.</p>

<p>You can copy mine but remember to change your settings and password if they don’t agree:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>{
    "alt-speed-down": 500,
    "alt-speed-enabled": false,
    "alt-speed-time-begin": 540,
    "alt-speed-time-day": 127,
    "alt-speed-time-enabled": false,
    "alt-speed-time-end": 1020,
    "alt-speed-up": 1,
    "bind-address-ipv4": "0.0.0.0",
    "bind-address-ipv6": "::",
    "blocklist-enabled": false,
    "blocklist-updates-enabled": true,
    "blocklist-url": "https:///www.example.com/blocklist",
    "cache-size-mb": 4,
    "dht-enabled": true,
    "download-dir": "/media/diskspace/transmission/completed",
    "download-limit": 100,
    "download-limit-enabled": 0,
    "download-queue-enabled": true,
    "download-queue-size": 5,
    "encryption": 2,
    "filter-mode": "show-all",
    "idle-seeding-limit": 30,
    "idle-seeding-limit-enabled": false,
    "incomplete-dir": "/media/diskspace/transmission/incomplete",
    "incomplete-dir-enabled": true,
    "inhibit-desktop-hibernation": false,
    "lazy-bitfield-enabled": true,
    "lpd-enabled": false,
    "main-window-height": 500,
    "main-window-is-maximized": 0,
    "main-window-layout-order": "menu,toolbar,filter,list,statusbar",
    "main-window-width": 467,
    "main-window-x": 50,
    "main-window-y": 50,
    "max-peers-global": 200,
    "message-level": 2,
    "minimal-view": false,
    "open-dialog-dir": "/media/diskspace",
    "open-file-limit": 32,
    "peer-congestion-algorithm": "",
    "peer-id-ttl-hours": 6,
    "peer-limit-global": 240,
    "peer-limit-per-torrent": 60,
    "peer-port": 9071,
    "peer-port-random-high": 9098,
    "peer-port-random-low": 9026,
    "peer-port-random-on-start": true,
    "peer-socket-tos": "default",
    "pex-enabled": true,
    "play-download-complete-sound": true,
    "port-forwarding-enabled": false,
    "preallocation": 1,
    "prefetch-enabled": 1,
    "prompt-before-exit": true,
    "proxy": "",
    "proxy-auth-enabled": false,
    "proxy-auth-password": "",
    "proxy-auth-username": "",
    "proxy-enabled": false,
    "proxy-port": 80,
    "proxy-type": 0,
    "queue-stalled-enabled": true,
    "queue-stalled-minutes": 30,
    "ratio-limit": 1.5000,
    "ratio-limit-enabled": true,
    "rename-partial-files": true,
    "rpc-authentication-required": true,
    "rpc-bind-address": "0.0.0.0",
    "rpc-enabled": true,
    "rpc-password": "{c371b29b1eb8a1164023ef4a13013e7583d8a736E5n9jnT/",
    "rpc-port": 9025,
    "rpc-url": "/transmission/",
    "rpc-username": "tsagi",
    "rpc-whitelist": "127.0.0.1,*.*.*.*",
    "rpc-whitelist-enabled": true,
    "scrape-paused-torrents-enabled": true,
    "script-torrent-done-enabled": false,
    "script-torrent-done-filename": "",
    "seed-queue-enabled": false,
    "seed-queue-size": 10,
    "show-backup-trackers": false,
    "show-desktop-notification": true,
    "show-extra-peer-details": false,
    "show-filterbar": true,
    "show-notification-area-icon": false,
    "show-options-window": true,
    "show-statusbar": true,
    "show-toolbar": true,
    "show-tracker-scrapes": false,
    "sort-mode": "sort-by-name",
    "sort-reversed": false,
    "speed-limit-down": 0,
    "speed-limit-down-enabled": false,
    "speed-limit-up": 1,
    "speed-limit-up-enabled": true,
    "start-added-torrents": true,
    "statusbar-stats": "total-ratio",
    "trash-original-torrent-files": false,
    "umask": 2,
    "upload-limit": 100,
    "upload-limit-enabled": 0,
    "upload-slots-per-torrent": 4,
    "user-has-given-informed-consent": true,
    "utp-enabled": true,
    "watch-dir": "/media/diskspace/transmission/torrents",
    "watch-dir-enabled": true
}

</code></pre></div></div>

<p>Now start the daemon and test the setup heading to<code class="language-plaintext highlighter-rouge">https:///your.server.ip.adress:9025/</code></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo service transmission-daemon start
</code></pre></div></div>

<h2 id="plex">Plex</h2>

<p>Finaly we need to set up Plex.</p>

<p>Go to <a href="https://plex.tv/downloads">Plex website</a> and copy the link for the appropriate version for your setup. I got the 32bit Ubuntu version.</p>

<p>Download it and install it.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>wget https:///downloads.plexapp.com/plex-media-server/0.9.9.12.504-3e7f93c/plexmediaserver_0.9.9.12.504-3e7f93c_i386.deb
sudo dpkg -i plexmediaserver_0.9.9.12.504-3e7f93c_i386.deb

</code></pre></div></div>

<p>Next give plex the permissions it needs:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo gpasswd -a plex tsagi

</code></pre></div></div>

<p>Go to <code class="language-plaintext highlighter-rouge">https:///your.server.ip.adress:32400/manage</code> and point your libraries to the transmission’s <code class="language-plaintext highlighter-rouge">completed</code> directory. It can figure out if you have a series episode or a movie in the directory.</p>

<p><img src="/images/an-easy-media-server-and-time-machine/4.png" alt="" /></p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Guides" /><category term="Projects" /><category term="Automation" /><category term="Plex" /><category term="Time Machine" /><summary type="html"><![CDATA[I hate mess… So I like remote solutions! One thing that bothers me is the USB cable that I always have connected on my computer. On it’s other end, lies a 1TB Hard Drive that stores my Time Machine backup. From time to time I stream movies via Plex from the same hard disk. That’s because I don’t want to store movies on my low capacity Macbook Air. Since I got my Chromecast, Plex has gone to the top of my “Useful Software” list as it supports Chromecast and I can stream the Movies without connecting a HDMI cable. So what I need? A HDD in my network that hosts my media and my backups.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Spark Core, First thoughts</title><link href="https://tsangiotis.com/spark-core-first-thoughts/" rel="alternate" type="text/html" title="Spark Core, First thoughts" /><published>2014-01-02T09:00:00+00:00</published><updated>2014-01-02T09:00:00+00:00</updated><id>https://tsangiotis.com/spark-core-first-thoughts</id><content type="html" xml:base="https://tsangiotis.com/spark-core-first-thoughts/"><![CDATA[<p>I just got my hands on my long waited <a href="https:///tsagi.me/spark.io">Spark Core</a>!</p>

<p>It is a tiny Arduino board with a built in WiFi module. Besides that and the obvious possibilities of the Core, there is an <a href="https:///tsagi.me/docs.spark.io">API</a> making it possible for the Core to talk to the internet.</p>

<!--more-->

<p>Let’s say I want to check the status of the Hackerspace of Patras (0 or 1).</p>

<p>This simple bash script that runs on my computer does just that:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>#!/bin/bash

while true; do
  sleep 5
  st=$(curl -s https:///www.p-space.gr/status/)
  echo "$st"
  if(( "$st" == "0")); then
    echo "P-Space is closed!"
  else
    echo "P-Space is open"
  fi

curl  https://api.spark.io/v1/devices/DEVICE_ID_GOES_HERE/status \        -d access_token=ACCESS_TOKEN_GOES_HERE -d args="$st"done

</code></pre></div></div>

<p>What it does is to check the status and send it to the core with a request.The most important line is the curl command. That makes the request to the core.</p>

<p>Let’s put some code on our Core too!</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>int status(String args) {
  int status;
  if(args == "1"){
    status=1;
    digitalWrite(D7,HIGH);
    digitalWrite(D6,LOW);
  }
  else{
    status=0;
    digitalWrite(D6,HIGH);
    digitalWrite(D7,LOW);
    }

  return status;
}

void setup() {
  pinMode(D7,OUTPUT);
  pinMode(D6,OUTPUT);
  Spark.function("status", status);
}

void loop() {

}

</code></pre></div></div>

<p>This one sets pins <code class="language-plaintext highlighter-rouge">D6</code>, <code class="language-plaintext highlighter-rouge">D7</code> as outputs and makes the function <code class="language-plaintext highlighter-rouge">status</code> available to the cloud!</p>

<p>See it in action:</p>

<p>That makes everything easier! No need to start an HTTP server on the arduino (you could if you wanted).</p>

<p>It looks amazing for a device so small! Don’t you think?</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><category term="IoT" /><summary type="html"><![CDATA[I just got my hands on my long waited Spark Core! It is a tiny Arduino board with a built in WiFi module. Besides that and the obvious possibilities of the Core, there is an API making it possible for the Core to talk to the internet.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Vim Tips #1</title><link href="https://tsangiotis.com/vim-tips-number-1/" rel="alternate" type="text/html" title="Vim Tips #1" /><published>2013-12-22T00:00:00+00:00</published><updated>2013-12-22T00:00:00+00:00</updated><id>https://tsangiotis.com/vim-tips-number-1</id><content type="html" xml:base="https://tsangiotis.com/vim-tips-number-1/"><![CDATA[<p>For some time now I use only Vim instead of Sublime Text 2 that I used to use for everything.</p>

<p>There are plenty reasons for that and I will not go into it.</p>

<p>As a result I have acquired some experience that will help mostly begginers and hopefully some intermediate users.</p>

<h1 id="start-with-the-tutorials">Start with the tutorials</h1>

<p>Vim has an excellent tutorial to get you started!</p>

<p><code class="language-plaintext highlighter-rouge">:help tutor</code> will guide you to the basics of vim like instert mode, save a file, etc. With these commands you will be ready to do some work on any vim.</p>

<h1 id="find-a-good-vimrc">Find a good .vimrc</h1>

<p>After you use vim for some time, slowly remaping stuff on your .vimrc and start getting some work done you could find a well constructed configuration that fits your needs and taste.<br />
I use the <a href="https://github.com/amix/vimrc">awesome version</a> of Amir’s Salihefendic <a href="http://amix.dk/vim/vimrc.html">.vimrc</a>.<br />
Now it doesn’t look like it anymore because I reconfigured it for my own taste and convenience but it provided me with a feature-full and well structured starting point.</p>

<p>There are plenty configurations out there and every user has his own.<br />
So instead of building your own, save your self some frustration and don’t solve the problems others have solved many times before.</p>

<h1 id="dont-use-the-arrows">Don’t use the arrows</h1>

<p>This is very difficult at first but hjkl are very faster when navigating if you get used to that.</p>

<p>I will start sharing vim tips with you from now on and I’ll be glad to hear yours’ too!</p>

<h3 id="update">Update:</h3>

<p><a href="http://dtsironis.net/posts/how-to-vim/">@tsironakos</a> reported that <a href="https://github.com/carlhuda/janus">Janus build</a> and <a href="https://github.com/square/maximum-awesome">maximum-awesome</a> are great configuration choices for beginners! Check them out!</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Guides" /><summary type="html"><![CDATA[For some time now I use only Vim instead of Sublime Text 2 that I used to use for everything. There are plenty reasons for that and I will not go into it. As a result I have acquired some experience that will help mostly begginers and hopefully some intermediate users. Start with the tutorials Vim has an excellent tutorial to get you started! :help tutor will guide you to the basics of vim like instert mode, save a file, etc. With these commands you will be ready to do some work on any vim. Find a good .vimrc After you use vim for some time, slowly remaping stuff on your .vimrc and start getting some work done you could find a well constructed configuration that fits your needs and taste. I use the awesome version of Amir’s Salihefendic .vimrc. Now it doesn’t look like it anymore because I reconfigured it for my own taste and convenience but it provided me with a feature-full and well structured starting point. There are plenty configurations out there and every user has his own. So instead of building your own, save your self some frustration and don’t solve the problems others have solved many times before. Don’t use the arrows This is very difficult at first but hjkl are very faster when navigating if you get used to that. I will start sharing vim tips with you from now on and I’ll be glad to hear yours’ too! Update: @tsironakos reported that Janus build and maximum-awesome are great configuration choices for beginners! Check them out!]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Privacy is a trend?</title><link href="https://tsangiotis.com/privacy-is-a-trend/" rel="alternate" type="text/html" title="Privacy is a trend?" /><published>2013-11-20T00:00:00+00:00</published><updated>2013-11-20T00:00:00+00:00</updated><id>https://tsangiotis.com/privacy-is-a-trend</id><content type="html" xml:base="https://tsangiotis.com/privacy-is-a-trend/"><![CDATA[<p>I just read <a href="http://techcrunch.com/2013/11/20/googles-cerf-says-privacy-may-be-an-anomaly-historically-hes-right/?ncid=fb">this article</a>. Read it and then come back please.\</p>

<p>You read it? Perfect!</p>

<p>I believe that the logical conclusion is accurate and I believe the same thing. Transparency is the natural conclusion and unavoidable result.</p>

<p>Privacy has become kind of a sensitive issue the lately. As I understand it, privacy is the defence mechanism to the vast amount of information available online. It makes sense. You Imagine a creepy guy stalking you over the internet or a big brother tracking your every move to make profit from it.</p>

<p>I have many friends that avoid using the internet and connecting through social networks because they are afraid that they will lose their privacy. Most of the times their concerns involve hesitation of giving their email, and fear that their sensitive data will be used for something. At the time they are asking that, their sensitive data is their birthday, their phone number, maybe their home address and most of all their photos. If we ignore the fact that most of this information can be founded by anyone (at least phone number and address) their just affraid that they will lose their privacy. That this guy they don’t know can see them or have access to their info in any way.</p>

<p>It is true that people likes and dislikes have been used against them in the past. For example if you were a member of a social or political group let’s say a homosexual or a communist, you could be defined by that and face pretty bad consequences. And things worked vise versa of course.</p>

<p>However it is my belief that people should be free of fear of what they do with their online living and responsible for it. Don’t get me wrong. I don’t say that you should post your life online or your deepest secrets. As another article stated some time ago <a href="http://www.theverge.com/2013/9/6/4699358/after-prism-lawyers-struggle-to-keep-attorney-client-privilege-safe" title="Link: http://www.theverge.com/2013/9/6/4699358/after-prism-lawyers-struggle-to-keep-attorney-client-privilege-safe">“Did you murder someone? Don’t tell your lawyer over email”</a>. Be carefull but not afraid.</p>

<p>We live in an age where your personal beliefs are respected and the internet helped a lot to erase social censorship. This is what people expect from the internet. Freedom! Personally, I don’t like the terrorising <a href="http://scroogled.com/">Scroogled</a> Microsoft campain. I don’t like being terrorised to stop using a service or terrorised for any purpose and no one can guarantee me that Microsoft or any other who claims that respects my privacy, does so.</p>

<p>Of course you can be anonymous if you want. That involves connecting to the internet through different proxy servers, using nicknames and weird email accounts and doing a lot of work just to stay untracable but on the grid. Even if you do those stuff you have some existance to the network if this happened before you started using all these.</p>

<p>I cannot do all these and not many people can or want to. If you do something that requires top secrecy then do the necesary actions. Otherwise I believe that your tastes and photos don’t matter to most of the governments or enterprises and you can live happily ever after.</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><summary type="html"><![CDATA[I just read this article. Read it and then come back please.\ You read it? Perfect! I believe that the logical conclusion is accurate and I believe the same thing. Transparency is the natural conclusion and unavoidable result. Privacy has become kind of a sensitive issue the lately. As I understand it, privacy is the defence mechanism to the vast amount of information available online. It makes sense. You Imagine a creepy guy stalking you over the internet or a big brother tracking your every move to make profit from it. I have many friends that avoid using the internet and connecting through social networks because they are afraid that they will lose their privacy. Most of the times their concerns involve hesitation of giving their email, and fear that their sensitive data will be used for something. At the time they are asking that, their sensitive data is their birthday, their phone number, maybe their home address and most of all their photos. If we ignore the fact that most of this information can be founded by anyone (at least phone number and address) their just affraid that they will lose their privacy. That this guy they don’t know can see them or have access to their info in any way. It is true that people likes and dislikes have been used against them in the past. For example if you were a member of a social or political group let’s say a homosexual or a communist, you could be defined by that and face pretty bad consequences. And things worked vise versa of course. However it is my belief that people should be free of fear of what they do with their online living and responsible for it. Don’t get me wrong. I don’t say that you should post your life online or your deepest secrets. As another article stated some time ago “Did you murder someone? Don’t tell your lawyer over email”. Be carefull but not afraid. We live in an age where your personal beliefs are respected and the internet helped a lot to erase social censorship. This is what people expect from the internet. Freedom! Personally, I don’t like the terrorising Scroogled Microsoft campain. I don’t like being terrorised to stop using a service or terrorised for any purpose and no one can guarantee me that Microsoft or any other who claims that respects my privacy, does so. Of course you can be anonymous if you want. That involves connecting to the internet through different proxy servers, using nicknames and weird email accounts and doing a lot of work just to stay untracable but on the grid. Even if you do those stuff you have some existance to the network if this happened before you started using all these. I cannot do all these and not many people can or want to. If you do something that requires top secrecy then do the necesary actions. Otherwise I believe that your tastes and photos don’t matter to most of the governments or enterprises and you can live happily ever after.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Really get shit done</title><link href="https://tsangiotis.com/really-get-shit-done/" rel="alternate" type="text/html" title="Really get shit done" /><published>2013-11-15T00:00:00+00:00</published><updated>2013-11-15T00:00:00+00:00</updated><id>https://tsangiotis.com/really-get-shit-done</id><content type="html" xml:base="https://tsangiotis.com/really-get-shit-done/"><![CDATA[<p>Many times we spend much more time searching for the best tools to do something than actually doing the thing.\</p>

<p>We geeks fall in this trap. We even try to make our own tools for everything!</p>

<p>The most famous tool everyone uses, is a todo list. And I have always managed to change how I manage mine. This is maybe due to the fact that todo list apps are popping everywhere making things even more complicated!</p>

<p>Recently I began using Gina Trapani’s <a href="https://github.com/ginatrapani/todo.txt-cli">todo.txt</a> as my todo list and I think it is the best yet.</p>

<p>Here is how you add a task from command line:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ todotxt add "(A) 2013-11-17 Buy coffee @groceries +home due:2013-11-19"
     |          |        |    [--------]      |        |       |
     |      priority     |         |          |       tag      |
  command               date  actual task     |             due date
                      (can be            category/list
                   autogenerated)
</code></pre></div></div>

<p>priorities, dates and all that stuff are totally optional and you are not obligated to use them.</p>

<p>Fast, simple and fully customizable.</p>

<p>And puting it in a Dropbox folder, it syncs with everything with some Android apps to support it. I use <a href="https://play.google.com/store/apps/details?id=nl.mpcjanssen.todotxtholo&amp;hl=en">Simpletask</a> but there are also other choises.</p>

<p>Make your task managing simple and spend time on things that matter!</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><summary type="html"><![CDATA[Many times we spend much more time searching for the best tools to do something than actually doing the thing.\ We geeks fall in this trap. We even try to make our own tools for everything! The most famous tool everyone uses, is a todo list. And I have always managed to change how I manage mine. This is maybe due to the fact that todo list apps are popping everywhere making things even more complicated! Recently I began using Gina Trapani’s todo.txt as my todo list and I think it is the best yet. Here is how you add a task from command line: $ todotxt add "(A) 2013-11-17 Buy coffee @groceries +home due:2013-11-19" | | | [--------] | | | | priority | | | tag | command date actual task | due date (can be category/list autogenerated) priorities, dates and all that stuff are totally optional and you are not obligated to use them. Fast, simple and fully customizable. And puting it in a Dropbox folder, it syncs with everything with some Android apps to support it. I use Simpletask but there are also other choises. Make your task managing simple and spend time on things that matter!]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Jekyll for Android v1.0</title><link href="https://tsangiotis.com/jekyll-for-android-v1-dot-0/" rel="alternate" type="text/html" title="Jekyll for Android v1.0" /><published>2013-10-17T07:00:00+00:00</published><updated>2013-10-17T07:00:00+00:00</updated><id>https://tsangiotis.com/jekyll-for-android-v1-dot-0</id><content type="html" xml:base="https://tsangiotis.com/jekyll-for-android-v1-dot-0/"><![CDATA[<p>After a couple of months around <a href="https:///github.com/tsagi/jekyllforandroid">this</a> project it reached a stage where maybe it is not super stable but it is usable and pretty ok for my needs.</p>

<!--more-->

<p>It provides:</p>

<ul>
  <li>UI that is simple and I like.</li>
  <li>Ability to commit a new post through Github API.</li>
  <li>Keeps a draft.</li>
  <li>A list of the user’s posts.</li>
  <li>Ability to edit previous posts.</li>
</ul>

<p>Here are some screenshots:</p>

<p><img src="/images/jekyll-for-android-v1-dot-0/1.png" alt="" />
<img src="/images/jekyll-for-android-v1-dot-0/2.png" alt="" />
<img src="/images/jekyll-for-android-v1-dot-0/3.png" alt="" /></p>

<p>The source code is available and always will be <a href="https://github.com/tsagi/jekyll-client-for-android">on Github</a>.
I think about publishing the app on <a href="https://play.google.com/store">Google Play Store</a> for a small
price (let’s a dollar or two) mainly to get back the money from that Developer account.</p>

<p>What you will get is easy updates through the Play Store and the happiness of buying me a beer.</p>

<p>You can download the latest binary <a href="https://github.com/tsagi/jekyll-client-for-android/blob/master/README.md#download">here</a>.</p>

<p>What do you think about it?</p>

<p>Let me know! :)</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Projects" /><category term="Android" /><category term="Blogging" /><category term="Jekyll" /><summary type="html"><![CDATA[After a couple of months around this project it reached a stage where maybe it is not super stable but it is usable and pretty ok for my needs.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Mr. Freeman</title><link href="https://tsangiotis.com/mr-freeman/" rel="alternate" type="text/html" title="Mr. Freeman" /><published>2013-08-21T07:00:00+00:00</published><updated>2013-08-21T07:00:00+00:00</updated><id>https://tsangiotis.com/mr-freeman</id><content type="html" xml:base="https://tsangiotis.com/mr-freeman/"><![CDATA[<p>From <a href="https:///en.wikipedia.org/wiki/Mr._Freeman">Wikipedia</a>:</p>

<blockquote>
  <p>Mr. Freeman is a Russian animated web series named after its main character. The series appeared on YouTube on September 21, 2009 and got considerable popularity in Runet. The main content of the series is monologues which in a harsh manner criticize the lifestyle of modern everyman. As of August 16, 2012 there are 19 episodes published. The total number of views is more than 35 million.</p>
</blockquote>

<p>I discovered Mr. Freeman by <a href="https:///www.youtube.com/watch?v=n90cZxLxrSo">this</a> video last year which I saved on my Favourites list on Youtube.
Today as I was cleaning up this list, I rediscovered it and felt like sharing.</p>

<p>You may say you are not that guy for whom he is talking about but chances are you have a lot in common. Agreeing or not with him and his opinion of you there is sure some food for thought in his words.</p>

<iframe src="https://www.youtube.com/embed/GRNZ0wwNOTc?feature=oembed" width="800" height="450" frameborder="0" allowfullscreen="allowfullscreen"></iframe>]]></content><author><name>Tasos Sangiotis</name></author><category term="Short" /><category term="Video" /><summary type="html"><![CDATA[From Wikipedia: Mr. Freeman is a Russian animated web series named after its main character. The series appeared on YouTube on September 21, 2009 and got considerable popularity in Runet. The main content of the series is monologues which in a harsh manner criticize the lifestyle of modern everyman. As of August 16, 2012 there are 19 episodes published. The total number of views is more than 35 million. I discovered Mr. Freeman by this video last year which I saved on my Favourites list on Youtube. Today as I was cleaning up this list, I rediscovered it and felt like sharing. You may say you are not that guy for whom he is talking about but chances are you have a lot in common. Agreeing or not with him and his opinion of you there is sure some food for thought in his words.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Jekyll for Android</title><link href="https://tsangiotis.com/jekyll-for-android/" rel="alternate" type="text/html" title="Jekyll for Android" /><published>2013-08-13T00:00:00+00:00</published><updated>2013-08-13T00:00:00+00:00</updated><id>https://tsangiotis.com/jekyll-for-android</id><content type="html" xml:base="https://tsangiotis.com/jekyll-for-android/"><![CDATA[<p>Some months ago I ditched my <a href="http://biohazardev.wordpress.com/">WordPress blog</a> and fall for a platform called<a href="http://jekyllrb.com/">Jekyll</a> (I wrote about it <a href="http://tsagi.github.io/general/2013/05/09/hello-world/">here</a>).\</p>

<p>Being hosted on <a href="http://tsagi.me/github.com">Github</a> was a great advantage but what happens when I want to post from my smartphone or tablet?</p>

<p>Cloning the whole project with some client and pushing it up again seemed stupid for just one file, the setup of which was pleasant because the filename should be something in the form of:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>YYYY-MM-DD-title.md
</code></pre></div></div>

<p>and the beginning of the file:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>---
layout: post
title: "The Title"
summary: ""
category:
tags:
---
</code></pre></div></div>

<p>So these days I started a little project called <strong>Jekyll for Android</strong>.</p>

<p>It is a little simple client for android that allows you to publish a post on your Jekyll blog if it is hosted on Github!</p>

<p>It it uses Github’s API and offers a Markdown Preview to check if your post looks ok (very Alpha feature) .</p>

<p>If you find it useful fork it, make it better or just use it!</p>

<p>You can find the project <a href="https://github.com/tsagi/jekyll-client-for-android">here</a>!</p>

<p><em>P.S.:</em> I wrote this post with it so it looks like it works! :p</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Projects" /><summary type="html"><![CDATA[Some months ago I ditched my WordPress blog and fall for a platform calledJekyll (I wrote about it here).\ Being hosted on Github was a great advantage but what happens when I want to post from my smartphone or tablet? Cloning the whole project with some client and pushing it up again seemed stupid for just one file, the setup of which was pleasant because the filename should be something in the form of: YYYY-MM-DD-title.md and the beginning of the file: --- layout: post title: "The Title" summary: "" category: tags: --- So these days I started a little project called Jekyll for Android. It is a little simple client for android that allows you to publish a post on your Jekyll blog if it is hosted on Github! It it uses Github’s API and offers a Markdown Preview to check if your post looks ok (very Alpha feature) . If you find it useful fork it, make it better or just use it! You can find the project here! P.S.: I wrote this post with it so it looks like it works! :p]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Listen to people</title><link href="https://tsangiotis.com/listen-to-people/" rel="alternate" type="text/html" title="Listen to people" /><published>2013-08-05T00:00:00+00:00</published><updated>2013-08-05T00:00:00+00:00</updated><id>https://tsangiotis.com/listen-to-people</id><content type="html" xml:base="https://tsangiotis.com/listen-to-people/"><![CDATA[<p>Here is a fact:\</p>

<p>Nobody is perfect.</p>

<p>Here is another fact:<br />
Most people don’t listen.</p>

<p>These two facts create the problem. The solution though only involves solving the second one!</p>

<p>As you already know, we do a lot of stupid stuff everyday. But what if we could see ourselves from above so we can right our own wrongs in the future?</p>

<p>Yeah, thats not gonna happen. So we are left with feedback from others.</p>

<p>It is important to listen and especially people that care about you or people that just have nothing to lose if they comment you (that means they can even hate you). Honest feedback is one of the best things someone can gift you.</p>

<p>If you want to get better ask people for feedback on you, on your project or anything you like. Some of it might be crap but you may get some gold!</p>

<h2 id="listen-evaluate-get-better">Listen, evaluate, get better</h2>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><summary type="html"><![CDATA[Here is a fact:\ Nobody is perfect. Here is another fact: Most people don’t listen. These two facts create the problem. The solution though only involves solving the second one! As you already know, we do a lot of stupid stuff everyday. But what if we could see ourselves from above so we can right our own wrongs in the future? Yeah, thats not gonna happen. So we are left with feedback from others. It is important to listen and especially people that care about you or people that just have nothing to lose if they comment you (that means they can even hate you). Honest feedback is one of the best things someone can gift you. If you want to get better ask people for feedback on you, on your project or anything you like. Some of it might be crap but you may get some gold! Listen, evaluate, get better]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">A good breakfast to start your day with</title><link href="https://tsangiotis.com/a-good-breakfast-to-start-your-day-with/" rel="alternate" type="text/html" title="A good breakfast to start your day with" /><published>2013-07-05T00:00:00+00:00</published><updated>2013-07-05T00:00:00+00:00</updated><id>https://tsangiotis.com/a-good-breakfast-to-start-your-day-with</id><content type="html" xml:base="https://tsangiotis.com/a-good-breakfast-to-start-your-day-with/"><![CDATA[<p><em>Cooking advice.</em> I don’t think you saw that coming! :P\</p>

<p>Don’t worry. I will not propose some chef class stuff.</p>

<p>I saw the other day my brother doing something with the blender and he told me he is making a smoothie of high nutritional value.</p>

<p>And I said let’s try it!</p>

<p><img src="/assets/images/posts/a-good-breakfast-to-start-your-day-with/01-large_1.png" alt="" /></p>

<p>These are the ingredients:</p>

<ul>
  <li>a cup of yogurt</li>
  <li>a banana</li>
  <li>4 big spoons of <a href="http://en.wikipedia.org/wiki/Quaker_Oats_Company">Quaker</a></li>
  <li>a small spoon of honey</li>
  <li>3 dehydrated plums</li>
  <li>a small cup of water</li>
</ul>

<p>Put them in a blender and fill the rest with ice.</p>

<p><img src="/assets/images/posts/a-good-breakfast-to-start-your-day-with/02-large_2.gif" alt="" /></p>

<p>Do all this and enjoy! :)</p>

<p>\</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Short" /><summary type="html"><![CDATA[Cooking advice. I don’t think you saw that coming! :P\ Don’t worry. I will not propose some chef class stuff. I saw the other day my brother doing something with the blender and he told me he is making a smoothie of high nutritional value. And I said let’s try it! These are the ingredients: a cup of yogurt a banana 4 big spoons of Quaker a small spoon of honey 3 dehydrated plums a small cup of water Put them in a blender and fill the rest with ice. Do all this and enjoy! :) \]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Open Source is cool but don’t be an asshole</title><link href="https://tsangiotis.com/open-source-is-cool-but-dont-be-an-asshole/" rel="alternate" type="text/html" title="Open Source is cool but don’t be an asshole" /><published>2013-06-23T00:00:00+00:00</published><updated>2013-06-23T00:00:00+00:00</updated><id>https://tsangiotis.com/open-source-is-cool-but-dont-be-an-asshole</id><content type="html" xml:base="https://tsangiotis.com/open-source-is-cool-but-dont-be-an-asshole/"><![CDATA[<p><a href="https:///www.omgubuntu.co.uk/">OMGUbuntu!</a> had an <a href="https:///www.omgubuntu.co.uk/2013/06/installing-sublime-text-in-ubuntu">article</a> recently about the well known text editor <a href="https:///www.sublimetext.com/">Sublime Text 2</a>.</p>

<!--more-->

<p>This editor is fantastic! It can be customised in any way you imagine to fit your needs and taste. There is also a great community that builds plugins and you can build your own pretty easily. It also support some great features and you can see a demonstration at their <a href="https:///www.sublimetext.com/">homepage</a>. Please go! I can wait!</p>

<p><img src="/images/open-source-is-cool-but-dont-be-an-asshole/af1bdb6bd3e4a7bbeb2972889f08e3fd.gif" alt="" /></p>

<p>You saw it? Good!</p>

<p>You wanna know how much it costs? 70 bucks (almost 10% of an average notebook) and its not open source.</p>

<p>There is though an unlimited evaluation period with a notification window punching you every n-time you save something.</p>

<p>I don’t care for the price. It’s a high quality tool and the licence part is very straight forward. How much they charge is their choice and if you buy it it’s yours. You evaluate it, you buy it or you leave it if you don’t like the price or the product. It’s about what works for you. You can just continue using what you used before.</p>

<p><img src="/images/open-source-is-cool-but-dont-be-an-asshole/1-1.png" alt="" /></p>

<p>The <strong>not</strong> open source stuff makes things difficult for some as you see. The same guy continued with some crap that he does not infest his computer with proprietary software and that proprietary software is somehow <em>“fishy”</em>. He got almost equal Upvotes &amp; Downvotes in this comment so you see the opinion of the community on the subject. If you follow up with him on other comments in the same article he becomes pricky and eventually thrown out of the conversation.</p>

<p>The truth is that he is using closed source software on his computer if he ever views a YouTube video (Adobe Flash), listens to mp3 audio or even searches the web with any search engine (Google, DuckDuckGo).</p>

<p>Open Source is cool and I love it, but not everything is open source and if someone wants to make a living from his product he maybe can’t give it to you for free every time or give you the source. Why? Because he doesn’t want to! So simple!</p>

<p>It’s the same like saying I give you a screwdriver for 10 bucks with complete instructions how to replicate it and another one for 11 bucks that is more comfortable for you because of some features it carries and will help you to do your job better but it does not provide the replicating instructions. This is your choice to make.</p>

<h2 id="dont-be-an-asshole">Don’t be an asshole</h2>

<p>Make your choices and don’t get angry with the guy that made the tool for his choices.</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><category term="Open Source" /><summary type="html"><![CDATA[OMGUbuntu! had an article recently about the well known text editor Sublime Text 2.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Can we escape from NSA?</title><link href="https://tsangiotis.com/can-we-escape-from-nsa/" rel="alternate" type="text/html" title="Can we escape from NSA?" /><published>2013-06-11T00:00:00+00:00</published><updated>2013-06-11T00:00:00+00:00</updated><id>https://tsangiotis.com/can-we-escape-from-nsa</id><content type="html" xml:base="https://tsangiotis.com/can-we-escape-from-nsa/"><![CDATA[<p>If you follow the web for the last two weeks you probably know about <a href="https:///www.guardian.co.uk/world/2013/jun/06/us-tech-giants-nsa-data">that little (ugly) leaked PowerPoint</a> that explains a NSA program called PRISM.</p>

<p>It was a guy named Edward Snowden that found out and left a job that provided a great income at the NSA because he didn’t wanted to be part of this.</p>

<!--more-->

<p>Here is an interview at the Guardian.</p>

<p>Whether we believe his motives or not, PRISM exists more than 5 years now.</p>

<p><img src="/images/can-we-escape-from-nsa/1-2.png" alt="" /></p>

<p>You can see that most of the streams we use today, even our operating systems and our email providers feed data to NSA.</p>

<p>If someone gets tagged even by mistake, the NSA can search to his past without a judge order or any control.</p>

<p>If you want to learn more about PRISM just search the web.</p>

<p>My concern was If I can protect my self. My first thought was to leave Social Media completely. After that, dump google and start using <a href="https://duckduckgo.com/">DuckDuckGo</a> for my online searches, dump Gmail and find a service that PRISM has no effect on and dump my Mac OS X for my <a href="https:///ubuntu.com/">Ubuntu</a> partition and even switch that to <a href="https:///www.debian.org/">Debian</a>.</p>

<p>VPN and tunnelling is not very efficient so I wouldn’t do that:P</p>

<p>But even if I do all these, I am not safe. Because not everyone I communicate does that and the servers we use for all these get tracked (HTTPS is only a partial measure) and while services get added to the PRISM trunk the internet becomes smaller.</p>

<p>Most of us got nothing to hide. But we don’t want to get checked every time we send a mail.</p>

<p><img src="/images/can-we-escape-from-nsa/2-1.png" alt="" /></p>

<p>Should we get used to it?</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><category term="Privacy" /><summary type="html"><![CDATA[If you follow the web for the last two weeks you probably know about that little (ugly) leaked PowerPoint that explains a NSA program called PRISM. It was a guy named Edward Snowden that found out and left a job that provided a great income at the NSA because he didn’t wanted to be part of this.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Universal Raspberry Pi Remote</title><link href="https://tsangiotis.com/universal-raspberry-pi-remote/" rel="alternate" type="text/html" title="Universal Raspberry Pi Remote" /><published>2013-06-06T00:00:00+00:00</published><updated>2013-06-06T00:00:00+00:00</updated><id>https://tsangiotis.com/universal-raspberry-pi-remote</id><content type="html" xml:base="https://tsangiotis.com/universal-raspberry-pi-remote/"><![CDATA[<p>I am getting mad of the remote controller in the house.</p>

<p>Actually I use three:</p>

<ul>
  <li>The TV remote</li>
  <li>The Radio/iPod/CD Player remote</li>
  <li>The Air Condition remote</li>
</ul>

<p>Some time ago I fell on <a href="https:///randomtutor.blogspot.gr/2013/01/web-based-ir-remote-on-raspberry-pi.html">this post</a>. It is an IR receiver &amp; emitter circuit attached to a <a href="https:///raspberrypi.org/">Raspberry Pi</a>. I had some spare time so I decided to build it!</p>

<!--more-->

<p>Circuitry was fairly easy.</p>

<p>Parts I used:</p>

<table>
  <tbody>
    <tr>
      <td>Infrared LED</td>
      <td>: Had a spare one but you can use any from an old remote</td>
    </tr>
    <tr>
      <td>IR Receiver</td>
      <td>: I used a TSOP382. You can use any <em>BUT</em> check the datasheet!</td>
    </tr>
    <tr>
      <td>NPN Transistor</td>
      <td>: I don’t know the part code</td>
    </tr>
    <tr>
      <td>1.5Ω Resistor</td>
      <td>: It just has to be really low</td>
    </tr>
    <tr>
      <td>220Ω Resistor</td>
      <td>: Nothing to say here</td>
    </tr>
  </tbody>
</table>

<p>You can see the connections clearly here:</p>

<p>After the first assembly and testing I made it smaller using a strip board:</p>

<p>And this is what we end up with:</p>

<p><img src="/images/universal-raspberry-pi-remote/1-3.png" alt="" /></p>

<h2 id="lirc">LIRC</h2>

<p><a href="https://www.lirc.org/">LIRC</a> stands for Linux Infrared Remote Control. And does exactly what it says.</p>

<p>LIRC is now included in <a href="https://www.raspbian.org/">Raspbian’s</a> official repositories for Raspberry Pi and you can install it with:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo apt-get install lirc

</code></pre></div></div>

<p>Append this on your <code class="language-plaintext highlighter-rouge">/etc/modules</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>lirc_dev
lirc_rpi gpio_in_pin=23 gpio_out_pin=22
</code></pre></div></div>

<p>Change your <code class="language-plaintext highlighter-rouge">/etc/lirc/hardware.conf</code> to:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>########################################################
# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS="--uinput"

# Don't start lircmd even if there seems to be a good config file
# START_LIRCMD=false

# Don't start irexec, even if a good config file seems to exist.
# START_IREXEC=false

# Try to load appropriate kernel modules
LOAD_MODULES=true

# Run "lircd --driver=help" for a list of supported drivers.
DRIVER="default"
# usually /dev/lirc0 is the correct setting for systems using udev
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"

# Default configuration files for your hardware if any
LIRCD_CONF=""
LIRCMD_CONF=""
########################################################

</code></pre></div></div>

<p>And now restart your LIRC daemon:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo /etc/init.d/lirc stop
sudo /etc/init.d/lirc start

</code></pre></div></div>

<h2 id="transceiver">Transceiver</h2>

<p>Now that we are all set up lets check if our IR transceiver works</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># Stop the lircd so /dev/lirc0 is not in use
sudo /etc/init.d/lirc stop
# Get RAW data from the transceiver
mode2 -d /dev/lirc0

</code></pre></div></div>

<p>When you press some buttons on a remote control you should get something like:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>space 12300
pulse 590
space 19395
pulse 540
space 7024
pulse 495
space 402351
pulse 560
space 7085
pulse 480
space 29043

</code></pre></div></div>

<p>If not then check your wiring. It is possible that you crossed the wires on the Pi.</p>

<h2 id="ir-led">IR LED</h2>

<p>It’s really easy to create add a new remote on LIRC.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># Stop lircd so /dev/lirc0 is not in use
sudo /etc/init.d/lirc stop

# Create a new remote control configuration file (using /dev/lirc0) and save the output to ~/lircd.conf
irrecord -d /dev/lirc0 ~/lircd.conf

# Edit ~/lircd.conf and add edit the name of the controlled device
nano ~/lircd.conf

# Make a backup of the original lircd.conf file
sudo mv /etc/lirc/lircd.conf /etc/lirc/lircd_original.conf

# Copy over your new configuration file
sudo cp ~/lircd.conf /etc/lirc/lircd.conf

# Start up lirc again
sudo /etc/init.d/lirc start

</code></pre></div></div>

<p>Do not forget to check <code class="language-plaintext highlighter-rouge">irrecord --list-namespace</code> for the valid key names. If something doesn’t meet your needs just put it on a <code class="language-plaintext highlighter-rouge">KEY_</code> value that you will not use for this remote.</p>

<p>Now let’s test the remote:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># List all of the commands that LIRC knows for 'samsung_tv'
irsend LIST samsung_tv ""

# Send the KEY_POWER command once
irsend SEND_ONCE samsung_tv KEY_POWER

# Send the KEY_VOLUMEDOWN command once
irsend SEND_ONCE samsung_tv KEY_VOLUMEDOWN

# Send the KEY_VOLUMEDOWN command 10 times lowering the volume for 10 units at once
irsend --count=10 samsung_tv KEY_VOLUMEDOWN

</code></pre></div></div>

<p>Here is a video where I change channels from command line:</p>

<p>You can add more remotes just by appending a new lircd.conf at the previous one.</p>

<p>For the LIRC configuration I followed <a href="https:///alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/">this guide</a>.</p>

<p>I also made an Android application using the web interface provided <a href="https://github.com/slimjim777/web-irsend">here</a> but the code needs a lot of polishing so I can’t share it yet.</p>

<p><img src="/images/universal-raspberry-pi-remote/2-2.png" alt="" /></p>

<p>It was cool for an evening project :)</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Guides" /><category term="Projects" /><category term="Automation" /><category term="LIRC" /><category term="Raspberry Pi" /><category term="great" /><summary type="html"><![CDATA[The guide to your very own universal remote (not only for TVs).]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Wake up early</title><link href="https://tsangiotis.com/wake-up-early/" rel="alternate" type="text/html" title="Wake up early" /><published>2013-05-28T00:00:00+00:00</published><updated>2013-05-28T00:00:00+00:00</updated><id>https://tsangiotis.com/wake-up-early</id><content type="html" xml:base="https://tsangiotis.com/wake-up-early/"><![CDATA[<p>If you know me personally you know that I am a guy that wakes up early. Most of my friends criticise me about it but it works for me.\</p>

<p>Today as I was cleaning my <a href="http://tsagi.me/getpocket.com/">Pocket</a> list a bit I found <a href="http://www.businessinsider.com/how-to-wake-up-earlier-2013-1">this article</a>.</p>

<p>There are tons of articles like that across the web. But why we must wake up early?</p>

<p>Not only does the early bird get the worm, he’s generally happier and has a higher overall satisfaction with his life.</p>

<p>“We don’t know why this is, but there are a few potential explanations. Evening people may be more prone to social jet lag; this means that their biological clock is out of sync with the social clock,” Renee Biss, a researcher wrote in a study conducted by the University of Toronto.</p>

<p>“Society’s expectations are far more organised around a morning-type person’s schedule.”<br />
Robert Oexman, director of the Sleep to Live Institute, told us that “lack of sleep can manifest itself in erratic behaviour, short tempers, and bad decision-making.”</p>

<p>Sleep-deprived persons also have difficulty remembering details, and don’t deal as well in high-pressured situations—such as meetings or new business pitches.<br />
And it’s getting worse nowadays because of technology usage. Young adults in their 20s are experiencing earlier signs of ageing attributed to sleep loss.<br />
So if you’re not a born early riser how do you acquire good sleep habits?… read more</p>

<p>I also tend to agree that <a href="http://swizec.com/blog/why-programmers-work-at-night/swizec/3198" title="Link: http://swizec.com/blog/why-programmers-work-at-night/swizec/3198">it is easier for programmers (and many others) to work at night</a>. The distractions are limited(no cars on the street, no internet friends to chat with) and the night seems to help you to focus at one thing at the time.</p>

<p>How to perverse balance though?</p>

<h3 id="1-quality-over-quantity">1. quality over quantity</h3>

<p>Don’t waste your sleep if you don’t have to and don’t invent things to do at 3am. This is <strong><em>not</em></strong> the time to pick up your new project.</p>

<p>I’ve fallen in this trap many times an it just wastes your time. Be sure to have a personal notebook and a pen all the times with you. If you happen to have an idea in the middle of the night just pick up your notebook and write it down briefly. If it was really good you will remember it with a quick look in the morning.</p>

<h3 id="2-have-a-routine">2. have a routine</h3>

<p>It is easier to wake up in the morning if you know you have to do something.</p>

<p>Many people work out in the morning and most of them run. This wakes your body and your metabolism. This also gives you the opportunity to see the sunrise which you don’t regret most of the times.</p>

<h3 id="3-dont-hit-the-snooze-button-its-a-trap">3. don’t hit the snooze button! it’s a trap!</h3>

<p>It happens to me all the time. I hit the snooze button at 7 and end up waking up at 8.30 after many hits. The alarm clock exists to wake you up at the time you set it to wake you up. Not six snoozes later.</p>

<p>The problem is that you must not hit the snooze button because it becomes a habit. And you don’t want this filthy habit to make you miss a class, that big meeting or whatever you have to do.</p>

<h3 id="4-feeling-sleepy-go-home">4. feeling sleepy? go home</h3>

<p>This probably goes after quality over quantity. If there is no reason for you to stay out until the morning then don’t. The night seems not to go as you expected it to and you end up drinking with a sleepy face waiting to go home.</p>

<p>When that happens <strong>get out</strong>! You will be very happy with your decision when you go through that door and you know it ;)</p>

<h3 id="5-set-a-limit">5. set a limit</h3>

<p>I have a rule. If it is 2am I ask my self if there is an absolute reason to stay awake and do some work. If not, I go to sleep.</p>

<p>Night is tempting and important for many of us but because morning is important too, don’t waste your night and sleep :)</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Opinion" /><summary type="html"><![CDATA[If you know me personally you know that I am a guy that wakes up early. Most of my friends criticise me about it but it works for me.\ Today as I was cleaning my Pocket list a bit I found this article. There are tons of articles like that across the web. But why we must wake up early? Not only does the early bird get the worm, he’s generally happier and has a higher overall satisfaction with his life. “We don’t know why this is, but there are a few potential explanations. Evening people may be more prone to social jet lag; this means that their biological clock is out of sync with the social clock,” Renee Biss, a researcher wrote in a study conducted by the University of Toronto. “Society’s expectations are far more organised around a morning-type person’s schedule.” Robert Oexman, director of the Sleep to Live Institute, told us that “lack of sleep can manifest itself in erratic behaviour, short tempers, and bad decision-making.” Sleep-deprived persons also have difficulty remembering details, and don’t deal as well in high-pressured situations—such as meetings or new business pitches. And it’s getting worse nowadays because of technology usage. Young adults in their 20s are experiencing earlier signs of ageing attributed to sleep loss. So if you’re not a born early riser how do you acquire good sleep habits?… read more I also tend to agree that it is easier for programmers (and many others) to work at night. The distractions are limited(no cars on the street, no internet friends to chat with) and the night seems to help you to focus at one thing at the time. How to perverse balance though? 1. quality over quantity Don’t waste your sleep if you don’t have to and don’t invent things to do at 3am. This is not the time to pick up your new project. I’ve fallen in this trap many times an it just wastes your time. Be sure to have a personal notebook and a pen all the times with you. If you happen to have an idea in the middle of the night just pick up your notebook and write it down briefly. If it was really good you will remember it with a quick look in the morning. 2. have a routine It is easier to wake up in the morning if you know you have to do something. Many people work out in the morning and most of them run. This wakes your body and your metabolism. This also gives you the opportunity to see the sunrise which you don’t regret most of the times. 3. don’t hit the snooze button! it’s a trap! It happens to me all the time. I hit the snooze button at 7 and end up waking up at 8.30 after many hits. The alarm clock exists to wake you up at the time you set it to wake you up. Not six snoozes later. The problem is that you must not hit the snooze button because it becomes a habit. And you don’t want this filthy habit to make you miss a class, that big meeting or whatever you have to do. 4. feeling sleepy? go home This probably goes after quality over quantity. If there is no reason for you to stay out until the morning then don’t. The night seems not to go as you expected it to and you end up drinking with a sleepy face waiting to go home. When that happens get out! You will be very happy with your decision when you go through that door and you know it ;) 5. set a limit I have a rule. If it is 2am I ask my self if there is an absolute reason to stay awake and do some work. If not, I go to sleep. Night is tempting and important for many of us but because morning is important too, don’t waste your night and sleep :)]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">I Became a GyShiDo-San! Become one too!</title><link href="https://tsangiotis.com/i-became-a-gyshido-san-become-one-too/" rel="alternate" type="text/html" title="I Became a GyShiDo-San! Become one too!" /><published>2013-05-24T00:00:00+00:00</published><updated>2013-05-24T00:00:00+00:00</updated><id>https://tsangiotis.com/i-became-a-gyshido-san-become-one-too</id><content type="html" xml:base="https://tsangiotis.com/i-became-a-gyshido-san-become-one-too/"><![CDATA[<p><img src="/assets/images/posts/i-became-a-gyshido-san-become-one-too/01-large_gyshido.png" alt="" /></p>

<h2 id="gyshidois-the-art-of-getting-your-shit-done"><a href="http://gyshido.com/">GyShiDo</a> is The Art of Getting Your Shit Done!</h2>

<hr />

<p>And it’s really <strong><em>simple</em></strong>!</p>

<p>Just follow this…</p>

<h1 id="code-of-honor">…Code of Honor</h1>

<hr />

<h2 id="1-relentless-focus">1. Relentless Focus.</h2>

<p>Focus on the 10% of your activities which drive most of the value. Relentlessly.</p>

<h2 id="2-boring-consistency">2. Boring Consistency.</h2>

<p>Do the right things over and over again. Consistency forms habits. Habits make hard things effortless.</p>

<h2 id="3-no-bullshit">3. No Bullshit.</h2>

<p>Don’t bullshit yourself or others. Apply brutal honesty and transparency to everything you do.</p>

<h2 id="4-no-meetings">4. No Meetings.</h2>

<p>Meetings come in only two forms: Standing or social. If it’s social, it’s over breakfast, lunch, coffee, dinner or drinks. If not - don’t sit down.</p>

<h2 id="5-follow-up">5. Follow Up.</h2>

<p>Don’t let others wait for your part of the job. Ever.</p>

<h2 id="6-dont-be-an-asshole">6. Don’t be an Asshole.</h2>

<p>Now if you are ready become a <a href="http://gyshido.com/join">GyShiDo-San</a>!</p>

<p>See you at the other side…</p>

<blockquote>
  <p><strong><em>Note:</em></strong> I learned about GyShiDo at this amazing thing I follow called<a href="http://theheretic.me/">The Heretic</a>. The author is a guy named <a href="http://finette.com/">Pascal Finette</a> who works at Mozilla as Director at the Office of the Chair. Be sure you <a href="http://theheretic.me/#newsletter">follow</a> it if you are interested in entrepreneurship and/or like the content!;)</p>
</blockquote>]]></content><author><name>Tasos Sangiotis</name></author><category term="Short" /><summary type="html"><![CDATA[GyShiDo is The Art of Getting Your Shit Done! And it’s really simple! Just follow this… …Code of Honor 1. Relentless Focus. Focus on the 10% of your activities which drive most of the value. Relentlessly. 2. Boring Consistency. Do the right things over and over again. Consistency forms habits. Habits make hard things effortless. 3. No Bullshit. Don’t bullshit yourself or others. Apply brutal honesty and transparency to everything you do. 4. No Meetings. Meetings come in only two forms: Standing or social. If it’s social, it’s over breakfast, lunch, coffee, dinner or drinks. If not - don’t sit down. 5. Follow Up. Don’t let others wait for your part of the job. Ever. 6. Don’t be an Asshole. Now if you are ready become a GyShiDo-San! See you at the other side… Note: I learned about GyShiDo at this amazing thing I follow calledThe Heretic. The author is a guy named Pascal Finette who works at Mozilla as Director at the Office of the Chair. Be sure you follow it if you are interested in entrepreneurship and/or like the content!;)]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">ELOT-743 translator</title><link href="https://tsangiotis.com/elot-743-translator/" rel="alternate" type="text/html" title="ELOT-743 translator" /><published>2013-05-18T07:00:00+00:00</published><updated>2013-05-18T07:00:00+00:00</updated><id>https://tsangiotis.com/elot-743-translator</id><content type="html" xml:base="https://tsangiotis.com/elot-743-translator/"><![CDATA[<p>I had a task to translate a big Greek address book in English.</p>

<p>Due to the fact that Greek Language is full of special characters, a problem occurred when passports where to be created. There should be a fixed way to translate names from Greek to English.
So the ELOT-743 standard was created to solve the confusion.
<!--more--></p>

<p><strong><em>Here you see most of it:</em></strong></p>

<table>
  <thead>
    <tr>
      <th>Greek</th>
      <th>English</th>
      <th>Greek</th>
      <th>English</th>
      <th>Greek</th>
      <th>English</th>
      <th>Greek</th>
      <th>English</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>α</td>
      <td>a</td>
      <td>Ή</td>
      <td>I</td>
      <td>Ξ</td>
      <td>X</td>
      <td>Ύ</td>
      <td>Y</td>
    </tr>
    <tr>
      <td>ά</td>
      <td>a</td>
      <td>θ</td>
      <td>th</td>
      <td>ο</td>
      <td>o</td>
      <td>Ϋ</td>
      <td>Y</td>
    </tr>
    <tr>
      <td>Α</td>
      <td>A</td>
      <td>Θ</td>
      <td>TH</td>
      <td>ό</td>
      <td>o</td>
      <td>φ</td>
      <td>f</td>
    </tr>
    <tr>
      <td>Ά</td>
      <td>A</td>
      <td>ι</td>
      <td>i</td>
      <td>Ο</td>
      <td>O</td>
      <td>Φ</td>
      <td>F</td>
    </tr>
    <tr>
      <td>β</td>
      <td>v</td>
      <td>ί</td>
      <td>i</td>
      <td>Ό</td>
      <td>O</td>
      <td>χ</td>
      <td>ch</td>
    </tr>
    <tr>
      <td>Β</td>
      <td>V</td>
      <td>ϊ</td>
      <td>i</td>
      <td>π</td>
      <td>p</td>
      <td>Χ</td>
      <td>CH</td>
    </tr>
    <tr>
      <td>γ</td>
      <td>γ</td>
      <td>ΐ</td>
      <td>i</td>
      <td>Π</td>
      <td>P</td>
      <td>ψ</td>
      <td>ps</td>
    </tr>
    <tr>
      <td>Γ</td>
      <td>G</td>
      <td>Ι</td>
      <td>I</td>
      <td>ρ</td>
      <td>r</td>
      <td>Ψ</td>
      <td>PS</td>
    </tr>
    <tr>
      <td>δ</td>
      <td>d</td>
      <td>Ί</td>
      <td>I</td>
      <td>Ρ</td>
      <td>R</td>
      <td>ω</td>
      <td>o</td>
    </tr>
    <tr>
      <td>Δ</td>
      <td>D</td>
      <td>Ϊ</td>
      <td>I</td>
      <td>σ</td>
      <td>s</td>
      <td>ώ</td>
      <td>o</td>
    </tr>
    <tr>
      <td>ε</td>
      <td>e</td>
      <td>κ</td>
      <td>k</td>
      <td>ς</td>
      <td>s</td>
      <td>Ω</td>
      <td>O</td>
    </tr>
    <tr>
      <td>έ</td>
      <td>e</td>
      <td>Κ</td>
      <td>K</td>
      <td>Σ</td>
      <td>S</td>
      <td>Ώ</td>
      <td>O</td>
    </tr>
    <tr>
      <td>Ε</td>
      <td>E</td>
      <td>λ</td>
      <td>l</td>
      <td>τ</td>
      <td>t</td>
      <td>ΟΥ</td>
      <td>OU</td>
    </tr>
    <tr>
      <td>Έ</td>
      <td>E</td>
      <td>Λ</td>
      <td>L</td>
      <td>Τ</td>
      <td>T</td>
      <td>ου</td>
      <td>ou</td>
    </tr>
    <tr>
      <td>ζ</td>
      <td>z</td>
      <td>μ</td>
      <td>m</td>
      <td>υ</td>
      <td>y</td>
      <td>ού</td>
      <td>ou</td>
    </tr>
    <tr>
      <td>Ζ</td>
      <td>Z</td>
      <td>Μ</td>
      <td>M</td>
      <td>ύ</td>
      <td>y</td>
      <td>Ού</td>
      <td>Ou</td>
    </tr>
    <tr>
      <td>η</td>
      <td>i</td>
      <td>ν</td>
      <td>n</td>
      <td>ϋ</td>
      <td>y</td>
      <td>γγ</td>
      <td>ng</td>
    </tr>
    <tr>
      <td>ή</td>
      <td>i</td>
      <td>Ν</td>
      <td>N</td>
      <td>ΰ</td>
      <td>y</td>
      <td>ΓΓ</td>
      <td>NG</td>
    </tr>
    <tr>
      <td>Η</td>
      <td>I</td>
      <td>ξ</td>
      <td>x</td>
      <td>Υ</td>
      <td>Y</td>
      <td>Γγ</td>
      <td>Ng</td>
    </tr>
  </tbody>
</table>

<p>So to save my self from the abyss and to avoid the government’s site that had the capability to translate only small text, I wrote a python script myself.</p>

<p>Here is the <strong><em>dictionary</em></strong> to translate the strings:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># -*- coding= utf8 -*-
</span><span class="sh">"""</span><span class="s">Main source https://www.sete.gr/files/Media/Egkyklioi/040707Latin-Greek.pdf
</span><span class="sh">"""</span>
<span class="nb">dict</span><span class="o">=</span><span class="p">{</span>
<span class="sh">"</span><span class="s">α</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">a</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ά</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">a</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Α</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">A</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Ά</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">A</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">β</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">v</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Β</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">V</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">γ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">γ</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Γ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">G</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">δ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">d</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Δ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">D</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ε</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">e</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">έ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">e</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Ε</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">E</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Έ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">E</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ζ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">z</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Ζ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">Z</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">η</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">i</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ή</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">i</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Η</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">I</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Ή</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">I</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">θ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">th</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Θ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">TH</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ι</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">i</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ί</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">i</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ϊ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">i</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ΐ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">i</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Ι</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">I</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Ί</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">I</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Ϊ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">I</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">κ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">k</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Κ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">K</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">λ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">l</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Λ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">L</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">μ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">m</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Μ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">M</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ν</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">n</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Ν</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">N</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ξ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">x</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Ξ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">X</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ο</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">o</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ό</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">o</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Ο</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">O</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Ό</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">O</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">π</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">p</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Π</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">P</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ρ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">r</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Ρ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">R</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">σ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">s</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ς</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">s</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Σ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">S</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">τ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">t</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Τ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">T</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">υ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">y</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ύ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">y</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ϋ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">y</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ΰ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">y</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Υ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">Y</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Ύ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">Y</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Ϋ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">Y</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">φ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">f</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Φ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">F</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">χ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">ch</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Χ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">CH</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ψ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">ps</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Ψ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">PS</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ω</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">o</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ώ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">o</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Ω</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">O</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Ώ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">O</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ΟΥ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">OU</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ου</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">ou</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ού</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">ou</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Ού</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">Ou</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">γγ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">ng</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ΓΓ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">NG</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">Γγ</span><span class="sh">"</span><span class="p">:</span><span class="sh">"</span><span class="s">Ng</span><span class="sh">"</span><span class="p">,</span>
<span class="p">}</span>

</code></pre></div></div>

<p>And here is the actual <strong><em>script</em></strong>:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">#!/usr/bin/python
</span>
<span class="c1"># -*- coding= utf8 -*-
</span><span class="kn">import</span> <span class="n">sys</span><span class="p">,</span> <span class="n">getopt</span>
<span class="kn">from</span> <span class="n">string</span> <span class="kn">import</span> <span class="n">maketrans</span>
<span class="kn">from</span> <span class="n">elot743</span> <span class="kn">import</span> <span class="o">*</span>

<span class="k">def</span> <span class="nf">replace_all</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">dic</span><span class="p">):</span>
     <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">dic</span><span class="p">.</span><span class="nf">iteritems</span><span class="p">():</span>
              <span class="k">if</span> <span class="n">i</span> <span class="o">!=</span> <span class="n">j</span><span class="p">:</span>
                  <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="p">.</span><span class="nf">replace</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">)</span>
     <span class="n">text</span><span class="p">.</span><span class="nf">replace</span><span class="p">(</span><span class="sh">'</span><span class="s">,</span><span class="sh">'</span> <span class="p">,</span> <span class="sh">'</span><span class="se">\n</span><span class="sh">'</span><span class="p">)</span>
     <span class="k">return</span> <span class="n">text</span>

<span class="k">def</span> <span class="nf">readFile</span><span class="p">(</span><span class="n">infile</span><span class="p">):</span>
     <span class="k">print</span> <span class="sh">"</span><span class="s">reading file</span><span class="sh">"</span><span class="p">,</span><span class="n">infile</span><span class="p">,</span><span class="sh">"</span><span class="s">...</span><span class="se">\n</span><span class="sh">"</span>
     <span class="n">i</span> <span class="o">=</span> <span class="nf">open</span><span class="p">(</span><span class="n">infile</span><span class="p">,</span> <span class="sh">'</span><span class="s">r</span><span class="sh">'</span><span class="p">)</span>
     <span class="n">array</span><span class="o">=</span><span class="p">[]</span>
     <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">i</span><span class="p">:</span>
          <span class="n">array</span><span class="p">.</span><span class="nf">append</span><span class="p">(</span><span class="nf">replace_all</span><span class="p">(</span><span class="n">line</span><span class="p">.</span><span class="nf">rstrip</span><span class="p">(</span><span class="sh">'</span><span class="se">\n</span><span class="sh">'</span><span class="p">),</span><span class="nb">dict</span><span class="p">))</span>

     <span class="n">i</span><span class="p">.</span><span class="nf">close</span><span class="p">()</span>
     <span class="k">return</span> <span class="n">array</span>
     <span class="k">print</span> <span class="sh">"</span><span class="se">\n</span><span class="s">finished reading file!</span><span class="se">\n</span><span class="sh">"</span>

<span class="k">def</span> <span class="nf">writeFile</span><span class="p">(</span><span class="n">outfile</span><span class="p">,</span> <span class="n">array</span><span class="p">):</span>
     <span class="k">print</span> <span class="sh">"</span><span class="s">writing to file</span><span class="sh">"</span><span class="p">,</span><span class="n">outfile</span><span class="p">,</span><span class="sh">"</span><span class="s">...</span><span class="se">\n</span><span class="sh">"</span>
     <span class="k">print</span> <span class="n">array</span>
     <span class="n">o</span> <span class="o">=</span> <span class="nf">open</span><span class="p">(</span><span class="n">outfile</span><span class="p">,</span> <span class="sh">'</span><span class="s">w</span><span class="sh">'</span><span class="p">)</span>
     <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">array</span><span class="p">:</span>
           <span class="n">o</span><span class="p">.</span><span class="nf">write</span><span class="p">(</span><span class="sh">"</span><span class="s">%s</span><span class="se">\n</span><span class="sh">"</span> <span class="o">%</span> <span class="n">item</span><span class="p">)</span>
      <span class="n">o</span><span class="p">.</span><span class="nf">close</span><span class="p">()</span>
     <span class="k">print</span> <span class="sh">"</span><span class="se">\n</span><span class="s">finished writing to file!</span><span class="se">\n</span><span class="sh">"</span>

<span class="k">def</span> <span class="nf">main</span><span class="p">(</span><span class="n">argv</span><span class="p">):</span>
   <span class="n">inputfile</span> <span class="o">=</span> <span class="sh">''</span>
   <span class="n">outputfile</span> <span class="o">=</span> <span class="sh">''</span>
   <span class="k">try</span><span class="p">:</span>
      <span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">getopt</span><span class="p">.</span><span class="nf">getopt</span><span class="p">(</span><span class="n">argv</span><span class="p">,</span><span class="sh">"</span><span class="s">hi:o:</span><span class="sh">"</span><span class="p">,[</span><span class="sh">"</span><span class="s">ifile=</span><span class="sh">"</span><span class="p">,</span><span class="sh">"</span><span class="s">ofile=</span><span class="sh">"</span><span class="p">])</span>
   <span class="k">except</span> <span class="n">getopt</span><span class="p">.</span><span class="n">GetoptError</span><span class="p">:</span>
      <span class="k">print</span> <span class="sh">'</span><span class="s">names.py -i  -o </span><span class="sh">'</span>
      <span class="n">sys</span><span class="p">.</span><span class="nf">exit</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
   <span class="k">for</span> <span class="n">opt</span><span class="p">,</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">opts</span><span class="p">:</span>
      <span class="k">if</span> <span class="n">opt</span> <span class="o">==</span> <span class="sh">'</span><span class="s">-h</span><span class="sh">'</span><span class="p">:</span>
         <span class="k">print</span> <span class="sh">'</span><span class="s">names.py -i  -o </span><span class="sh">'</span>
         <span class="n">sys</span><span class="p">.</span><span class="nf">exit</span><span class="p">()</span>
      <span class="k">elif</span> <span class="n">opt</span> <span class="ow">in</span> <span class="p">(</span><span class="sh">"</span><span class="s">-i</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">--ifile</span><span class="sh">"</span><span class="p">):</span>
         <span class="n">inputfile</span> <span class="o">=</span> <span class="n">arg</span>
      <span class="k">elif</span> <span class="n">opt</span> <span class="ow">in</span> <span class="p">(</span><span class="sh">"</span><span class="s">-o</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">--ofile</span><span class="sh">"</span><span class="p">):</span>
         <span class="n">outputfile</span> <span class="o">=</span> <span class="n">arg</span>
   <span class="k">if</span> <span class="n">inputfile</span> <span class="o">==</span> <span class="sh">''</span><span class="p">:</span>
      <span class="n">inputfile</span> <span class="o">=</span> <span class="nf">raw_input</span><span class="p">(</span><span class="sh">'</span><span class="s">File where the names to be translated exist (ex. names.txt) : </span><span class="sh">'</span><span class="p">)</span>
   <span class="k">if</span> <span class="n">outputfile</span> <span class="o">==</span><span class="sh">''</span><span class="p">:</span>
      <span class="n">outputfile</span> <span class="o">=</span> <span class="nf">raw_input</span><span class="p">(</span><span class="sh">'</span><span class="s">File where the translated names will be written (ex. trnames.txt) : </span><span class="sh">'</span><span class="p">)</span>
   <span class="k">print</span> <span class="sh">'</span><span class="s">Input file is </span><span class="sh">"'</span><span class="p">,</span> <span class="n">inputfile</span>
   <span class="k">print</span> <span class="sh">'</span><span class="s">Output file is </span><span class="sh">"'</span><span class="p">,</span> <span class="n">outputfile</span>

   <span class="n">transArray</span><span class="o">=</span><span class="p">[]</span>

   <span class="n">transArray</span><span class="o">=</span><span class="nf">readFile</span><span class="p">(</span><span class="n">inputfile</span><span class="p">)</span>
   <span class="nf">writeFile</span><span class="p">(</span><span class="n">outputfile</span><span class="p">,</span><span class="n">transArray</span><span class="p">)</span>
   <span class="k">print</span> <span class="sh">'</span><span class="s">File is translated!</span><span class="sh">'</span>

<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="sh">"</span><span class="s">__main__</span><span class="sh">"</span><span class="p">:</span>
   <span class="nf">main</span><span class="p">(</span><span class="n">sys</span><span class="p">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">:])</span>

</code></pre></div></div>

<p>To run the script, you can call it from <strong><em>command line</em></strong> by typing:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>python names.py -i  -o

</code></pre></div></div>

<p>Where <code class="language-plaintext highlighter-rouge">the text file where the names to be translated exist and</code> the text file where the translated names will be written.</p>

<p><strong>-or-</strong></p>

<p>You can run it without the arguments and it will prompt you for the file names.</p>

<p>I believe that it will not be helpful to many but it could be a relatively good example of using dictionaries in Python;)</p>

<p>The project code can be found <a href="https://github.com/tsagi/elot-743_translator">here</a> on GitHub. Feel free to use it.</p>

<p>Feel free to leave your comment below!</p>]]></content><author><name>Tasos Sangiotis</name></author><category term="Projects" /><category term="Encodings" /><category term="Greek" /><category term="Python" /><summary type="html"><![CDATA[I had a task to translate a big Greek address book in English. Due to the fact that Greek Language is full of special characters, a problem occurred when passports where to be created. There should be a fixed way to translate names from Greek to English. So the ELOT-743 standard was created to solve the confusion.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://tsangiotis.com/assets/images/me.jpg" /><media:content medium="image" url="https://tsangiotis.com/assets/images/me.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>