<?xml version="1.0" encoding="utf-8"?><!-- generator="b2evolution/7.2.2-stable" -->
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Area51, here be raliens</title>
		<link>https://railean.net/index.php</link>
		<atom:link rel="self" type="application/rss+xml" href="https://railean.net/index.php?tempskin=_rss2" />
		<description>Alex Railean, personal web-site. Poems, essays, thoughts, photographs, reviews, short stories</description>
		<language>en-EU</language>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<admin:generatorAgent rdf:resource="http://b2evolution.net/?v=7.2.2-stable"/>
		<ttl>60</ttl>
				<item>
			<title>VDA 5050 payload visualizer</title>
			<link>https://railean.net/index.php/vda-5050-payload-visualizer-debugger</link>
			<pubDate>Wed, 31 Mar 2021 20:30:00 +0000</pubDate>			<dc:creator>gr8dude</dc:creator>
			<category domain="main">Technology / programming</category>
<category domain="alt">Usability</category>			<guid isPermaLink="false">446@https://railean.net/</guid>
						<description>&lt;p&gt;VDA 5050 is an open protocol devised by the German association of car manufacturers (Verband der Automobilindustrie), it is meant to become the common language that AGVs (autonomous guided vehicles) use to exchange information with a controller. To get an idea of what it looks like - imagine a fleet of robots moving pieces and materials from one spot to another on a factory floor. A controlling server sends instructions, telling each robot where to go, which checkpoints to drive through, what actions to perform and with what settings (e.g. &amp;quot;pick up this specific box and bring it over there, place it on the second shelf&amp;quot;).&lt;/p&gt;
&lt;p&gt;VDA 5050 uses MQTT to transmit JSON payloads to several purpose-specific topics. In the screenshot you can see several windows, each displaying the  data arriving to these topics.&lt;/p&gt;
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;https://railean.net/media/blogs/a/quick-uploads/vda-5050-payload-visualizer-debugger/vda5050-raw-payloads.jpg?mtime=1617211152&quot; title=&quot;VDA 5050 raw JSON payloads&quot; rel=&quot;lightbox[p446]&quot; id=&quot;link_21&quot;&gt;&lt;img alt=&quot;Screenshot displaying raw JSON data&quot; src=&quot;https://railean.net/media/blogs/a/quick-uploads/vda-5050-payload-visualizer-debugger/.evocache/vda5050-raw-payloads.jpg/fit-400x320.jpg?mtime=1617211152&quot; width=&quot;400&quot; height=&quot;212&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;VDA 5050 raw JSON payloads&lt;/div&gt;&lt;/div&gt;

&lt;h1&gt;Notes about nodes, edges, and orders&lt;/h1&gt;
&lt;p&gt;In VDA 5050 terms, the control server commands AGVs by sending them &lt;em&gt;orders&lt;/em&gt;, each order is represented through a set of nodes connected by edges. Each node and edge has a &lt;em&gt;sequence number&lt;/em&gt;, indicating the succession in which it has to be traversed. Optionally, any node or edge can be associated with some actions (e.g., load, unload) that have to be performed there.&lt;/p&gt;
&lt;p&gt;In addition to that, nodes and edges can be &amp;quot;released&amp;quot; or &amp;quot;unreleased&amp;quot;. An AGV is only allowed to traverse released nodes and edges, which are collectively referred to as the &amp;quot;base&amp;quot;. The unreleased part is called the &amp;quot;horizon&amp;quot;. Thus, when an order is sent to the AGV, it has a base and a horizon, such that the AGV knows what it has to do in the long term, but until further notice, it will only move up to the end of the base, but no further.&lt;/p&gt;
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;https://railean.net/media/blogs/a/quick-uploads/vda-5050-payload-visualizer-debugger/vda5050-order-schematic.png?mtime=1617211698&quot; title=&quot;VDA5050 order example&quot; rel=&quot;lightbox[p446]&quot; id=&quot;link_22&quot;&gt;&lt;img alt=&quot;Nodes and edges of a VDA5050 order&quot; src=&quot;https://railean.net/media/blogs/a/quick-uploads/vda-5050-payload-visualizer-debugger/.evocache/vda5050-order-schematic.png/fit-400x320.png?mtime=1617211698&quot; width=&quot;551&quot; height=&quot;105&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;VDA5050 order example&lt;/div&gt;&lt;/div&gt;
&lt;h1&gt;Troubleshooting VDA 5050 implementations&lt;/h1&gt;
&lt;p&gt;Suppose you sent an order to the AGV, expecting it to stop at the end of the base. However, there&#039;s a problem - it stopped sooner than it should. When you build a list of possible explanations, you might come up with this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the succession of nodes and edges is wrong&lt;/li&gt;
&lt;li&gt;the succession is correct, but their actual &lt;em&gt;sequence numbers&lt;/em&gt; are wrong&lt;/li&gt;
&lt;li&gt;everything is correct, but there&#039;s a problem on the AGV&#039;s side&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To test each hypothesis, you have to look at the JSON payload, find each node and edge, see if it is in the right position in the list (i.e. are in the correct sequence), then check the &lt;code class=&quot;codespan&quot;&gt;sequenceNumber&lt;/code&gt; attribute of each node, then check whether the &lt;code class=&quot;codespan&quot;&gt;released&lt;/code&gt; parameter is &lt;code class=&quot;codespan&quot;&gt;true&lt;/code&gt; where necessary, etc.&lt;/p&gt;
&lt;p&gt;Since JSON payloads are usually minified, this is no easy task, because everything is written in one line. In practice you usually need to scroll to the right point in the log, copy/paste the payload to a text editor that prettifies it for you, so you can look at an indented structure that is more readable.&lt;/p&gt;
&lt;p&gt;More readable doesn&#039;t mean &amp;quot;piece of cake&amp;quot;, it is just a step ahead of the raw thing, but you are still dealing with a &amp;quot;find a needle in a haystack&amp;quot; type of problem. Clearly, this is time consuming and boring. Moreover, it is error-prone, because we can easily lose count, misremember, or simply forget something.&lt;/p&gt;
&lt;h2&gt;Asking the right questions&lt;/h2&gt;
&lt;p&gt;When dealing with monotonous tasks we can keep our focus for a while, but it definitely doesn&#039;t make work joyful. To make things better, we ask ourselves &amp;quot;what are we looking for when debugging VDA 5050 implementations?&amp;quot;. Here&#039;s a list:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;are there any gaps in the base?&lt;/li&gt;
&lt;li&gt;are all there duplicate sequence numbers?&lt;/li&gt;
&lt;li&gt;are there gaps in the sequence numbers?&lt;/li&gt;
&lt;li&gt;are the sequence numbers monotonically increasing?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Notice that each question gets a yes/no answer, just one bit. However, getting each bit is a tedius task.&lt;/p&gt;
&lt;p&gt;The next step, if either of those answers is &amp;quot;yes&amp;quot;, would be to dig a bit deeper:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;where (which node or edge) does the gap occur?&lt;/li&gt;
&lt;li&gt;at what position is the sequence number is duplicated?&lt;/li&gt;
&lt;li&gt;what is the duplicated value?&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;The VDA 5050 payload visualizer&lt;/h1&gt;
&lt;p&gt;While implementing this protocol myself, I spent a lot of time looking for needles in haystacks, answering the questions above. You can try to do it in your mind, but when orders are complex you end up sketching them on paper, because otherwise you end up juggling too many items in your head.&lt;/p&gt;
&lt;p&gt;After going through that multiple times, I developed a &lt;a href=&quot;http://vda5050.arculus.de/&quot;&gt;payload visualizer&lt;/a&gt; which is now freely shared by [arculus](arculus.de).&lt;/p&gt;
&lt;p&gt;This is a debugging aid built to &amp;quot;scratch my own itch&amp;quot; - I had a problem and I had to do something about it.&lt;/p&gt;
&lt;h2&gt;An overview&lt;/h2&gt;
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;https://railean.net/media/blogs/a/quick-uploads/vda-5050-payload-visualizer-debugger/tutorial.png?mtime=1617211794&quot; title=&quot;VDA5050 payload visualizer&quot; rel=&quot;lightbox[p446]&quot; id=&quot;link_23&quot;&gt;&lt;img alt=&quot;Annotated VDA5050 debugging tool&quot; src=&quot;https://railean.net/media/blogs/a/quick-uploads/vda-5050-payload-visualizer-debugger/.evocache/tutorial.png/fit-400x320.png?mtime=1617211794&quot; width=&quot;400&quot; height=&quot;257&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;VDA5050 payload visualizer&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The VDA 5050 visualizer is inspired by a mixture of several concepts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Network sniffers like Wireshark (formerly Ethereal)&lt;/li&gt;
&lt;li&gt;Chat programs that show a conversation&lt;/li&gt;
&lt;li&gt;A dashboard that shows a laconic representation of the state of a system&lt;/li&gt;
&lt;li&gt;Computer games that show a minimap of the world in some corner&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Basically, the visualizer illustrates the data exchange between the AGV and the control node in the form of a chat. You can scroll through the history of messages, while the alignmnent of &amp;quot;bubbles&amp;quot; indicates who sent the message.&lt;/p&gt;
&lt;p&gt;Each entry is not just a piece of text, but a visual representation of the JSON payload that was sent.&lt;/p&gt;
&lt;p&gt;Thus, you can easily grasp the big picture and observe the dynamics of the relationship between the AGV and the control server.&lt;/p&gt;
&lt;h2&gt;Answers on a plate&lt;/h2&gt;
&lt;p&gt;Usability is further improved by sprinkling a bit of logic on top. Let&#039;s say you see the nodes, but you want to check their sequence numbers - you do that by going through each node and edge.&lt;/p&gt;
&lt;p&gt;The payload visualizer takes that burden off your mind, because it will display problematic sequence numbers in red. So, the problem is now changed from &amp;quot;find the sequence number of each node, then look at the subsequent node, compare the numbers and see if anything is fishy about it&amp;quot; into &amp;quot;is there anything red?&amp;quot;.&lt;/p&gt;
&lt;p&gt;The former task is more complex from the cognitive point of view, whereas the latter is a purely visual problem that your eyes can solve on their own.&lt;/p&gt;
&lt;p&gt;The same applies to out-of-order &lt;code class=&quot;codespan&quot;&gt;headerId&lt;/code&gt;s that come with each message. The only way to know whether you&#039;ve received a duplicate, or if you&#039;ve missed a message is by keeping track of the header ID. The payload visualizer makes it easy - anomalies are highlighted in red. The same applies to &lt;code class=&quot;codespan&quot;&gt;updateId&lt;/code&gt;s.&lt;/p&gt;
&lt;p&gt;What about unexpected gaps within base (i.e., some unreleased nodes surrounded by released ones)? That&#039;s easy - the base is &amp;quot;bold and green&amp;quot;, whereas the horizon is &amp;quot;thin and gray&amp;quot;. As in the previous case, the problem with a high cognitive load was transformed into a less demanding one - &amp;quot;are there any gray blobs surrounded by green ones?&amp;quot;.&lt;/p&gt;
&lt;h2&gt;Other goodies&lt;/h2&gt;
&lt;p&gt;The VDA 5050 payload visualizer also displays the various flags that the AGV sends with each message, e.g., does it need a base extension? Is it driving? Is it charging? Is it carrying loads? and so on.&lt;/p&gt;
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;https://railean.net/media/blogs/a/quick-uploads/vda-5050-payload-visualizer-debugger/vda5050-status-flags.png?mtime=1617211896&quot; title=&quot;VDA5050 AGV status flags&quot; rel=&quot;lightbox[p446]&quot; id=&quot;link_24&quot;&gt;&lt;img alt=&quot;Icons for VDA5050 AGV states &quot; src=&quot;https://railean.net/media/blogs/a/quick-uploads/vda-5050-payload-visualizer-debugger/.evocache/vda5050-status-flags.png/fit-400x320.png?mtime=1617211896&quot; width=&quot;600&quot; height=&quot;31&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;VDA5050 AGV status flags&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Besides that, you can click a button to see the raw JSON payload itself, in case you don&#039;t trust the visualizer, or if you want to be able to replicate the problem by storing the message and sending it later.&lt;/p&gt;
&lt;p&gt;Each status message is accompanied by a minimap where you can see where the AGV was at the time.&lt;/p&gt;
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;https://railean.net/media/blogs/a/quick-uploads/vda-5050-payload-visualizer-debugger/vda5050-mininap.png?mtime=1617212038&quot; title=&quot;VDA5050 minimap with the AGV&#039;s position &quot; rel=&quot;lightbox[p446]&quot; id=&quot;link_25&quot;&gt;&lt;img alt=&quot;Small map with a location marker&quot; src=&quot;https://railean.net/media/blogs/a/quick-uploads/vda-5050-payload-visualizer-debugger/.evocache/vda5050-mininap.png/fit-400x320.png?mtime=1617212038&quot; width=&quot;400&quot; height=&quot;624&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;VDA5050 minimap with the AGV&#039;s position &lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Whenever a new order is set, a &amp;quot;separator line&amp;quot; is rendered, so you can easily identify such orders; otherwise you&#039;d have to compare the &lt;code class=&quot;codespan&quot;&gt;orderId&lt;/code&gt;s, which happen to be UUIDs, so they&#039;re pretty long.&lt;/p&gt;
&lt;p&gt;Pressing &lt;code class=&quot;codespan&quot;&gt;Ctrl+P&lt;/code&gt; will allow you to print the entire &amp;quot;chat history&amp;quot; between the AGV and the control node, as well as export it to a PDF. This way you can share logs with your colleagues, so they can all troubleshoot a case by following the exact sequence of events that lead to an error.&lt;/p&gt;
&lt;p&gt;All the graphical information rendered on the screen is SVG, so it brings several benefits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;everything is searchable, press &lt;code class=&quot;codespan&quot;&gt;Ctrl+F&lt;/code&gt; and type an order ID, a header ID, or an action - anything, really! You can quickly find it, because the graphics are not &amp;quot;just a picture&amp;quot;, but they&#039;re semantically annotated too&lt;/li&gt;
&lt;li&gt;zoom in to look at the details, or zoom out to see the big picture -  everything remains crisp&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Under the hood&lt;/h1&gt;
&lt;p&gt;The visualizer works in your browser and connects directly to &lt;em&gt;your&lt;/em&gt; broker. Thus, everything runs on &lt;em&gt;your own infrastructure&lt;/em&gt;, so nothing potentially sensitive could leak out (e.g., that you&#039;re working on VDA 5050 in the first place, how many AGVs you have, what kind of errors you encounter, etc.).&lt;/p&gt;
&lt;p&gt;Moreover, since the visualizer simply subscribes to the same topics as the AGV and the control node - it gets copies of all the messages, but doesn&#039;t publish any messages on its own. Thus, it is guaranteed not to interfere with anything.&lt;/p&gt;
&lt;p&gt;Another benefit is that you don&#039;t need to change anything in your AGV or in the controlling node. The payload visualizer is just another MQTT subscriber connecting to your broker, that&#039;s it.&lt;/p&gt;
&lt;p&gt;Since everything runs in the browser, it can also be used on your mobile phone if you want to have a look at the traffic while debugging something on-site.&lt;/p&gt;
&lt;h2&gt;Configuring the MQTT broker&lt;/h2&gt;
&lt;p&gt;The tool requires an MQTT broker that supports websockets. This feature is widely supported by many brokers, I&#039;ll illustrate how to do it in Mosquitto:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Edit &lt;code class=&quot;codespan&quot;&gt;/etc/mosquitto/conf.d/websocket.conf&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add this to the contents (adjust port numbers to your needs)&lt;/p&gt;
&lt;p&gt;&lt;!-- codeblock line=1 --&gt;&lt;/p&gt;&lt;pre class=&quot;codeblock&quot;&gt;&lt;code&gt;  listener 1883
  listener 1884
  protocol websockets&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;!-- /codeblock --&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;Restart it with &lt;code class=&quot;codespan&quot;&gt;systemctl mosquitto restart&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As a result, you&#039;ll have the regular MQTT over TCP on port 1883, and MQTT over websockets on port 1884.&lt;/p&gt;
&lt;h1&gt;Conclusion&lt;/h1&gt;
&lt;p&gt;This payload visualizer is a tool I wish I had at hand when I was implementing VDA 5050, it would have saved me a lot of time and mental effort. It transforms boring and error-prone problems like &amp;quot;find the wrong number in this mountain of data&amp;quot; into purely visual problems that can be solved much easier, by the visual equivalent of &amp;quot;muscle memory&amp;quot;.&lt;/p&gt;
&lt;p&gt;Drop by &lt;a href=&quot;http://vda5050.arculus.de/&quot;&gt;vda5050.arculus.de&lt;/a&gt; to see it in action. Feel free to provide feedback and request new features.&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://railean.net/index.php/vda-5050-payload-visualizer-debugger&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<p>VDA 5050 is an open protocol devised by the German association of car manufacturers (Verband der Automobilindustrie), it is meant to become the common language that AGVs (autonomous guided vehicles) use to exchange information with a controller. To get an idea of what it looks like - imagine a fleet of robots moving pieces and materials from one spot to another on a factory floor. A controlling server sends instructions, telling each robot where to go, which checkpoints to drive through, what actions to perform and with what settings (e.g. &quot;pick up this specific box and bring it over there, place it on the second shelf&quot;).</p>
<p>VDA 5050 uses MQTT to transmit JSON payloads to several purpose-specific topics. In the screenshot you can see several windows, each displaying the  data arriving to these topics.</p>
<div><a href="https://railean.net/media/blogs/a/quick-uploads/vda-5050-payload-visualizer-debugger/vda5050-raw-payloads.jpg?mtime=1617211152" title="VDA 5050 raw JSON payloads" rel="lightbox[p446]" id="link_21"><img alt="Screenshot displaying raw JSON data" src="https://railean.net/media/blogs/a/quick-uploads/vda-5050-payload-visualizer-debugger/.evocache/vda5050-raw-payloads.jpg/fit-320x320.jpg?mtime=1617211152" width="320" height="169" class="loadimg" /></a><div><i>VDA 5050 raw JSON payloads</i></div></div>

<h1>Notes about nodes, edges, and orders</h1>
<p>In VDA 5050 terms, the control server commands AGVs by sending them <em>orders</em>, each order is represented through a set of nodes connected by edges. Each node and edge has a <em>sequence number</em>, indicating the succession in which it has to be traversed. Optionally, any node or edge can be associated with some actions (e.g., load, unload) that have to be performed there.</p>
<p>In addition to that, nodes and edges can be &quot;released&quot; or &quot;unreleased&quot;. An AGV is only allowed to traverse released nodes and edges, which are collectively referred to as the &quot;base&quot;. The unreleased part is called the &quot;horizon&quot;. Thus, when an order is sent to the AGV, it has a base and a horizon, such that the AGV knows what it has to do in the long term, but until further notice, it will only move up to the end of the base, but no further.</p>
<div class="image_block"><a href="https://railean.net/media/blogs/a/quick-uploads/vda-5050-payload-visualizer-debugger/vda5050-order-schematic.png?mtime=1617211698" title="VDA5050 order example" rel="lightbox[p446]" id="link_22"><img alt="Nodes and edges of a VDA5050 order" src="https://railean.net/media/blogs/a/quick-uploads/vda-5050-payload-visualizer-debugger/.evocache/vda5050-order-schematic.png/fit-400x320.png?mtime=1617211698" width="551" height="105" class="loadimg" /></a><div class="image_legend">VDA5050 order example</div></div>
<h1>Troubleshooting VDA 5050 implementations</h1>
<p>Suppose you sent an order to the AGV, expecting it to stop at the end of the base. However, there's a problem - it stopped sooner than it should. When you build a list of possible explanations, you might come up with this:</p>
<ul>
<li>the succession of nodes and edges is wrong</li>
<li>the succession is correct, but their actual <em>sequence numbers</em> are wrong</li>
<li>everything is correct, but there's a problem on the AGV's side</li>
</ul>
<p>To test each hypothesis, you have to look at the JSON payload, find each node and edge, see if it is in the right position in the list (i.e. are in the correct sequence), then check the <code class="codespan">sequenceNumber</code> attribute of each node, then check whether the <code class="codespan">released</code> parameter is <code class="codespan">true</code> where necessary, etc.</p>
<p>Since JSON payloads are usually minified, this is no easy task, because everything is written in one line. In practice you usually need to scroll to the right point in the log, copy/paste the payload to a text editor that prettifies it for you, so you can look at an indented structure that is more readable.</p>
<p>More readable doesn't mean &quot;piece of cake&quot;, it is just a step ahead of the raw thing, but you are still dealing with a &quot;find a needle in a haystack&quot; type of problem. Clearly, this is time consuming and boring. Moreover, it is error-prone, because we can easily lose count, misremember, or simply forget something.</p>
<h2>Asking the right questions</h2>
<p>When dealing with monotonous tasks we can keep our focus for a while, but it definitely doesn't make work joyful. To make things better, we ask ourselves &quot;what are we looking for when debugging VDA 5050 implementations?&quot;. Here's a list:</p>
<ul>
<li>are there any gaps in the base?</li>
<li>are all there duplicate sequence numbers?</li>
<li>are there gaps in the sequence numbers?</li>
<li>are the sequence numbers monotonically increasing?</li>
</ul>
<p>Notice that each question gets a yes/no answer, just one bit. However, getting each bit is a tedius task.</p>
<p>The next step, if either of those answers is &quot;yes&quot;, would be to dig a bit deeper:</p>
<ul>
<li>where (which node or edge) does the gap occur?</li>
<li>at what position is the sequence number is duplicated?</li>
<li>what is the duplicated value?</li>
</ul>
<h1>The VDA 5050 payload visualizer</h1>
<p>While implementing this protocol myself, I spent a lot of time looking for needles in haystacks, answering the questions above. You can try to do it in your mind, but when orders are complex you end up sketching them on paper, because otherwise you end up juggling too many items in your head.</p>
<p>After going through that multiple times, I developed a <a href="http://vda5050.arculus.de/">payload visualizer</a> which is now freely shared by [arculus](arculus.de).</p>
<p>This is a debugging aid built to &quot;scratch my own itch&quot; - I had a problem and I had to do something about it.</p>
<h2>An overview</h2>
<div class="image_block"><a href="https://railean.net/media/blogs/a/quick-uploads/vda-5050-payload-visualizer-debugger/tutorial.png?mtime=1617211794" title="VDA5050 payload visualizer" rel="lightbox[p446]" id="link_23"><img alt="Annotated VDA5050 debugging tool" src="https://railean.net/media/blogs/a/quick-uploads/vda-5050-payload-visualizer-debugger/.evocache/tutorial.png/fit-400x320.png?mtime=1617211794" width="400" height="257" class="loadimg" /></a><div class="image_legend">VDA5050 payload visualizer</div></div>
<p>The VDA 5050 visualizer is inspired by a mixture of several concepts:</p>
<ul>
<li>Network sniffers like Wireshark (formerly Ethereal)</li>
<li>Chat programs that show a conversation</li>
<li>A dashboard that shows a laconic representation of the state of a system</li>
<li>Computer games that show a minimap of the world in some corner</li>
</ul>
<p>Basically, the visualizer illustrates the data exchange between the AGV and the control node in the form of a chat. You can scroll through the history of messages, while the alignmnent of &quot;bubbles&quot; indicates who sent the message.</p>
<p>Each entry is not just a piece of text, but a visual representation of the JSON payload that was sent.</p>
<p>Thus, you can easily grasp the big picture and observe the dynamics of the relationship between the AGV and the control server.</p>
<h2>Answers on a plate</h2>
<p>Usability is further improved by sprinkling a bit of logic on top. Let's say you see the nodes, but you want to check their sequence numbers - you do that by going through each node and edge.</p>
<p>The payload visualizer takes that burden off your mind, because it will display problematic sequence numbers in red. So, the problem is now changed from &quot;find the sequence number of each node, then look at the subsequent node, compare the numbers and see if anything is fishy about it&quot; into &quot;is there anything red?&quot;.</p>
<p>The former task is more complex from the cognitive point of view, whereas the latter is a purely visual problem that your eyes can solve on their own.</p>
<p>The same applies to out-of-order <code class="codespan">headerId</code>s that come with each message. The only way to know whether you've received a duplicate, or if you've missed a message is by keeping track of the header ID. The payload visualizer makes it easy - anomalies are highlighted in red. The same applies to <code class="codespan">updateId</code>s.</p>
<p>What about unexpected gaps within base (i.e., some unreleased nodes surrounded by released ones)? That's easy - the base is &quot;bold and green&quot;, whereas the horizon is &quot;thin and gray&quot;. As in the previous case, the problem with a high cognitive load was transformed into a less demanding one - &quot;are there any gray blobs surrounded by green ones?&quot;.</p>
<h2>Other goodies</h2>
<p>The VDA 5050 payload visualizer also displays the various flags that the AGV sends with each message, e.g., does it need a base extension? Is it driving? Is it charging? Is it carrying loads? and so on.</p>
<div class="image_block"><a href="https://railean.net/media/blogs/a/quick-uploads/vda-5050-payload-visualizer-debugger/vda5050-status-flags.png?mtime=1617211896" title="VDA5050 AGV status flags" rel="lightbox[p446]" id="link_24"><img alt="Icons for VDA5050 AGV states " src="https://railean.net/media/blogs/a/quick-uploads/vda-5050-payload-visualizer-debugger/.evocache/vda5050-status-flags.png/fit-400x320.png?mtime=1617211896" width="600" height="31" /></a><div class="image_legend">VDA5050 AGV status flags</div></div>
<p>Besides that, you can click a button to see the raw JSON payload itself, in case you don't trust the visualizer, or if you want to be able to replicate the problem by storing the message and sending it later.</p>
<p>Each status message is accompanied by a minimap where you can see where the AGV was at the time.</p>
<div class="image_block"><a href="https://railean.net/media/blogs/a/quick-uploads/vda-5050-payload-visualizer-debugger/vda5050-mininap.png?mtime=1617212038" title="VDA5050 minimap with the AGV's position " rel="lightbox[p446]" id="link_25"><img alt="Small map with a location marker" src="https://railean.net/media/blogs/a/quick-uploads/vda-5050-payload-visualizer-debugger/.evocache/vda5050-mininap.png/fit-400x320.png?mtime=1617212038" width="400" height="624" class="loadimg" /></a><div class="image_legend">VDA5050 minimap with the AGV's position </div></div>
<p>Whenever a new order is set, a &quot;separator line&quot; is rendered, so you can easily identify such orders; otherwise you'd have to compare the <code class="codespan">orderId</code>s, which happen to be UUIDs, so they're pretty long.</p>
<p>Pressing <code class="codespan">Ctrl+P</code> will allow you to print the entire &quot;chat history&quot; between the AGV and the control node, as well as export it to a PDF. This way you can share logs with your colleagues, so they can all troubleshoot a case by following the exact sequence of events that lead to an error.</p>
<p>All the graphical information rendered on the screen is SVG, so it brings several benefits:</p>
<ul>
<li>everything is searchable, press <code class="codespan">Ctrl+F</code> and type an order ID, a header ID, or an action - anything, really! You can quickly find it, because the graphics are not &quot;just a picture&quot;, but they're semantically annotated too</li>
<li>zoom in to look at the details, or zoom out to see the big picture -  everything remains crisp</li>
</ul>
<h1>Under the hood</h1>
<p>The visualizer works in your browser and connects directly to <em>your</em> broker. Thus, everything runs on <em>your own infrastructure</em>, so nothing potentially sensitive could leak out (e.g., that you're working on VDA 5050 in the first place, how many AGVs you have, what kind of errors you encounter, etc.).</p>
<p>Moreover, since the visualizer simply subscribes to the same topics as the AGV and the control node - it gets copies of all the messages, but doesn't publish any messages on its own. Thus, it is guaranteed not to interfere with anything.</p>
<p>Another benefit is that you don't need to change anything in your AGV or in the controlling node. The payload visualizer is just another MQTT subscriber connecting to your broker, that's it.</p>
<p>Since everything runs in the browser, it can also be used on your mobile phone if you want to have a look at the traffic while debugging something on-site.</p>
<h2>Configuring the MQTT broker</h2>
<p>The tool requires an MQTT broker that supports websockets. This feature is widely supported by many brokers, I'll illustrate how to do it in Mosquitto:</p>
<ol>
<li>Edit <code class="codespan">/etc/mosquitto/conf.d/websocket.conf</code></li>
<li>
<p>Add this to the contents (adjust port numbers to your needs)</p>
<p><!-- codeblock line=1 --></p><pre class="codeblock"><code>  listener 1883
  listener 1884
  protocol websockets</code></pre><p><!-- /codeblock --></p>

</li>
<li>Restart it with <code class="codespan">systemctl mosquitto restart</code></li>
</ol>
<p>As a result, you'll have the regular MQTT over TCP on port 1883, and MQTT over websockets on port 1884.</p>
<h1>Conclusion</h1>
<p>This payload visualizer is a tool I wish I had at hand when I was implementing VDA 5050, it would have saved me a lot of time and mental effort. It transforms boring and error-prone problems like &quot;find the wrong number in this mountain of data&quot; into purely visual problems that can be solved much easier, by the visual equivalent of &quot;muscle memory&quot;.</p>
<p>Drop by <a href="http://vda5050.arculus.de/">vda5050.arculus.de</a> to see it in action. Feel free to provide feedback and request new features.</p><div class="item_footer"><p><small><a href="https://railean.net/index.php/vda-5050-payload-visualizer-debugger">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://railean.net/index.php/vda-5050-payload-visualizer-debugger#comments</comments>
			<wfw:commentRss>https://railean.net/index.php?tempskin=_rss2&#38;disp=comments&#38;p=446</wfw:commentRss>
		</item>
				<item>
			<title>Cum funcționează aplicația iBus care arată pozițiile autobuzelor din Chișinău?</title>
			<link>https://railean.net/index.php/ibus-app-chisinau-bus-reverse-engineering</link>
			<pubDate>Mon, 28 Dec 2020 16:46:00 +0000</pubDate>			<dc:creator>gr8dude</dc:creator>
			<category domain="main">Technology / programming</category>			<guid isPermaLink="false">445@https://railean.net/</guid>
						<description>&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://railean.net/media/blogs/a/quick-uploads/ibus-app-chisinau-bus-reverse-engineering/flespimqtt.png?mtime=1609160342&quot; rel=&quot;lightbox[p445]&quot; id=&quot;link_20&quot;&gt;&lt;img alt=&quot;Cum funcționează aplicația iBus care arată pozițiile autobuzelor din Chișinău?&quot; src=&quot;https://railean.net/media/blogs/a/quick-uploads/ibus-app-chisinau-bus-reverse-engineering/.evocache/flespimqtt.png/fit-320x320.png?mtime=1609160342&quot; width=&quot;886&quot; height=&quot;274&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Un mic exercițiu de reverse-engineering - de unde preia datele aplicația &lt;code class=&quot;codespan&quot;&gt;iBus&lt;/code&gt;? Ofer aici un rezumat a pașilor întreprinși pentru a găsi răspuns la întrebarea dată. Explicația nu conține ilustrații sau instrucțiuni exacte, e superficială, dar suficient de detaliată ca un om care știe să „conecteze punctele” să poată replica pașii fără dificultate. Informația este oferită cu un scop exclusiv &lt;strong&gt;didactic&lt;/strong&gt;, ce faci cu ea - e doar responsabilitatea ta.&lt;/p&gt;
&lt;p&gt;Metoda prezentată aici nu este neapărat optimală, e doar calea pe care am parcurs-o, având la îndemână instrumentele pe care le aveam la moment.&lt;/p&gt;

&lt;h2 class=&quot;evo_auto_anchor_header&quot; id=&quot;primii-pasi-interceptarea-http&quot;&gt;Primii pași, interceptarea HTTP&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Am încercat &lt;a href=&quot;https://mitmproxy.org/&quot;&gt;MitM proxy&lt;/a&gt;, cu speranța că aplicația lucrează prin HTTP. După ce am instalat certificatul propriu și am configurat telefonul să treacă tot traficul prin proxy, am constatat că nu am prins niciun request care să-mi pară interesant. Posibil undeva în logica programului se spune că setările de proxy a sistemului trebuie să fie ignorate.&lt;/li&gt;
&lt;li&gt;Alternativa ar fi că aplicația se conectează undeva direct prin TCP, deci am nevoie de un sniffer clasic. Cu regret, telefonul meu curent nu e „rooted” și nu pot rula pe el Wireshark (sau ceva similar) direct.&lt;/li&gt;
&lt;li&gt;De aceea am recurs la &lt;a href=&quot;https://httptoolkit.tech/&quot;&gt;HTTPToolkit&lt;/a&gt;. Deși denumirea spune doar „HTTP”, principiul de funcționare e acela că în Android se configurează un VPN server, prin care trece tot traficul.&lt;/li&gt;
&lt;li&gt;Mecanismul e foarte user-friendly și în scurt timp vedeam unde se conectează aplicațiile din telefon. În log am găsit și o eroare care spunea că una din aplicații a refuzat să se conecteze. Setând anumite filtre, ca să mă asigur că e anume aplicația iBus - am confirmat că ea e. Concluzia este că în aplicație se folosește „certificate pinning”, adică ea știe din start care va fi certificatul serverului la care se conectează și refuză conexiunile dacă vede că certificatul e schimbat. E o practică bună, dar în cazul nostru înseamnă că problema e mai complexă.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;În rezultat am constatat că aplicația, cel mai probabil, totuși folosește HTTP pentru a primi date.&lt;/p&gt;
&lt;h2 class=&quot;evo_auto_anchor_header&quot; id=&quot;android-binary-decompilation&quot;&gt;Android binary decompilation&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Următorul pas era să extrag aplicația din telefon, am utilizat &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.ext.ui&quot;&gt;APK extractor&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Am lansat &lt;code class=&quot;codespan&quot;&gt;strings ibus.apk &amp;gt; lines.txt&lt;/code&gt; cu speranța că voi găsi acolo ceva bun, de exemplu parole sau adrese hardcodate, sau ceva de acest gen. O inspecție vizuală a rezultatelor nu a arătat nimic promițător.&lt;/li&gt;
&lt;li&gt;Am hotărât să sap mai adânc cu ajutorul &lt;a href=&quot;https://ibotpeaches.github.io/Apktool/&quot;&gt;APK tool&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Conform instrucțiunilor, am executat &lt;code class=&quot;codespan&quot;&gt;apktool d ibus.apk&lt;/code&gt;, iar apoi am început să inspectez cu ochiul neînarmat rezultatele.&lt;/li&gt;
&lt;li&gt;Prin intuiție am decis să caut peste tot stringuri precum &lt;code class=&quot;codespan&quot;&gt;socket&lt;/code&gt;, &lt;code class=&quot;codespan&quot;&gt;connect&lt;/code&gt; sau &lt;code class=&quot;codespan&quot;&gt;http://&lt;/code&gt;. Ultima căutare a dat un rezultat, în &lt;code class=&quot;codespan&quot;&gt;MainActivity&lt;/code&gt; am găsit un URL promițător, pe care l-am deschis în browser: &lt;code class=&quot;codespan&quot;&gt;nimbus.wialon.com/locator/5f59baffc............&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Am văzut același ecran pe care-l văd în aplicația Android. Astfel am ajuns la concluzia că aplicația este un webView care vizualizează această pagină. La etapă curentă nu mai e necesar să fac ceva cu telefonul pentru că site-ul poate fi examinat și la un calculator ordinar, cu ecran mare și tastatură zmeurie.&lt;/p&gt;
&lt;h2 class=&quot;evo_auto_anchor_header&quot; id=&quot;analiza-site-ului&quot;&gt;Analiza site-ului&lt;/h2&gt;
&lt;p&gt;Utilizatorul atent a atras atenție faptului că aplicația nu cere nicio parolă. Așadar putem presupune că nu se face nicio autentificare sau că datele de acces sunt înscrise chiar în codul aplicației.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Am deschis pagina și în același timp am deschis „browser developer tools” prin &lt;code class=&quot;codespan&quot;&gt;ctrl+shift+i&lt;/code&gt; ca să văd ce mai este interesant pe acolo.&lt;/li&gt;
&lt;li&gt;M-am uitat în lista requesturilor, am văzut ceva legat de websockets și am încercat să inspectez traficul.&lt;/li&gt;
&lt;li&gt;Nu era niciun trafic. Deoarece era noapte târzie, am presupus că datele chiar nu vin pentru că nu le trimite nimeni, deci ar trebui să revin la problemă a doua zi.&lt;/li&gt;
&lt;li&gt;Într-adevăr, peste câteva ore venea un flux continuu de date în format JSON. Cum să mă conectez ca să-l primesc și eu?&lt;/li&gt;
&lt;li&gt;Codul Javascript era minificat, adică nu era cine-știe-ce-human-readable. Dar știind că se conectează la un server care conține &lt;code class=&quot;codespan&quot;&gt;mqtt&lt;/code&gt; în denumire, am presupus că o face cu ajutorul librăriei &lt;code class=&quot;codespan&quot;&gt;paho mqtt&lt;/code&gt;, cu care sunt familiar.&lt;/li&gt;
&lt;li&gt;Știind care sunt &lt;a href=&quot;https://www.eclipse.org/paho/files/jsdoc/Paho.MQTT.Client.html&quot;&gt;denumirile parametrilor pe care le primesc funcțiile&lt;/a&gt;, și că în varianta JS a acestei librării parametrii se transmit ca stringuri, am căutat &lt;code class=&quot;codespan&quot;&gt;userName&lt;/code&gt; și am pus un breakpoint în locul unde se apelează funcția care se conectează la server și face &lt;code class=&quot;codespan&quot;&gt;subscribe&lt;/code&gt; la anumite topic&#039;uri.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Aici admit că am avut un pic de noroc deoarece sunt familiar cu ideologia protocolului MQTT și cu instrumentariul  Paho, de aceea știam ce să caut și cum să identific că ceea ce am găsit este ceea ce căutam. La breakpoint am văzut care sunt valorile variabilelor în momentul când ne conectăm la server. Parola e goală, username e hardcoded. L-am încercat cu un &lt;a href=&quot;https://github.com/roataway/examples/tree/master/javascript-websocket&quot;&gt;MQTT client alternativ&lt;/a&gt; și am văzut că primesc și eu JSON&#039;urile pe care le așteptam.&lt;/p&gt;
&lt;h2 class=&quot;evo_auto_anchor_header&quot; id=&quot;raspunsul-definitiv&quot;&gt;Răspunsul definitiv&lt;/h2&gt;
&lt;p&gt;Așadar, știm că aplicația iBus este un webView care vizualizează un URL, care la rândul său execută un Javascript care preia datele de pe un MQTT server a unui third party, care distribuie fluxul de date prin websockets. Adresa serverului, portul și numele de utilizator pot fi extrase din codul paginii.&lt;/p&gt;
&lt;p&gt;Cum arată mesajele propriu-zise: &lt;/p&gt;
&lt;p&gt;&lt;!-- codeblock line=1 --&gt;&lt;/p&gt;&lt;pre class=&quot;codeblock&quot;&gt;&lt;code&gt;{
  &quot;tm&quot;: 1609151367,
  &quot;id&quot;: 20464445,
  &quot;msg&quot;: {
    &quot;r&quot;: 20690,
    &quot;pos&quot;: {
      &quot;c&quot;: 91,
      &quot;y&quot;: 47.0378283,
      &quot;s&quot;: 20,
      &quot;x&quot;: 28.8112483
    },
    &quot;t&quot;: 1609151365,
    &quot;o&quot;: 519,
    &quot;tt&quot;: 275981,
    &quot;i&quot;: 13.5
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;!-- /codeblock --&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;codespan&quot;&gt;tm&lt;/code&gt; - unix time, timpul expedierii mesajului. &lt;code class=&quot;codespan&quot;&gt;msg/r&lt;/code&gt; - pare a fi un identificator de vehicul, &lt;code class=&quot;codespan&quot;&gt;pos&lt;/code&gt; - coordonatele și posibil viteza și azimutul.&lt;/p&gt;
&lt;p&gt;Pentru a-mi simplifica munca, am verificat dacă pot să primesc datele și prin MQTT-over-TCP, cu ajutorul &lt;code class=&quot;codespan&quot;&gt;mosquitto_sub&lt;/code&gt;. Da, e posibil, aici e comanda dată în base64 &lt;code class=&quot;codespan&quot;&gt;bW9zcXVpdHRvX3N1YiAtdSAyQWJsZllqQUpDNU0xempETk02OFdLb2tscGdSZko4N2E3 aGRUcUJzUXg0RlVkOXhONXR5REhHT1VNdVhrcVRrIC1oIG1xdHQuZmxlc3BpLmlvIC10I G5pbWJ1cy9sb2NhdG9yLzVmNTliYWZmYzM3MTQ0YTM5MzlkMjFiZDhhY2M1ZTQ1LyM=&lt;/code&gt;&lt;/p&gt;
&lt;h2 class=&quot;evo_auto_anchor_header&quot; id=&quot;comparatie-cu-roataway&quot;&gt;Comparație cu Roataway&lt;/h2&gt;
&lt;p&gt;iBus nu divizează informația pe rute, ci transmite întotdeauna toate datele. Dacă sunt 121 vehicule, și dimensiunea unui pachet JSON este de 230 octeți, într-o oră consumi ~10MB de trafic, chiar dacă nu ai nevoie de toate datele pentru că te interesează doar o rută anumită. Așadar, dacă te uiți în aplicație timp de 6 minute, consumi 1 MB de trafic.&lt;/p&gt;
&lt;p&gt;În &lt;a href=&quot;http://roataway.md&quot;&gt;Roataway&lt;/a&gt; datele vin selectiv, doar pentru rutele alese de utilizator, ceea ce constituie un avantaj pentru oamenii care au traficul redus.&lt;/p&gt;
&lt;h2 class=&quot;evo_auto_anchor_header&quot; id=&quot;concluzie&quot;&gt;Concluzie&lt;/h2&gt;
&lt;p&gt;Am aflat cum aplicația preia datele de la server și care este formatul pachetului de date. Această informație ar face posibilă integrarea datelor în alte sisteme sau elaborarea unui mecanism alternativ de vizualizare.&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://railean.net/index.php/ibus-app-chisinau-bus-reverse-engineering&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div><div><a href="https://railean.net/media/blogs/a/quick-uploads/ibus-app-chisinau-bus-reverse-engineering/flespimqtt.png?mtime=1609160342" rel="lightbox[p445]" id="link_20"><img alt="Cum funcționează aplicația iBus care arată pozițiile autobuzelor din Chișinău?" src="https://railean.net/media/blogs/a/quick-uploads/ibus-app-chisinau-bus-reverse-engineering/.evocache/flespimqtt.png/fit-320x320.png?mtime=1609160342" width="886" height="274" class="loadimg" /></a></div></div><p>Un mic exercițiu de reverse-engineering - de unde preia datele aplicația <code class="codespan">iBus</code>? Ofer aici un rezumat a pașilor întreprinși pentru a găsi răspuns la întrebarea dată. Explicația nu conține ilustrații sau instrucțiuni exacte, e superficială, dar suficient de detaliată ca un om care știe să „conecteze punctele” să poată replica pașii fără dificultate. Informația este oferită cu un scop exclusiv <strong>didactic</strong>, ce faci cu ea - e doar responsabilitatea ta.</p>
<p>Metoda prezentată aici nu este neapărat optimală, e doar calea pe care am parcurs-o, având la îndemână instrumentele pe care le aveam la moment.</p>

<h2 class="evo_auto_anchor_header" id="primii-pa-i-interceptarea-http">Primii pași, interceptarea HTTP</h2>
<ol>
<li>Am încercat <a href="https://mitmproxy.org/">MitM proxy</a>, cu speranța că aplicația lucrează prin HTTP. După ce am instalat certificatul propriu și am configurat telefonul să treacă tot traficul prin proxy, am constatat că nu am prins niciun request care să-mi pară interesant. Posibil undeva în logica programului se spune că setările de proxy a sistemului trebuie să fie ignorate.</li>
<li>Alternativa ar fi că aplicația se conectează undeva direct prin TCP, deci am nevoie de un sniffer clasic. Cu regret, telefonul meu curent nu e „rooted” și nu pot rula pe el Wireshark (sau ceva similar) direct.</li>
<li>De aceea am recurs la <a href="https://httptoolkit.tech/">HTTPToolkit</a>. Deși denumirea spune doar „HTTP”, principiul de funcționare e acela că în Android se configurează un VPN server, prin care trece tot traficul.</li>
<li>Mecanismul e foarte user-friendly și în scurt timp vedeam unde se conectează aplicațiile din telefon. În log am găsit și o eroare care spunea că una din aplicații a refuzat să se conecteze. Setând anumite filtre, ca să mă asigur că e anume aplicația iBus - am confirmat că ea e. Concluzia este că în aplicație se folosește „certificate pinning”, adică ea știe din start care va fi certificatul serverului la care se conectează și refuză conexiunile dacă vede că certificatul e schimbat. E o practică bună, dar în cazul nostru înseamnă că problema e mai complexă.</li>
</ol>
<p>În rezultat am constatat că aplicația, cel mai probabil, totuși folosește HTTP pentru a primi date.</p>
<h2 class="evo_auto_anchor_header" id="android-binary-decompilation">Android binary decompilation</h2>
<ol>
<li>Următorul pas era să extrag aplicația din telefon, am utilizat <a href="https://play.google.com/store/apps/details?id=com.ext.ui">APK extractor</a>.</li>
<li>Am lansat <code class="codespan">strings ibus.apk &gt; lines.txt</code> cu speranța că voi găsi acolo ceva bun, de exemplu parole sau adrese hardcodate, sau ceva de acest gen. O inspecție vizuală a rezultatelor nu a arătat nimic promițător.</li>
<li>Am hotărât să sap mai adânc cu ajutorul <a href="https://ibotpeaches.github.io/Apktool/">APK tool</a>.</li>
<li>Conform instrucțiunilor, am executat <code class="codespan">apktool d ibus.apk</code>, iar apoi am început să inspectez cu ochiul neînarmat rezultatele.</li>
<li>Prin intuiție am decis să caut peste tot stringuri precum <code class="codespan">socket</code>, <code class="codespan">connect</code> sau <code class="codespan">http://</code>. Ultima căutare a dat un rezultat, în <code class="codespan">MainActivity</code> am găsit un URL promițător, pe care l-am deschis în browser: <code class="codespan">nimbus.wialon.com/locator/5f59baffc............</code>.</li>
</ol>
<p>Am văzut același ecran pe care-l văd în aplicația Android. Astfel am ajuns la concluzia că aplicația este un webView care vizualizează această pagină. La etapă curentă nu mai e necesar să fac ceva cu telefonul pentru că site-ul poate fi examinat și la un calculator ordinar, cu ecran mare și tastatură zmeurie.</p>
<h2 class="evo_auto_anchor_header" id="analiza-site-ului">Analiza site-ului</h2>
<p>Utilizatorul atent a atras atenție faptului că aplicația nu cere nicio parolă. Așadar putem presupune că nu se face nicio autentificare sau că datele de acces sunt înscrise chiar în codul aplicației.</p>
<ol>
<li>Am deschis pagina și în același timp am deschis „browser developer tools” prin <code class="codespan">ctrl+shift+i</code> ca să văd ce mai este interesant pe acolo.</li>
<li>M-am uitat în lista requesturilor, am văzut ceva legat de websockets și am încercat să inspectez traficul.</li>
<li>Nu era niciun trafic. Deoarece era noapte târzie, am presupus că datele chiar nu vin pentru că nu le trimite nimeni, deci ar trebui să revin la problemă a doua zi.</li>
<li>Într-adevăr, peste câteva ore venea un flux continuu de date în format JSON. Cum să mă conectez ca să-l primesc și eu?</li>
<li>Codul Javascript era minificat, adică nu era cine-știe-ce-human-readable. Dar știind că se conectează la un server care conține <code class="codespan">mqtt</code> în denumire, am presupus că o face cu ajutorul librăriei <code class="codespan">paho mqtt</code>, cu care sunt familiar.</li>
<li>Știind care sunt <a href="https://www.eclipse.org/paho/files/jsdoc/Paho.MQTT.Client.html">denumirile parametrilor pe care le primesc funcțiile</a>, și că în varianta JS a acestei librării parametrii se transmit ca stringuri, am căutat <code class="codespan">userName</code> și am pus un breakpoint în locul unde se apelează funcția care se conectează la server și face <code class="codespan">subscribe</code> la anumite topic'uri.</li>
</ol>
<p>Aici admit că am avut un pic de noroc deoarece sunt familiar cu ideologia protocolului MQTT și cu instrumentariul  Paho, de aceea știam ce să caut și cum să identific că ceea ce am găsit este ceea ce căutam. La breakpoint am văzut care sunt valorile variabilelor în momentul când ne conectăm la server. Parola e goală, username e hardcoded. L-am încercat cu un <a href="https://github.com/roataway/examples/tree/master/javascript-websocket">MQTT client alternativ</a> și am văzut că primesc și eu JSON'urile pe care le așteptam.</p>
<h2 class="evo_auto_anchor_header" id="r-spunsul-definitiv">Răspunsul definitiv</h2>
<p>Așadar, știm că aplicația iBus este un webView care vizualizează un URL, care la rândul său execută un Javascript care preia datele de pe un MQTT server a unui third party, care distribuie fluxul de date prin websockets. Adresa serverului, portul și numele de utilizator pot fi extrase din codul paginii.</p>
<p>Cum arată mesajele propriu-zise: </p>
<p><!-- codeblock line=1 --></p><pre class="codeblock"><code>{
  "tm": 1609151367,
  "id": 20464445,
  "msg": {
    "r": 20690,
    "pos": {
      "c": 91,
      "y": 47.0378283,
      "s": 20,
      "x": 28.8112483
    },
    "t": 1609151365,
    "o": 519,
    "tt": 275981,
    "i": 13.5
  }
}</code></pre><p><!-- /codeblock --></p>

<p><code class="codespan">tm</code> - unix time, timpul expedierii mesajului. <code class="codespan">msg/r</code> - pare a fi un identificator de vehicul, <code class="codespan">pos</code> - coordonatele și posibil viteza și azimutul.</p>
<p>Pentru a-mi simplifica munca, am verificat dacă pot să primesc datele și prin MQTT-over-TCP, cu ajutorul <code class="codespan">mosquitto_sub</code>. Da, e posibil, aici e comanda dată în base64 <code class="codespan">bW9zcXVpdHRvX3N1YiAtdSAyQWJsZllqQUpDNU0xempETk02OFdLb2tscGdSZko4N2E3 aGRUcUJzUXg0RlVkOXhONXR5REhHT1VNdVhrcVRrIC1oIG1xdHQuZmxlc3BpLmlvIC10I G5pbWJ1cy9sb2NhdG9yLzVmNTliYWZmYzM3MTQ0YTM5MzlkMjFiZDhhY2M1ZTQ1LyM=</code></p>
<h2 class="evo_auto_anchor_header" id="compara-ie-cu-roataway">Comparație cu Roataway</h2>
<p>iBus nu divizează informația pe rute, ci transmite întotdeauna toate datele. Dacă sunt 121 vehicule, și dimensiunea unui pachet JSON este de 230 octeți, într-o oră consumi ~10MB de trafic, chiar dacă nu ai nevoie de toate datele pentru că te interesează doar o rută anumită. Așadar, dacă te uiți în aplicație timp de 6 minute, consumi 1 MB de trafic.</p>
<p>În <a href="http://roataway.md">Roataway</a> datele vin selectiv, doar pentru rutele alese de utilizator, ceea ce constituie un avantaj pentru oamenii care au traficul redus.</p>
<h2 class="evo_auto_anchor_header" id="concluzie">Concluzie</h2>
<p>Am aflat cum aplicația preia datele de la server și care este formatul pachetului de date. Această informație ar face posibilă integrarea datelor în alte sisteme sau elaborarea unui mecanism alternativ de vizualizare.</p><div class="item_footer"><p><small><a href="https://railean.net/index.php/ibus-app-chisinau-bus-reverse-engineering">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://railean.net/index.php/ibus-app-chisinau-bus-reverse-engineering#comments</comments>
			<wfw:commentRss>https://railean.net/index.php?tempskin=_rss2&#38;disp=comments&#38;p=445</wfw:commentRss>
		</item>
				<item>
			<title>Despre open source, pandemie și corupție</title>
			<link>https://railean.net/index.php/open-source-pandemie-coruptie</link>
			<pubDate>Fri, 10 Apr 2020 19:05:00 +0000</pubDate>			<dc:creator>gr8dude</dc:creator>
			<category domain="main">Technology / programming</category>
<category domain="alt">Thoughts</category>
<category domain="alt">Society</category>
<category domain="alt">Book distillery</category>			<guid isPermaLink="false">432@https://railean.net/</guid>
						<description>&lt;p&gt;Recent am contribuit la un proiect open source menit să &lt;a href=&quot;https://github.com/code4moldova/&quot;&gt;ajute oamenii în timpul pandemiei COVID-19&lt;/a&gt;. Esența acestuia constă în &amp;quot;conectarea&amp;quot; persoanelor blocate în case (de exemplu vârstnicii, bolnavii), cu voluntari care sunt dispuși să aducă produse alimentare și medicamente.&lt;/p&gt;
&lt;p&gt;Contribuția mea constituie un Telegram-bot care informează voluntarii despre misiunile pe care trebuie să le îndeplinească (cum Tom Cruise în &amp;quot;Collateral&amp;quot;, avea un gadget care-i spunea ce are de făcut ;-). Poți face click pe imagine pentru e vedea acest bot în acțiune:&lt;br /&gt;
&lt;a title=&quot;Click pentru video demo&quot; href=&quot;/files/ajubot-v0.4.1-screencast.mp4&quot;&gt;&lt;img src=&quot;/media/blogs/a/quick-uploads/p432/ajubot-exit-survey.png&quot; /&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Fiind întrebat despre motivațiea mea de a participa în acest proces, am zis că îmi place să fac ceva care are impact pozitiv asupra societății, și că nu e prima oară când mă implic în astfel de inițiative. Versiunea completă a răspunsului este redată aici:&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;În contextul pandemiei, o mare parte a reprezentanților statului și-au demonstrat nu doar &lt;em&gt;incompetența&lt;/em&gt;, dar și &lt;em&gt;ostilitatea deschisă&lt;/em&gt; față de cetățeni. Aceasta se manifestă prin absența transparenței și răspândirea informațiilor false, cât și prin setarea incorectă a priorităților. Când spun ”incorectă” nu am în vedere ”sub-optimală”, ci chiar ”ostilă” - acțiunile și deciziile lor nu doar că nu ajută poporul, dar ne aduc &lt;em&gt;prejudicii economice&lt;/em&gt; și ne expun unui &lt;em&gt;pericol și mai mare&lt;/em&gt;. Având în poziții-cheie astfel de ”черезвычайно мощные организаторы” precum Dodon Igor sau Chicu Ion, este evident că cetățenii nu sunt primul punct în agenda lor, decât în cazul când se caută pe cine să învinuiască. (n.r. acei care nu sunt enumerați aici explicit să nu creadă că au fost uitați, pur și simplu lista nemernicilor nu ar trebui să fie mai lungă decât textul propriu-zis).&lt;/p&gt;
&lt;p&gt;Trebuie să evidențiez că nimic din ceea ce am scris mai sus nu este o surpriză. Oare avea cineva mari așteptări de la ”tehnocrații” cu diplome false?&lt;/p&gt;
&lt;p&gt;Pentru a schimba dinamica în favoarea noastră, trebuie să ne gândim la soluții care exclud din ecuație ”aleșii poporului” (și ”aleșii aleșilor poporului”), astfel încât să nu depindă nimic de ei. Deciziile trebuie să fie luate de &lt;em&gt;oameni a căror piele e în joc&lt;/em&gt; - adică de noi, și nu de acei pentru care Moldova este ”planul B” (iar ”planul A” este undeva prin Cehia, unde sunt arene de sport foarte bune, sau în Elveția, unde iarba e mai verde).&lt;/p&gt;
&lt;p&gt;Un proiect open-source și liber, precum acesta la care am contribuit, este o încercare de a schimba dinamica jocului. ”&lt;em&gt;Open source&lt;/em&gt;” înseamnă că primești nu doar plăcinta, dar și rețeta pregătirii acesteia. ”&lt;em&gt;Liber&lt;/em&gt;” înseamnă că nu există constrângeri care să-ți interzică să pregătești propria plăcintă, să modifici rețeta sau s-o transmiți altora.&lt;/p&gt;
&lt;p&gt;Un astfel de sistem nu poate fi vândut la preț exagerat (cum 3 semafoare de 4.8 megalei), nu poate fi impus cuiva care nu are nevoie de el (cum ar fi un covor de flori sau o linie galbenă desenată prin oraș), nu poate fi furat sau expropriat (cum o pădure), nu poate fi luat în arendă la preț simbolic (cum un apartament sau un automobil), nu poate fi transformat în bani și depozitat în una din țările care doresc să ”distrugă statalitatea republicii”, nu poate fi ”scris” pe părinți sau pe soția filantropă. Mai mult decât atât, sistemul acesta este absolut transparent și nu ascunde nimic.&lt;/p&gt;
&lt;p&gt;Natura open-source a proiectului este un mecanism de protecție - nimeni nu poate parazita proiectul în niciun fel și nu poate împiedica funcționarea acestuia, deoarece acțiunile sunt efectuate de voluntari. Astfel, ”aleșii” s-au ales cu un loc în afara ecuației și nu ne pot ”ajuta” în niciun fel, deoarece interesele lor nu se intersectează cu ale noastre.&lt;/p&gt;
&lt;p&gt;Așadar, încurajez pe fiecare dintre noi să se gândească la situația din Moldova în termeni de &amp;quot;cum să-i &lt;strong&gt;excludem din ecuație&lt;/strong&gt;&amp;quot;. Trebuie să schimbăm ceva în abordare; altfel, dacă facem exact aceeași ce am făcut până acum, vom primi exact aceeași ce am primit până acum.&lt;/p&gt;
&lt;p&gt;În încheiere aș vrea să amintesc cuvintele profetice a unuia din experții de pe prima linie: acești paraziți ar putea să intre în istoria Moldovei, apoi să iasă din ea fără a lăsa o urmă. Nici nu vom observa că au fost.&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://railean.net/index.php/open-source-pandemie-coruptie&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Recent am contribuit la un proiect open source menit să <a href="https://github.com/code4moldova/">ajute oamenii în timpul pandemiei COVID-19</a>. Esența acestuia constă în &quot;conectarea&quot; persoanelor blocate în case (de exemplu vârstnicii, bolnavii), cu voluntari care sunt dispuși să aducă produse alimentare și medicamente.</p>
<p>Contribuția mea constituie un Telegram-bot care informează voluntarii despre misiunile pe care trebuie să le îndeplinească (cum Tom Cruise în &quot;Collateral&quot;, avea un gadget care-i spunea ce are de făcut ;-). Poți face click pe imagine pentru e vedea acest bot în acțiune:<br />
<a title="Click pentru video demo" href="/files/ajubot-v0.4.1-screencast.mp4"><img src="/media/blogs/a/quick-uploads/p432/ajubot-exit-survey.png" /><br />
</a></p>
<p>Fiind întrebat despre motivațiea mea de a participa în acest proces, am zis că îmi place să fac ceva care are impact pozitiv asupra societății, și că nu e prima oară când mă implic în astfel de inițiative. Versiunea completă a răspunsului este redată aici:<br />
</p>
<p>În contextul pandemiei, o mare parte a reprezentanților statului și-au demonstrat nu doar <em>incompetența</em>, dar și <em>ostilitatea deschisă</em> față de cetățeni. Aceasta se manifestă prin absența transparenței și răspândirea informațiilor false, cât și prin setarea incorectă a priorităților. Când spun ”incorectă” nu am în vedere ”sub-optimală”, ci chiar ”ostilă” - acțiunile și deciziile lor nu doar că nu ajută poporul, dar ne aduc <em>prejudicii economice</em> și ne expun unui <em>pericol și mai mare</em>. Având în poziții-cheie astfel de ”черезвычайно мощные организаторы” precum Dodon Igor sau Chicu Ion, este evident că cetățenii nu sunt primul punct în agenda lor, decât în cazul când se caută pe cine să învinuiască. (n.r. acei care nu sunt enumerați aici explicit să nu creadă că au fost uitați, pur și simplu lista nemernicilor nu ar trebui să fie mai lungă decât textul propriu-zis).</p>
<p>Trebuie să evidențiez că nimic din ceea ce am scris mai sus nu este o surpriză. Oare avea cineva mari așteptări de la ”tehnocrații” cu diplome false?</p>
<p>Pentru a schimba dinamica în favoarea noastră, trebuie să ne gândim la soluții care exclud din ecuație ”aleșii poporului” (și ”aleșii aleșilor poporului”), astfel încât să nu depindă nimic de ei. Deciziile trebuie să fie luate de <em>oameni a căror piele e în joc</em> - adică de noi, și nu de acei pentru care Moldova este ”planul B” (iar ”planul A” este undeva prin Cehia, unde sunt arene de sport foarte bune, sau în Elveția, unde iarba e mai verde).</p>
<p>Un proiect open-source și liber, precum acesta la care am contribuit, este o încercare de a schimba dinamica jocului. ”<em>Open source</em>” înseamnă că primești nu doar plăcinta, dar și rețeta pregătirii acesteia. ”<em>Liber</em>” înseamnă că nu există constrângeri care să-ți interzică să pregătești propria plăcintă, să modifici rețeta sau s-o transmiți altora.</p>
<p>Un astfel de sistem nu poate fi vândut la preț exagerat (cum 3 semafoare de 4.8 megalei), nu poate fi impus cuiva care nu are nevoie de el (cum ar fi un covor de flori sau o linie galbenă desenată prin oraș), nu poate fi furat sau expropriat (cum o pădure), nu poate fi luat în arendă la preț simbolic (cum un apartament sau un automobil), nu poate fi transformat în bani și depozitat în una din țările care doresc să ”distrugă statalitatea republicii”, nu poate fi ”scris” pe părinți sau pe soția filantropă. Mai mult decât atât, sistemul acesta este absolut transparent și nu ascunde nimic.</p>
<p>Natura open-source a proiectului este un mecanism de protecție - nimeni nu poate parazita proiectul în niciun fel și nu poate împiedica funcționarea acestuia, deoarece acțiunile sunt efectuate de voluntari. Astfel, ”aleșii” s-au ales cu un loc în afara ecuației și nu ne pot ”ajuta” în niciun fel, deoarece interesele lor nu se intersectează cu ale noastre.</p>
<p>Așadar, încurajez pe fiecare dintre noi să se gândească la situația din Moldova în termeni de &quot;cum să-i <strong>excludem din ecuație</strong>&quot;. Trebuie să schimbăm ceva în abordare; altfel, dacă facem exact aceeași ce am făcut până acum, vom primi exact aceeași ce am primit până acum.</p>
<p>În încheiere aș vrea să amintesc cuvintele profetice a unuia din experții de pe prima linie: acești paraziți ar putea să intre în istoria Moldovei, apoi să iasă din ea fără a lăsa o urmă. Nici nu vom observa că au fost.</p><div class="item_footer"><p><small><a href="https://railean.net/index.php/open-source-pandemie-coruptie">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://railean.net/index.php/open-source-pandemie-coruptie#comments</comments>
			<wfw:commentRss>https://railean.net/index.php?tempskin=_rss2&#38;disp=comments&#38;p=432</wfw:commentRss>
		</item>
				<item>
			<title>Notes, The infinite game</title>
			<link>https://railean.net/index.php/the-infinite-game-notes</link>
			<pubDate>Sun, 22 Dec 2019 20:40:00 +0000</pubDate>			<dc:creator>gr8dude</dc:creator>
			<category domain="alt">Thoughts</category>
<category domain="main">Book distillery</category>			<guid isPermaLink="false">431@https://railean.net/</guid>
						<description>&lt;p&gt;The notes are derived from Simon Sinek&#039;s &amp;quot;Infinite game&amp;quot;. The notes are for personal use, but you might find them useful.&lt;/p&gt;
&lt;p&gt;Keep in mind that this book lacks scientific rigour. The stories it provides make intuitive sense, but this wouldn&#039;t pass peer review, if it were a journal paper.&lt;/p&gt;
&lt;h1&gt;General stuff&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Learn to identify the context you&#039;re in.&lt;/li&gt;
&lt;li&gt;Understand what game your opponents are playing and adjust you strategy accordingly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;A just cause&lt;/h1&gt;
&lt;p&gt;Have a greater mission. Examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If an American railroad company didn&#039;t have the mission to &amp;quot;promote the rail&amp;quot;, but &amp;quot;to move people around&amp;quot; , it would have adapted to market changes. Perhaps it could have extended into airplanes, cars. But they were stuck and stagnated (at least in the USA, where railroads &amp;quot;lost&amp;quot; to automobiles and airplanes).&lt;/li&gt;
&lt;li&gt;Sony CD, tape vs Spotify&lt;/li&gt;
&lt;li&gt;Garmin and their dash navigators lost market share as smartphones grew in popularity and replaced dash-mounted GPS devices.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Write down your cause and have it formalized - it will be easier for someone to pick up the torch and carry on after your demise. &lt;/p&gt;
&lt;h1&gt;Other notes&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Shareholder interests vs consumers benefits / Adam Smith vs Milton Friedman.&lt;/li&gt;
&lt;li&gt;Where there is unbalance, there is unrest. &lt;/li&gt;
&lt;li&gt;Will vs resources.&lt;/li&gt;
&lt;li&gt;Fear can push us to choose the best finite option, at  the risk of doing infinite damage. &lt;/li&gt;
&lt;li&gt;Culture = values + behaviour &lt;/li&gt;
&lt;li&gt;Drug dealers aren&#039;t trying to beat the police and win, they&#039;re just trying to stay in the game. So, don&#039;t choose &amp;quot;finite game&amp;quot; tactics against them. &lt;/li&gt;
&lt;li&gt;Lazy leadership = when you solve a problem without understanding the root cause, but by merely instituting a policy and expecting it to work. The time-sheets example, they were introduced without explaining the employees why they are needed and how they will solve the problem. &lt;/li&gt;
&lt;li&gt;The best solution to ethical failures is an infinite game mindset. &lt;/li&gt;
&lt;li&gt;Consider Patagonia stock( they are portrayed as a company with an infinite mindset and good ethics. (just checked it - it is a privately held company that hasn&#039;t gone through an IPO)&lt;/li&gt;
&lt;li&gt;Losing a rival is not necessarily the same as winning the game.&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://railean.net/index.php/the-infinite-game-notes&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<p>The notes are derived from Simon Sinek's &quot;Infinite game&quot;. The notes are for personal use, but you might find them useful.</p>
<p>Keep in mind that this book lacks scientific rigour. The stories it provides make intuitive sense, but this wouldn't pass peer review, if it were a journal paper.</p>
<h1>General stuff</h1>
<ul>
<li>Learn to identify the context you're in.</li>
<li>Understand what game your opponents are playing and adjust you strategy accordingly.</li>
</ul>
<h1>A just cause</h1>
<p>Have a greater mission. Examples:</p>
<ul>
<li>If an American railroad company didn't have the mission to &quot;promote the rail&quot;, but &quot;to move people around&quot; , it would have adapted to market changes. Perhaps it could have extended into airplanes, cars. But they were stuck and stagnated (at least in the USA, where railroads &quot;lost&quot; to automobiles and airplanes).</li>
<li>Sony CD, tape vs Spotify</li>
<li>Garmin and their dash navigators lost market share as smartphones grew in popularity and replaced dash-mounted GPS devices.</li>
</ul>
<p>Write down your cause and have it formalized - it will be easier for someone to pick up the torch and carry on after your demise. </p>
<h1>Other notes</h1>
<ul>
<li>Shareholder interests vs consumers benefits / Adam Smith vs Milton Friedman.</li>
<li>Where there is unbalance, there is unrest. </li>
<li>Will vs resources.</li>
<li>Fear can push us to choose the best finite option, at  the risk of doing infinite damage. </li>
<li>Culture = values + behaviour </li>
<li>Drug dealers aren't trying to beat the police and win, they're just trying to stay in the game. So, don't choose &quot;finite game&quot; tactics against them. </li>
<li>Lazy leadership = when you solve a problem without understanding the root cause, but by merely instituting a policy and expecting it to work. The time-sheets example, they were introduced without explaining the employees why they are needed and how they will solve the problem. </li>
<li>The best solution to ethical failures is an infinite game mindset. </li>
<li>Consider Patagonia stock( they are portrayed as a company with an infinite mindset and good ethics. (just checked it - it is a privately held company that hasn't gone through an IPO)</li>
<li>Losing a rival is not necessarily the same as winning the game.</li>
</ul><div class="item_footer"><p><small><a href="https://railean.net/index.php/the-infinite-game-notes">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://railean.net/index.php/the-infinite-game-notes#comments</comments>
			<wfw:commentRss>https://railean.net/index.php?tempskin=_rss2&#38;disp=comments&#38;p=431</wfw:commentRss>
		</item>
				<item>
			<title>Notes, Richest man in Babylon</title>
			<link>https://railean.net/index.php/richest-man-in-babylon-notes</link>
			<pubDate>Sun, 22 Dec 2019 19:35:00 +0000</pubDate>			<dc:creator>gr8dude</dc:creator>
			<category domain="alt">Thoughts</category>
<category domain="alt">Society</category>
<category domain="alt">Education</category>
<category domain="main">Book distillery</category>			<guid isPermaLink="false">430@https://railean.net/</guid>
						<description>&lt;p&gt;These notes are based on &amp;quot;The richest man in Babylon&amp;quot;, they were written for personal use, but they might be helpful to others as well. The book is written as a series of stories, meant to teach the reader about the optimal ways of managing one&#039;s budget, and what mistakes to avoid.&lt;/p&gt;
&lt;p&gt;In retrospect, it is clear that most people (my past self included) lack training in this area. Therefore:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;These matters should be discussed in schools (perhaps &amp;quot;ora clasei&amp;quot;?), so children have a basic idea of how things work;&lt;/li&gt;
&lt;li&gt;Whenever the opportunity arises, run such classes myself, or lobby for their introduction;&lt;/li&gt;
&lt;li&gt;Share my notes with friends;&lt;/li&gt;
&lt;li&gt;Discuss how my friends and acquaintances manage their budgets.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;General points&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;No one lends his entire fortune, not even to his best friend.&lt;/li&gt;
&lt;li&gt;It costs nothing to ask for advice. &lt;/li&gt;
&lt;li&gt;You can fail to obey the laws of X, or you can fail to observe them. (X could be investment, economics) &lt;/li&gt;
&lt;li&gt;The sun that shines today is the same sun that shone for your grandfathers, and it is the same sun that will shine for the last of your descendants &lt;/li&gt;
&lt;li&gt;Advice is a thing that is freely given away, but watch that you take only what is worth having. (said in the context of taking advice about X from a non-expert in X) &lt;/li&gt;
&lt;li&gt;Willpower to keep going even after several failures&lt;/li&gt;
&lt;li&gt;The greatest wealth is not in the coins already in your purse, but in the continuous influx of what keeps coming into it. (the &amp;quot;golden slaves&amp;quot; that work for me) &lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Basic rules&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Savings - a part of what I earn is mine to keep (treat it like paying yourself).&lt;/li&gt;
&lt;li&gt;Pay yourself first. No less than 1/10th of what you make.&lt;/li&gt;
&lt;li&gt;Learn to live on less than what you make.&lt;/li&gt;
&lt;li&gt;A small and safe return is far more desirable than risk.&lt;/li&gt;
&lt;li&gt;Do not strain to save too much.&lt;/li&gt;
&lt;li&gt;Categorize your expenses: necessary, nice-to-have, luxury; cross out the non-critical ones.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;The 7 cures for a lean purse&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;For each 10 coins you earn, spend only 9 (i.e., save 10%)&lt;/li&gt;
&lt;li&gt;Plan your budget: savings, basic needs, etc; cut out unnecessary stuff&lt;/li&gt;
&lt;li&gt;Put each of your coins into labour, so it works for you. &lt;/li&gt;
&lt;li&gt;Guard your treasure, entrust it only to reliable entities that know what they are doing. &lt;/li&gt;
&lt;li&gt;Live under your own roof. If needed, take a loan to buy it. In that case you will be paying monthly to the creditor, to cover your debt, rather than to the landlord, who actually owns the place. &lt;/li&gt;
&lt;li&gt;Plan for the future, when you are older and cannot work as effectively. Houses and land are a good choice.&lt;/li&gt;
&lt;li&gt;Increase your ability to earn - improve your skills, work more efficiently, work harder. &lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;On luck&lt;/h1&gt;
&lt;p&gt;Those who are &amp;quot;lucky&amp;quot; are just people who could identify an opportunity when it arose, and acted swiftly. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do not rely on blind luck.&lt;/li&gt;
&lt;li&gt;Think of the moments when &amp;quot;success was within reach, but you missed it&amp;quot; - reflect upon that, what made it so? &lt;/li&gt;
&lt;li&gt;Do not procrastinate, take the opportunity when it arises.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Stories from the gold lender&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Investing into emotionally-driven people is not a good endeavour.&lt;/li&gt;
&lt;li&gt;Do not lend to people who don&#039;t know what they are doing, nor have a reliable plan, nor can provide guarantees in case of failure. &lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://railean.net/index.php/richest-man-in-babylon-notes&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<p>These notes are based on &quot;The richest man in Babylon&quot;, they were written for personal use, but they might be helpful to others as well. The book is written as a series of stories, meant to teach the reader about the optimal ways of managing one's budget, and what mistakes to avoid.</p>
<p>In retrospect, it is clear that most people (my past self included) lack training in this area. Therefore:</p>
<ul>
<li>These matters should be discussed in schools (perhaps &quot;ora clasei&quot;?), so children have a basic idea of how things work;</li>
<li>Whenever the opportunity arises, run such classes myself, or lobby for their introduction;</li>
<li>Share my notes with friends;</li>
<li>Discuss how my friends and acquaintances manage their budgets.</li>
</ul>
<h1>General points</h1>
<ul>
<li>No one lends his entire fortune, not even to his best friend.</li>
<li>It costs nothing to ask for advice. </li>
<li>You can fail to obey the laws of X, or you can fail to observe them. (X could be investment, economics) </li>
<li>The sun that shines today is the same sun that shone for your grandfathers, and it is the same sun that will shine for the last of your descendants </li>
<li>Advice is a thing that is freely given away, but watch that you take only what is worth having. (said in the context of taking advice about X from a non-expert in X) </li>
<li>Willpower to keep going even after several failures</li>
<li>The greatest wealth is not in the coins already in your purse, but in the continuous influx of what keeps coming into it. (the &quot;golden slaves&quot; that work for me) </li>
</ul>
<h1>Basic rules</h1>
<ul>
<li>Savings - a part of what I earn is mine to keep (treat it like paying yourself).</li>
<li>Pay yourself first. No less than 1/10th of what you make.</li>
<li>Learn to live on less than what you make.</li>
<li>A small and safe return is far more desirable than risk.</li>
<li>Do not strain to save too much.</li>
<li>Categorize your expenses: necessary, nice-to-have, luxury; cross out the non-critical ones.</li>
</ul>
<h1>The 7 cures for a lean purse</h1>
<ol>
<li>For each 10 coins you earn, spend only 9 (i.e., save 10%)</li>
<li>Plan your budget: savings, basic needs, etc; cut out unnecessary stuff</li>
<li>Put each of your coins into labour, so it works for you. </li>
<li>Guard your treasure, entrust it only to reliable entities that know what they are doing. </li>
<li>Live under your own roof. If needed, take a loan to buy it. In that case you will be paying monthly to the creditor, to cover your debt, rather than to the landlord, who actually owns the place. </li>
<li>Plan for the future, when you are older and cannot work as effectively. Houses and land are a good choice.</li>
<li>Increase your ability to earn - improve your skills, work more efficiently, work harder. </li>
</ol>
<h1>On luck</h1>
<p>Those who are &quot;lucky&quot; are just people who could identify an opportunity when it arose, and acted swiftly. </p>
<ul>
<li>Do not rely on blind luck.</li>
<li>Think of the moments when &quot;success was within reach, but you missed it&quot; - reflect upon that, what made it so? </li>
<li>Do not procrastinate, take the opportunity when it arises.</li>
</ul>
<h1>Stories from the gold lender</h1>
<ul>
<li>Investing into emotionally-driven people is not a good endeavour.</li>
<li>Do not lend to people who don't know what they are doing, nor have a reliable plan, nor can provide guarantees in case of failure. </li>
</ul>
<div class="item_footer"><p><small><a href="https://railean.net/index.php/richest-man-in-babylon-notes">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://railean.net/index.php/richest-man-in-babylon-notes#comments</comments>
			<wfw:commentRss>https://railean.net/index.php?tempskin=_rss2&#38;disp=comments&#38;p=430</wfw:commentRss>
		</item>
				<item>
			<title>Și totuși</title>
			<link>https://railean.net/index.php/hai-sa-ti-spun-ce-e-iubirea</link>
			<pubDate>Tue, 26 Nov 2019 06:13:00 +0000</pubDate>			<dc:creator>gr8dude</dc:creator>
			<category domain="alt">Thoughts</category>
<category domain="main">Organized rhyme</category>
<category domain="alt">Photo / graphics</category>			<guid isPermaLink="false">429@https://railean.net/</guid>
						<description>&lt;p&gt;Şi totuşi hai să-ţi spun ce e iubirea,&lt;br /&gt;
fiindcă adevăru-i complicat.&lt;br /&gt;
Iubirea nu e cum în imnuri scriu poeţii&lt;br /&gt;
şi nici cum marii meşteri au pictat.&lt;/p&gt;
&lt;p&gt;Şi nu e nici cum cântă trubadurul,&lt;br /&gt;
şi nici aşa cum în romane-i explicat.&lt;br /&gt;
Nici pe departe nu-i &lt;a href=&quot;http://railean.net/index.php/algoritmul&quot;&gt;cum pare în &amp;quot;reţele&amp;quot;&lt;/a&gt;,&lt;br /&gt;
şi filmele ne-au dezorientat...&lt;/p&gt;
&lt;p&gt;Iar dac-ar fi s-asculţi ce spune lumea&lt;br /&gt;
s-accepţi cum ţi se dă, denaturat,&lt;br /&gt;
să te găteşti de o dezamăgire,&lt;br /&gt;
căci zborul tau va fi abrupt scurtat.&lt;/p&gt;
&lt;p&gt;Şi totuşi hai să-ţi spun ce e iubirea,&lt;br /&gt;
să ştii că ai ieşire din impas:&lt;br /&gt;
exclude tot ce sigur ştii că nu e,&lt;br /&gt;
şi-atunci iubirea-i tot ce a rămas.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.openprocessing.org/sketch/795468&quot;&gt;&lt;img alt=&quot;O față care stă la oglindă și se gândește la definiția iubirii&quot; src=&quot;http://railean.net/media/blogs/a/ce-e-iubirea.png&quot; width=&quot;400&quot; height=&quot;766&quot; title=&quot;Click to see what happens next&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://railean.net/index.php/hai-sa-ti-spun-ce-e-iubirea&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Şi totuşi hai să-ţi spun ce e iubirea,<br />
fiindcă adevăru-i complicat.<br />
Iubirea nu e cum în imnuri scriu poeţii<br />
şi nici cum marii meşteri au pictat.</p>
<p>Şi nu e nici cum cântă trubadurul,<br />
şi nici aşa cum în romane-i explicat.<br />
Nici pe departe nu-i <a href="http://railean.net/index.php/algoritmul">cum pare în &quot;reţele&quot;</a>,<br />
şi filmele ne-au dezorientat...</p>
<p>Iar dac-ar fi s-asculţi ce spune lumea<br />
s-accepţi cum ţi se dă, denaturat,<br />
să te găteşti de o dezamăgire,<br />
căci zborul tau va fi abrupt scurtat.</p>
<p>Şi totuşi hai să-ţi spun ce e iubirea,<br />
să ştii că ai ieşire din impas:<br />
exclude tot ce sigur ştii că nu e,<br />
şi-atunci iubirea-i tot ce a rămas.</p>
<p><a href="https://www.openprocessing.org/sketch/795468"><img alt="O față care stă la oglindă și se gândește la definiția iubirii" src="http://railean.net/media/blogs/a/ce-e-iubirea.png" width="400" height="766" title="Click to see what happens next" /></a></p><div class="item_footer"><p><small><a href="https://railean.net/index.php/hai-sa-ti-spun-ce-e-iubirea">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://railean.net/index.php/hai-sa-ti-spun-ce-e-iubirea#comments</comments>
			<wfw:commentRss>https://railean.net/index.php?tempskin=_rss2&#38;disp=comments&#38;p=429</wfw:commentRss>
		</item>
				<item>
			<title>The loop</title>
			<link>https://railean.net/index.php/the-loop</link>
			<pubDate>Tue, 19 Nov 2019 05:59:00 +0000</pubDate>			<dc:creator>gr8dude</dc:creator>
			<category domain="alt">Thoughts</category>
<category domain="main">Organized rhyme</category>			<guid isPermaLink="false">425@https://railean.net/</guid>
						<description>&lt;p&gt;Take off your smile&lt;br /&gt;
for a while&lt;br /&gt;
you grew accustomed to it...&lt;br /&gt;
Have you already forgotten the face&lt;br /&gt;
that quietly suffers beneath?&lt;/p&gt;
&lt;p&gt;Take a moment to think&lt;br /&gt;
for a while&lt;br /&gt;
and question the path that you chose.&lt;br /&gt;
Would you have walked it again, if you could?&lt;br /&gt;
Or left it to vultures and crows?&lt;/p&gt;
&lt;p&gt;Take a break, catch your breath&lt;br /&gt;
for a while,&lt;br /&gt;
get out of this torturing wheel!&lt;br /&gt;
Whose race are you running, again?&lt;br /&gt;
Is the finish line even real?&lt;/p&gt;
&lt;p&gt;Take a step back&lt;br /&gt;
for a while,&lt;br /&gt;
and look at yourself from aside.&lt;br /&gt;
Who is the person in front of your eyes?&lt;br /&gt;
Is it someone that you recognized?&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Take a chance, try a change,&lt;br /&gt;
and defy the programming.&lt;br /&gt;
Use your free will while you have it.&lt;br /&gt;
Break the loop, dammit!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://railean.net/media/blogs/a/animatrix.gif&quot;&gt;&lt;img src=&quot;http://railean.net/media/blogs/a/animatrix-start.gif&quot; width=&quot;750px&quot; alt=&quot;A generated sketch-animation that gradually draws a scene from the Animatrix film&quot; title=&quot;Click to see what happens next&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://railean.net/index.php/the-loop&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Take off your smile<br />
for a while<br />
you grew accustomed to it...<br />
Have you already forgotten the face<br />
that quietly suffers beneath?</p>
<p>Take a moment to think<br />
for a while<br />
and question the path that you chose.<br />
Would you have walked it again, if you could?<br />
Or left it to vultures and crows?</p>
<p>Take a break, catch your breath<br />
for a while,<br />
get out of this torturing wheel!<br />
Whose race are you running, again?<br />
Is the finish line even real?</p>
<p>Take a step back<br />
for a while,<br />
and look at yourself from aside.<br />
Who is the person in front of your eyes?<br />
Is it someone that you recognized?</p>
<hr />
<p>Take a chance, try a change,<br />
and defy the programming.<br />
Use your free will while you have it.<br />
Break the loop, dammit!</p>
<p><a href="http://railean.net/media/blogs/a/animatrix.gif"><img src="http://railean.net/media/blogs/a/animatrix-start.gif" width="750px" alt="A generated sketch-animation that gradually draws a scene from the Animatrix film" title="Click to see what happens next" /></a><br />
</p><div class="item_footer"><p><small><a href="https://railean.net/index.php/the-loop">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://railean.net/index.php/the-loop#comments</comments>
			<wfw:commentRss>https://railean.net/index.php?tempskin=_rss2&#38;disp=comments&#38;p=425</wfw:commentRss>
		</item>
				<item>
			<title>Notes on how to have impossible conversations</title>
			<link>https://railean.net/index.php/how-to-have-impossible-conversations-notes</link>
			<pubDate>Mon, 18 Nov 2019 04:37:00 +0000</pubDate>			<dc:creator>gr8dude</dc:creator>
			<category domain="alt">Thoughts</category>
<category domain="main">Book distillery</category>			<guid isPermaLink="false">428@https://railean.net/</guid>
						<description>&lt;p&gt;These are my notes about &amp;quot;How to have impossible conversations&amp;quot;, by Peter Boghossian and James A. Lindsay. After reading Boghossian&#039;s previous book, I had no doubts that this one would be useful, and I wasn&#039;t disappointed!&lt;/p&gt;
&lt;p&gt;It is full of practical tips and examples and I recommend it to anyone who enjoys discussing controversial subjects. The notes are for personal use, they make sense to me, they may not make sense to you. Read the book to make your own impression.&lt;/p&gt;
&lt;p&gt;p.s. this was written on a phone, so there might be typos or short-hand notation that doesn&#039;t make sense.&lt;/p&gt;

&lt;hr /&gt;
&lt;h1&gt;Basics&lt;/h1&gt;
&lt;p&gt;Build rapport&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Prioritize friendship above scoring rhetoric points &lt;/li&gt;
&lt;li&gt;Don&#039;t parallel-talk (if they say &amp;quot;I went to Cuba&amp;quot;, ask them about their impressions, instead of telling them how you went to Cuba)&lt;/li&gt;
&lt;li&gt;Don&#039;t start a deep conversation if you are not ready to invest time into it. If you know you don&#039;t have sufficient time, use it to build raport or catch up&lt;/li&gt;
&lt;li&gt;Be ready to talk about something else&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Listen&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;If you can&#039;t listen, you can&#039;t understand&lt;/li&gt;
&lt;li&gt;If you start talking simultaneously, don&#039;t continue, let them go ahead &lt;/li&gt;
&lt;li&gt;Eye contact &lt;/li&gt;
&lt;li&gt;Do not finish their sentences [unless they are looking for a word and you know it] &lt;/li&gt;
&lt;li&gt;Pause &lt;/li&gt;
&lt;li&gt;Do not rush to fill silence with words&lt;/li&gt;
&lt;li&gt;See it from the other perspective - it is hard to antagonize someone who is a good listener &lt;/li&gt;
&lt;li&gt;If you are distracted by something in your environment, turn your back to it, or explicitly tell the interlocutor that X is distracting you. This might form a bond, if they too are distracted by it. &lt;/li&gt;
&lt;li&gt;When something is not clear, say &amp;quot;I do not understand X&amp;quot; instead of &amp;quot;what you said is unclear&amp;quot; &lt;/li&gt;
&lt;li&gt;When resuming your sentence after both started talking simultaneously [and you paused to listen], use different wording as opposed to saying the same phrase - this might be perceived as &amp;quot;everything that was said in the meantime went to /dev/null&amp;quot; &lt;/li&gt;
&lt;li&gt;If you get tired or are distracted: ask them to repeat &lt;/li&gt;
&lt;li&gt;If you feel you can&#039;t handle it anymore - end the conversation &lt;/li&gt;
&lt;li&gt;Don&#039;t use your phone when having a conversation, even if you want to look up some facts&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;How and when to end a conversation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;When you mainly experience anger or frustration - stop the convo&lt;/li&gt;
&lt;li&gt;When you sense they want to stop - don&#039;t force them to go on&lt;/li&gt;
&lt;li&gt;When you see that you have succeeded in instilling doubt - that&#039;s enough, do not try to do a &amp;quot;fatality&amp;quot; right then, right there &lt;/li&gt;
&lt;li&gt;Thank them for the convo [unless you were harassed] &lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Chapter 2&lt;/h1&gt;
&lt;p&gt;The gift of doubt. You gotta have it yourself before you attempt to give it to someone. &lt;/p&gt;
&lt;h2&gt;Modeling&lt;/h2&gt;
&lt;p&gt;Model the behaviour you want to see in your partner (i. e. Do it yourself and set an example). This implies being open to changing your own mind. &lt;/p&gt;
&lt;p&gt;The example where the Muslim community leader would dodge the question &amp;quot;do you believe that women should be stoned to death for adultery?&amp;quot;. The approach was to make them ask {me} the question, hear me say &amp;quot;no&amp;quot;, then asking them to provide an analogous answer.&lt;/p&gt;
&lt;p&gt;Ask them to ask you. &lt;/p&gt;
&lt;h2&gt;Ignorance of ignorance&lt;/h2&gt;
&lt;p&gt;The &amp;quot;unread library effect&amp;quot; = illusion of explanatory depth.&lt;/p&gt;
&lt;p&gt;Examples: Explain how a toilet works. Draw a bike schema.&lt;/p&gt;
&lt;p&gt;Experiment:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Before asking the question, ask them about their confidence in knowing the material&lt;/li&gt;
&lt;li&gt;Ask the question&lt;/li&gt;
&lt;li&gt;Ask about their confidence again (-:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Usually after step 3 the confidence drops significantly.&lt;/p&gt;
&lt;p&gt;How to apply this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ask someone to talk in depth about the subject&lt;/li&gt;
&lt;li&gt;let them reach their own limits and realize that actually they don&#039;t know the subject well&lt;/li&gt;
&lt;li&gt;the benefit is that they don&#039;t feel pressured, because they did the talking themselves ;-)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this case you modelled ignorance and lead them to exposing the &amp;quot;unread library&amp;quot; effect themselves.&lt;/p&gt;
&lt;h2&gt;Definitions of words&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Define words upfront&lt;/li&gt;
&lt;li&gt;Beware of the context in which the word is used&lt;/li&gt;
&lt;li&gt;Use &lt;em&gt;their&lt;/em&gt; definitions. If you cannot accept their definition - move on to another issue or end the conversation (I disagree: why not settle for a definition that all accept?)&lt;/li&gt;
&lt;li&gt;Beware of the moral implications of the word. Someone might fall into a trap - start with a moral position, work backwards from it in order to establish a position (the moral mind overrides the rational one). Example {I believe good people believe X. I think I am a good person, therefore I must believe in X. Now I will cherry-pick evidence for X}&lt;/li&gt;
&lt;li&gt;Ask questions [the socratic method].&lt;/li&gt;
&lt;li&gt;Rely on open-ended questions that invite conversations. &amp;quot;&lt;strong&gt;calibrated questions&lt;/strong&gt;&amp;quot;, usually start with how/what, thus they cannot be answered with a simple yes/no.&lt;/li&gt;
&lt;li&gt;However, keep in mind that sometimes yes/no questions are very useful (see the example about stoning women)&lt;/li&gt;
&lt;li&gt;Avoid &amp;quot;loaded questions&amp;quot; (one with a hidden agenda), like &amp;quot;how do you think the Republicans ended up disregarding the poor?&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nobody cares how much you know, until they know how much you care&lt;/strong&gt;. Care not only about the subject, but also about your conversation partner &lt;/li&gt;
&lt;li&gt;Identify extremism and detach yourself from it (if there are extremists on your side, you might be seen as one of them). Refrain from pointing out extremists on their side, let them do it themselves. &lt;/li&gt;
&lt;li&gt;Never defend indefensible behaviour &lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Whataboutism&lt;/h2&gt;
&lt;p&gt;This can happen when you blame someone specific. That&#039;s the problem with blame. &lt;/p&gt;
&lt;p&gt;Instead, think of it in terms of &lt;strong&gt;contributing&lt;/strong&gt; factors (as there are usually more than one). &lt;/p&gt;
&lt;p&gt;Example: what factors in the strategy of the democrats lead to a defeat in elections? (vs. It is Clinton&#039;s fault). This invites the Republicans to provide an outside perspective, and invites the democrats to reflect. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Leverage calibrated questions: what factors lead to...? &lt;/li&gt;
&lt;li&gt;Avoid blaming a specific actor or saying &amp;quot;X caused Y&amp;quot;, as there are usually multiple factors involved. Besides, proving causality is difficult, and it becomes your burden. &lt;/li&gt;
&lt;li&gt;When you are tempted to blame, refrain from doing so, however you can: &amp;quot;because I feel strongly tempted to blame X, can you explain to me the logic X uses to justify their actions?&amp;quot; &lt;/li&gt;
&lt;li&gt;Focus on epistemology, how they know what they know&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Probing one&#039;s epistemology is perceived less threatening than directly challenging their beliefs&lt;/strong&gt;&lt;/p&gt;
&lt;h1&gt;Chapter 4&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Let people be wrong&lt;/strong&gt;, don&#039;t necessarily try to make them right&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Say &amp;quot;I hear you&amp;quot; and let them speak, don&#039;t interrupt&lt;/li&gt;
&lt;li&gt;If you don&#039;t understand, pin it in you and say &amp;quot;I don&#039;t understand&amp;quot; instead of telling them &amp;quot;you are not making sense&amp;quot;&lt;/li&gt;
&lt;li&gt;If there are some hot, irreconcilable topics, that is an invitation to a conversation&lt;/li&gt;
&lt;li&gt;&amp;quot;You can be right XOR you can be married&amp;quot; :-)&lt;/li&gt;
&lt;li&gt;Build &amp;quot;golden bridges&amp;quot; - a way for someone to change their mind without embarrassment. Don&#039;t make them &amp;quot;pay&amp;quot; when they cross the bridge (for example, by saying &amp;quot;it was about time!&amp;quot;)&lt;/li&gt;
&lt;li&gt;Reference your own ignorance: &amp;quot;I used to believe x, but when I learned y...&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Language aspects&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Avoid &amp;quot;you&amp;quot;, refer to &amp;quot;one can...&amp;quot; or rely on 3rd parties &lt;/li&gt;
&lt;li&gt;Avoid &amp;quot;you&amp;quot;, say &amp;quot;that belief&amp;quot; or &amp;quot;that statement&amp;quot; instead of &amp;quot;your statement&amp;quot; &lt;/li&gt;
&lt;li&gt;Use collaborative language, leverage &amp;quot;we&amp;quot; &lt;/li&gt;
&lt;li&gt;Avoid labeling a person based on a single belief&lt;/li&gt;
&lt;li&gt;Reframe the matter on the common ground: &amp;quot;ultimately, we both aim for world peace, but we have some differences when it comes to achieving those goals, can we talk more directly about the ways we can achieve a balance?&amp;quot;&lt;/li&gt;
&lt;li&gt;Change your mind on the spot - be ready to do that, when it is relevant. This signalizes the partner that it is OK to do that.&lt;/li&gt;
&lt;li&gt;Use scales, figure out how confident one is in their belief. &amp;quot;on a scale from 1 to 10, how confident are you that belief is true?&amp;quot; &lt;/li&gt;
&lt;li&gt;When they answer say, 8,ask &amp;quot;what would it take to bring it down to 6?&amp;quot;, then ask about something bigger - &amp;quot;why not a 9?&amp;quot;&lt;/li&gt;
&lt;li&gt;If they&#039;re above 6 on this scale, ask &amp;quot;I&#039;m 3 on this scale, I&#039;m not sure how I would get to where you are, at a 9. I wanna see what I&#039;m missing, Can you walk me through it?&amp;quot; (and let them do the work)&lt;/li&gt;
&lt;li&gt;Keep a log, note down what worked in raising doubt, and what didn&#039;t&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Outsourcing&lt;/h2&gt;
&lt;p&gt;Focus on what source of info we can both rely on, to have a common ground. This might make the partner think about matters of reliability and trustworthiness of information sources.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Make them look for evidence supporting their claim. If they will fail to find any - it could raise doubts.&lt;/li&gt;
&lt;li&gt;How would an external observer determine what source of info is reliable?&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;Chapter 5&lt;/h1&gt;
&lt;p&gt;These are Rapoport&#039;s rules:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Understand and express the partner&#039;s point of view in such a clear manner, that even they say &amp;quot;I wish I thought of putting it that way!&amp;quot;&lt;/li&gt;
&lt;li&gt;List points of agreement, especially the non-mainstream ones&lt;/li&gt;
&lt;li&gt;List everything you&#039;ve learned from the partner&lt;/li&gt;
&lt;li&gt;Only then can you express any form of rebuttal or criticism&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Avoid facts&lt;/strong&gt; when dealing with people who say &amp;quot;nothing will change my mind&amp;quot; or &amp;quot;no evidence will change my mind&amp;quot;. &lt;/p&gt;
&lt;p&gt;If their beliefs were formed without taking evidence into account, no amount of evidence will make them change their mind. They simply operate in another dimension. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Only present facts when the partner explicitly requests them&lt;/li&gt;
&lt;li&gt;and when you do so, encourage them to independently verify that information &lt;/li&gt;
&lt;li&gt;model intellectual humility, &amp;quot;I could be wrong about this&amp;quot; or &amp;quot;to the best of my knowledge&amp;quot;&lt;/li&gt;
&lt;li&gt;be ready to say &amp;quot;I don&#039;t have that information, but I will be glad to get back to you when I do&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;disconfirmation: under what conditions would you say the belief is false&lt;/strong&gt; - an effective way to take a step towards doubt. Basically, it is &amp;quot;falsifiability&amp;quot; in science.
If something is unfalsifiable, it is regarded as the absolute, unconditional truth. &lt;/p&gt;
&lt;h2&gt;Types of disconfirmable beliefs&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Not at all&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This claim makes an absolutely certain statement about the universe. This is epistemic/doxastic closure. &lt;/li&gt;
&lt;li&gt;Don&#039;t deal with it by bringing counter evidence. Form a question about how the belief could be an error. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disconfirmable under wildly implausible conditions&lt;/strong&gt;
Example: in what circumstances would you reject the belief that Jesus was resurrected? The answer might be &amp;quot;show me the bones of Christ&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disconfirmable, here&#039;s what it would take&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Clarify, to make sure you really got it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Techniques to use at the end &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;epistemology&lt;/strong&gt;: then the belief is not held on the basis of evidence, right? Are you as closed to revising other beliefs, or just this one? What makes this one unique? What are examples of other beliefs you are not willing to change? &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;morality&lt;/strong&gt;: how is it a virtue not to revise this belief? Would you be a good person if you didn&#039;t hold this belief? Are there examples of those who don&#039;t have this belief and are good people? &lt;/li&gt;
&lt;li&gt;think back N years ago. Since that time, have any of your beliefs changed? Are all of your beliefs identical now to what they were 10 years ago? &lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;If yes, go back to N+delta and repeat &lt;/li&gt;
&lt;li&gt;if no, N years ago you had some beliefs that you don&#039;t hold now. Wouldn&#039;t it be possible that N years from now you will look at today and say the same thing? &lt;/li&gt;
&lt;li&gt;use &amp;quot;untrue&amp;quot; as a softer version of &amp;quot;false&amp;quot; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If they say they&#039;ve had the same beliefs forever, they are either lying to you, or to themselves or are über doxastically closed. Consider closing the conversation, you did what could be done at this stage.&lt;/p&gt;
&lt;h2&gt;Eliminate &quot;but&quot; from your vocabulary&lt;/h2&gt;
&lt;p&gt;For example, &amp;quot;yes, but what about those who buy weapons illegally?&amp;quot; → &amp;quot;yes, and what about those who...?&amp;quot; &lt;/p&gt;
&lt;p&gt;Top it up a notch, by switching to &amp;quot;interesting, and what do you think of..?&amp;quot;&lt;/p&gt;
&lt;p&gt;Ury Fisher&#039;s twist: &amp;quot;I can see how you feel strongly about this, and I respect that; let me tell you, however, how it looks from my angle&amp;quot;.
Or a more advanced version: &amp;quot;... If you don&#039;t mind, let me...&amp;quot; &lt;/p&gt;
&lt;h1&gt;Chapter 6&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Alter casting&lt;/strong&gt; - cast a person into an alternate role, from which they are easier to be influenced. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;obvious &lt;em&gt;ethical&lt;/em&gt; implications, you can manipulate people ore damage them, by casting them into negative or self-destructive roles. For example, when you call someone narrow-minded. &lt;/li&gt;
&lt;li&gt;take their &lt;em&gt;preferred option off the table&lt;/em&gt;. For example: &amp;quot;I hear you, I am curious about your opinion. Let&#039;s say you&#039;re a senator  in an immigration committee and you have the task to come up with a solution to our immigration problem. You&#039;re there because you are a good problem solver and your opinion is important to the committee. Suppose you know the senate will absolutely not accept the option of deportation, your job is to come up with the best solution you can, except in extreme cases like for murderers. What would you recommend, and why?&amp;quot;. &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Tips from hostage negotiations&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;minimal encourages&lt;/strong&gt; - &amp;quot;ok&amp;quot;, &amp;quot;I hear you&amp;quot; - simple way to let your parter know that you are listening&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;mirroring&lt;/strong&gt; - repeat the last few words someone said. Do not overuse it, no more than 4 times in a 7min conversation. Give it a positive spin, when necessary. Example: &amp;quot;I am just so sick and tired of these people pushing everyone around to have their way → get their way?&amp;quot;. Or, &amp;quot;I have to get out of here with the money, it&#039;s for my kid, it&#039;s not for me. → for your kid; -yeah, he&#039;s got a fever  and we don&#039;t have any money for the pills, and we don&#039;t have any...&amp;quot;. Don&#039;t say &amp;quot;you expect me to believe that it&#039;s not for you?&amp;quot;. Just use this as an opportunity to build rapport and keep them talking, perhaps they will provide more useful information.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;emotional labeling&lt;/strong&gt; - use when the partner expresses strong feelings that need to be defused. This recognizes feelings without judging them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;build golden bridges&lt;/strong&gt; to allow them to save face &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;deal with small issues first&lt;/strong&gt; - create a climate of success, by dealing with and solving small issues first. Then break down big problems into smaller ones, that are easy to solve. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;use specific examples rather than statistics&lt;/strong&gt; - stories are vivid and easy to remember, while statistics are raw numbers and are not as impressive.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Probe the limits&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;by doing so, you might reveal that they are not actually aligned with what they say they believe. &lt;/li&gt;
&lt;li&gt;humans prefer to stick to their inconsistency even if you point it out to them &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;verbal behaviour&lt;/strong&gt; - what someone says they believe is not what they actually live by. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;How to unmask/deal with such cases:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Attempt to express their opinion so clearly and vividly, that they say &amp;quot;thanks, I wish I could express it myself that way&amp;quot;. (Rapoport&#039;s first rule) &lt;/li&gt;
&lt;li&gt;Explicitly confirm that you understood their belief correctly. Optionally - if the belief is something that targets you personally (e. g. you atheists), ask for permission to ask questions so that you may learn. Example: &amp;quot;I am not trying to convince you of anything, I am curious and would like to ask questions to learn more&amp;quot;. Optionally: find out how they came to this belief and how long ago.  This will give you clues of what to probe further. &lt;/li&gt;
&lt;li&gt;Understand the limit of the belief in practice. Ask about edge cases. Example: &amp;quot;if you had an emergency and your doctor was an atheist, would you believe them if they told you that you need an urgent blood transfusion to save your life?&amp;quot; or &amp;quot;if you were after a period of starvation would you be worried if you knew the food you eat was cooked by an atheist?&amp;quot;. Or a follow up &amp;quot;if all the other doctors were busy, would you accept to be seen by an atheist doctor?&amp;quot; &lt;/li&gt;
&lt;li&gt;Ask &amp;quot;is there any circumstances that would push you towards acting inconsistent with the belief?&amp;quot; and have them generate examples. If they say &amp;quot;no&amp;quot;, continue with gentle examples like the ones from the previous point, &amp;quot;would you fly on a plane piloted by an atheist?&amp;quot; or further &amp;quot;what if  you knew that someone from the design team was an atheist?&amp;quot;. Then ask about how they would uphold their rules in practice: &amp;quot;how do you figure out the pilot&#039;s religious affiliation when you book tickets?&amp;quot; &lt;strong&gt;otherwise&lt;/strong&gt; if they say yes, ask &amp;quot;can you give me examples of other things that you believe but don&#039;t act upon? What makes this special?&amp;quot;&lt;/li&gt;
&lt;li&gt;At this point it should be established that  it is impossible to sincerely hold a belief and actually live by it. If they ACK this is the case, ask them how they decide whether they will act on a belief or not (that is, which ones are enforced and which ones are not? What makes them special?) for example: &amp;quot;If I am hearing you right, sometimes it is OK to take treatment from an atheist doctor and sometimes there are good reasons not to trust their opinion at all. How can we determine which time is which?&amp;quot;
&lt;strong&gt;otherwise&lt;/strong&gt; if it hasn&#039;t been established, either you misunderstood something, or they are really living in full accord with their belief. Or they are lying or are delusional. &lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Counter-intervention strategies&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Go with it&lt;/em&gt; - you are almost guaranteed to learn something new, you might even change your mind. You might see what techniques they apply, how they apply them and thus improve your own skills. &lt;/p&gt;
&lt;p&gt;&lt;em&gt;Stonewalling&lt;/em&gt; - if there is no reaction or feedback, there is no intervention going on. So you can deflect such interventions on you by not responding. Or by providing closed (not open-ended) answers like &amp;quot;yeah&amp;quot; or &amp;quot;not really&amp;quot;. &lt;/p&gt;
&lt;p&gt;The remaining sections are about techniques of detecting that someone applies this method on you, and how to deal with it.&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://railean.net/index.php/how-to-have-impossible-conversations-notes&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<p>These are my notes about &quot;How to have impossible conversations&quot;, by Peter Boghossian and James A. Lindsay. After reading Boghossian's previous book, I had no doubts that this one would be useful, and I wasn't disappointed!</p>
<p>It is full of practical tips and examples and I recommend it to anyone who enjoys discussing controversial subjects. The notes are for personal use, they make sense to me, they may not make sense to you. Read the book to make your own impression.</p>
<p>p.s. this was written on a phone, so there might be typos or short-hand notation that doesn't make sense.</p>

<hr />
<h1>Basics</h1>
<p>Build rapport</p>
<ol>
<li>Prioritize friendship above scoring rhetoric points </li>
<li>Don't parallel-talk (if they say &quot;I went to Cuba&quot;, ask them about their impressions, instead of telling them how you went to Cuba)</li>
<li>Don't start a deep conversation if you are not ready to invest time into it. If you know you don't have sufficient time, use it to build raport or catch up</li>
<li>Be ready to talk about something else</li>
</ol>
<h2>Listen</h2>
<ul>
<li>If you can't listen, you can't understand</li>
<li>If you start talking simultaneously, don't continue, let them go ahead </li>
<li>Eye contact </li>
<li>Do not finish their sentences [unless they are looking for a word and you know it] </li>
<li>Pause </li>
<li>Do not rush to fill silence with words</li>
<li>See it from the other perspective - it is hard to antagonize someone who is a good listener </li>
<li>If you are distracted by something in your environment, turn your back to it, or explicitly tell the interlocutor that X is distracting you. This might form a bond, if they too are distracted by it. </li>
<li>When something is not clear, say &quot;I do not understand X&quot; instead of &quot;what you said is unclear&quot; </li>
<li>When resuming your sentence after both started talking simultaneously [and you paused to listen], use different wording as opposed to saying the same phrase - this might be perceived as &quot;everything that was said in the meantime went to /dev/null&quot; </li>
<li>If you get tired or are distracted: ask them to repeat </li>
<li>If you feel you can't handle it anymore - end the conversation </li>
<li>Don't use your phone when having a conversation, even if you want to look up some facts</li>
</ul>
<h2>How and when to end a conversation</h2>
<ul>
<li>When you mainly experience anger or frustration - stop the convo</li>
<li>When you sense they want to stop - don't force them to go on</li>
<li>When you see that you have succeeded in instilling doubt - that's enough, do not try to do a &quot;fatality&quot; right then, right there </li>
<li>Thank them for the convo [unless you were harassed] </li>
</ul>
<h1>Chapter 2</h1>
<p>The gift of doubt. You gotta have it yourself before you attempt to give it to someone. </p>
<h2>Modeling</h2>
<p>Model the behaviour you want to see in your partner (i. e. Do it yourself and set an example). This implies being open to changing your own mind. </p>
<p>The example where the Muslim community leader would dodge the question &quot;do you believe that women should be stoned to death for adultery?&quot;. The approach was to make them ask {me} the question, hear me say &quot;no&quot;, then asking them to provide an analogous answer.</p>
<p>Ask them to ask you. </p>
<h2>Ignorance of ignorance</h2>
<p>The &quot;unread library effect&quot; = illusion of explanatory depth.</p>
<p>Examples: Explain how a toilet works. Draw a bike schema.</p>
<p>Experiment:</p>
<ol>
<li>Before asking the question, ask them about their confidence in knowing the material</li>
<li>Ask the question</li>
<li>Ask about their confidence again (-:</li>
</ol>
<p>Usually after step 3 the confidence drops significantly.</p>
<p>How to apply this:</p>
<ul>
<li>ask someone to talk in depth about the subject</li>
<li>let them reach their own limits and realize that actually they don't know the subject well</li>
<li>the benefit is that they don't feel pressured, because they did the talking themselves ;-)</li>
</ul>
<p>In this case you modelled ignorance and lead them to exposing the &quot;unread library&quot; effect themselves.</p>
<h2>Definitions of words</h2>
<ol>
<li>Define words upfront</li>
<li>Beware of the context in which the word is used</li>
<li>Use <em>their</em> definitions. If you cannot accept their definition - move on to another issue or end the conversation (I disagree: why not settle for a definition that all accept?)</li>
<li>Beware of the moral implications of the word. Someone might fall into a trap - start with a moral position, work backwards from it in order to establish a position (the moral mind overrides the rational one). Example {I believe good people believe X. I think I am a good person, therefore I must believe in X. Now I will cherry-pick evidence for X}</li>
<li>Ask questions [the socratic method].</li>
<li>Rely on open-ended questions that invite conversations. &quot;<strong>calibrated questions</strong>&quot;, usually start with how/what, thus they cannot be answered with a simple yes/no.</li>
<li>However, keep in mind that sometimes yes/no questions are very useful (see the example about stoning women)</li>
<li>Avoid &quot;loaded questions&quot; (one with a hidden agenda), like &quot;how do you think the Republicans ended up disregarding the poor?&quot;</li>
<li><strong>Nobody cares how much you know, until they know how much you care</strong>. Care not only about the subject, but also about your conversation partner </li>
<li>Identify extremism and detach yourself from it (if there are extremists on your side, you might be seen as one of them). Refrain from pointing out extremists on their side, let them do it themselves. </li>
<li>Never defend indefensible behaviour </li>
</ol>
<h2>Whataboutism</h2>
<p>This can happen when you blame someone specific. That's the problem with blame. </p>
<p>Instead, think of it in terms of <strong>contributing</strong> factors (as there are usually more than one). </p>
<p>Example: what factors in the strategy of the democrats lead to a defeat in elections? (vs. It is Clinton's fault). This invites the Republicans to provide an outside perspective, and invites the democrats to reflect. </p>
<ul>
<li>Leverage calibrated questions: what factors lead to...? </li>
<li>Avoid blaming a specific actor or saying &quot;X caused Y&quot;, as there are usually multiple factors involved. Besides, proving causality is difficult, and it becomes your burden. </li>
<li>When you are tempted to blame, refrain from doing so, however you can: &quot;because I feel strongly tempted to blame X, can you explain to me the logic X uses to justify their actions?&quot; </li>
<li>Focus on epistemology, how they know what they know</li>
</ul>
<p><strong>Probing one's epistemology is perceived less threatening than directly challenging their beliefs</strong></p>
<h1>Chapter 4</h1>
<p><strong>Let people be wrong</strong>, don't necessarily try to make them right</p>
<ol>
<li>Say &quot;I hear you&quot; and let them speak, don't interrupt</li>
<li>If you don't understand, pin it in you and say &quot;I don't understand&quot; instead of telling them &quot;you are not making sense&quot;</li>
<li>If there are some hot, irreconcilable topics, that is an invitation to a conversation</li>
<li>&quot;You can be right XOR you can be married&quot; :-)</li>
<li>Build &quot;golden bridges&quot; - a way for someone to change their mind without embarrassment. Don't make them &quot;pay&quot; when they cross the bridge (for example, by saying &quot;it was about time!&quot;)</li>
<li>Reference your own ignorance: &quot;I used to believe x, but when I learned y...&quot;</li>
</ol>
<h2>Language aspects</h2>
<ol>
<li>Avoid &quot;you&quot;, refer to &quot;one can...&quot; or rely on 3rd parties </li>
<li>Avoid &quot;you&quot;, say &quot;that belief&quot; or &quot;that statement&quot; instead of &quot;your statement&quot; </li>
<li>Use collaborative language, leverage &quot;we&quot; </li>
<li>Avoid labeling a person based on a single belief</li>
<li>Reframe the matter on the common ground: &quot;ultimately, we both aim for world peace, but we have some differences when it comes to achieving those goals, can we talk more directly about the ways we can achieve a balance?&quot;</li>
<li>Change your mind on the spot - be ready to do that, when it is relevant. This signalizes the partner that it is OK to do that.</li>
<li>Use scales, figure out how confident one is in their belief. &quot;on a scale from 1 to 10, how confident are you that belief is true?&quot; </li>
<li>When they answer say, 8,ask &quot;what would it take to bring it down to 6?&quot;, then ask about something bigger - &quot;why not a 9?&quot;</li>
<li>If they're above 6 on this scale, ask &quot;I'm 3 on this scale, I'm not sure how I would get to where you are, at a 9. I wanna see what I'm missing, Can you walk me through it?&quot; (and let them do the work)</li>
<li>Keep a log, note down what worked in raising doubt, and what didn't</li>
</ol>
<h2>Outsourcing</h2>
<p>Focus on what source of info we can both rely on, to have a common ground. This might make the partner think about matters of reliability and trustworthiness of information sources.</p>
<ol>
<li>Make them look for evidence supporting their claim. If they will fail to find any - it could raise doubts.</li>
<li>How would an external observer determine what source of info is reliable?</li>
</ol>
<h1>Chapter 5</h1>
<p>These are Rapoport's rules:</p>
<ol>
<li>Understand and express the partner's point of view in such a clear manner, that even they say &quot;I wish I thought of putting it that way!&quot;</li>
<li>List points of agreement, especially the non-mainstream ones</li>
<li>List everything you've learned from the partner</li>
<li>Only then can you express any form of rebuttal or criticism</li>
</ol>
<p><strong>Avoid facts</strong> when dealing with people who say &quot;nothing will change my mind&quot; or &quot;no evidence will change my mind&quot;. </p>
<p>If their beliefs were formed without taking evidence into account, no amount of evidence will make them change their mind. They simply operate in another dimension. </p>
<ul>
<li>Only present facts when the partner explicitly requests them</li>
<li>and when you do so, encourage them to independently verify that information </li>
<li>model intellectual humility, &quot;I could be wrong about this&quot; or &quot;to the best of my knowledge&quot;</li>
<li>be ready to say &quot;I don't have that information, but I will be glad to get back to you when I do&quot;</li>
</ul>
<p><strong>disconfirmation: under what conditions would you say the belief is false</strong> - an effective way to take a step towards doubt. Basically, it is &quot;falsifiability&quot; in science.
If something is unfalsifiable, it is regarded as the absolute, unconditional truth. </p>
<h2>Types of disconfirmable beliefs</h2>
<p><strong>Not at all</strong></p>
<ul>
<li>This claim makes an absolutely certain statement about the universe. This is epistemic/doxastic closure. </li>
<li>Don't deal with it by bringing counter evidence. Form a question about how the belief could be an error. </li>
</ul>
<p><strong>Disconfirmable under wildly implausible conditions</strong>
Example: in what circumstances would you reject the belief that Jesus was resurrected? The answer might be &quot;show me the bones of Christ&quot;</p>
<p><strong>Disconfirmable, here's what it would take</strong></p>
<ul>
<li>Clarify, to make sure you really got it.</li>
</ul>
<p>Techniques to use at the end </p>
<ul>
<li><strong>epistemology</strong>: then the belief is not held on the basis of evidence, right? Are you as closed to revising other beliefs, or just this one? What makes this one unique? What are examples of other beliefs you are not willing to change? </li>
<li><strong>morality</strong>: how is it a virtue not to revise this belief? Would you be a good person if you didn't hold this belief? Are there examples of those who don't have this belief and are good people? </li>
<li>think back N years ago. Since that time, have any of your beliefs changed? Are all of your beliefs identical now to what they were 10 years ago? </li>
</ul>
<ul>
<li>If yes, go back to N+delta and repeat </li>
<li>if no, N years ago you had some beliefs that you don't hold now. Wouldn't it be possible that N years from now you will look at today and say the same thing? </li>
<li>use &quot;untrue&quot; as a softer version of &quot;false&quot; </li>
</ul>
<p>If they say they've had the same beliefs forever, they are either lying to you, or to themselves or are über doxastically closed. Consider closing the conversation, you did what could be done at this stage.</p>
<h2>Eliminate "but" from your vocabulary</h2>
<p>For example, &quot;yes, but what about those who buy weapons illegally?&quot; → &quot;yes, and what about those who...?&quot; </p>
<p>Top it up a notch, by switching to &quot;interesting, and what do you think of..?&quot;</p>
<p>Ury Fisher's twist: &quot;I can see how you feel strongly about this, and I respect that; let me tell you, however, how it looks from my angle&quot;.
Or a more advanced version: &quot;... If you don't mind, let me...&quot; </p>
<h1>Chapter 6</h1>
<p><strong>Alter casting</strong> - cast a person into an alternate role, from which they are easier to be influenced. </p>
<ul>
<li>obvious <em>ethical</em> implications, you can manipulate people ore damage them, by casting them into negative or self-destructive roles. For example, when you call someone narrow-minded. </li>
<li>take their <em>preferred option off the table</em>. For example: &quot;I hear you, I am curious about your opinion. Let's say you're a senator  in an immigration committee and you have the task to come up with a solution to our immigration problem. You're there because you are a good problem solver and your opinion is important to the committee. Suppose you know the senate will absolutely not accept the option of deportation, your job is to come up with the best solution you can, except in extreme cases like for murderers. What would you recommend, and why?&quot;. </li>
</ul>
<h2>Tips from hostage negotiations</h2>
<ul>
<li><strong>minimal encourages</strong> - &quot;ok&quot;, &quot;I hear you&quot; - simple way to let your parter know that you are listening</li>
<li><strong>mirroring</strong> - repeat the last few words someone said. Do not overuse it, no more than 4 times in a 7min conversation. Give it a positive spin, when necessary. Example: &quot;I am just so sick and tired of these people pushing everyone around to have their way → get their way?&quot;. Or, &quot;I have to get out of here with the money, it's for my kid, it's not for me. → for your kid; -yeah, he's got a fever  and we don't have any money for the pills, and we don't have any...&quot;. Don't say &quot;you expect me to believe that it's not for you?&quot;. Just use this as an opportunity to build rapport and keep them talking, perhaps they will provide more useful information.</li>
<li><strong>emotional labeling</strong> - use when the partner expresses strong feelings that need to be defused. This recognizes feelings without judging them.</li>
<li><strong>build golden bridges</strong> to allow them to save face </li>
<li><strong>deal with small issues first</strong> - create a climate of success, by dealing with and solving small issues first. Then break down big problems into smaller ones, that are easy to solve. </li>
<li><strong>use specific examples rather than statistics</strong> - stories are vivid and easy to remember, while statistics are raw numbers and are not as impressive.</li>
</ul>
<h2>Probe the limits</h2>
<ul>
<li>by doing so, you might reveal that they are not actually aligned with what they say they believe. </li>
<li>humans prefer to stick to their inconsistency even if you point it out to them </li>
<li><strong>verbal behaviour</strong> - what someone says they believe is not what they actually live by. </li>
</ul>
<p>How to unmask/deal with such cases:</p>
<ol>
<li>Attempt to express their opinion so clearly and vividly, that they say &quot;thanks, I wish I could express it myself that way&quot;. (Rapoport's first rule) </li>
<li>Explicitly confirm that you understood their belief correctly. Optionally - if the belief is something that targets you personally (e. g. you atheists), ask for permission to ask questions so that you may learn. Example: &quot;I am not trying to convince you of anything, I am curious and would like to ask questions to learn more&quot;. Optionally: find out how they came to this belief and how long ago.  This will give you clues of what to probe further. </li>
<li>Understand the limit of the belief in practice. Ask about edge cases. Example: &quot;if you had an emergency and your doctor was an atheist, would you believe them if they told you that you need an urgent blood transfusion to save your life?&quot; or &quot;if you were after a period of starvation would you be worried if you knew the food you eat was cooked by an atheist?&quot;. Or a follow up &quot;if all the other doctors were busy, would you accept to be seen by an atheist doctor?&quot; </li>
<li>Ask &quot;is there any circumstances that would push you towards acting inconsistent with the belief?&quot; and have them generate examples. If they say &quot;no&quot;, continue with gentle examples like the ones from the previous point, &quot;would you fly on a plane piloted by an atheist?&quot; or further &quot;what if  you knew that someone from the design team was an atheist?&quot;. Then ask about how they would uphold their rules in practice: &quot;how do you figure out the pilot's religious affiliation when you book tickets?&quot; <strong>otherwise</strong> if they say yes, ask &quot;can you give me examples of other things that you believe but don't act upon? What makes this special?&quot;</li>
<li>At this point it should be established that  it is impossible to sincerely hold a belief and actually live by it. If they ACK this is the case, ask them how they decide whether they will act on a belief or not (that is, which ones are enforced and which ones are not? What makes them special?) for example: &quot;If I am hearing you right, sometimes it is OK to take treatment from an atheist doctor and sometimes there are good reasons not to trust their opinion at all. How can we determine which time is which?&quot;
<strong>otherwise</strong> if it hasn't been established, either you misunderstood something, or they are really living in full accord with their belief. Or they are lying or are delusional. </li>
</ol>
<h2>Counter-intervention strategies</h2>
<p><em>Go with it</em> - you are almost guaranteed to learn something new, you might even change your mind. You might see what techniques they apply, how they apply them and thus improve your own skills. </p>
<p><em>Stonewalling</em> - if there is no reaction or feedback, there is no intervention going on. So you can deflect such interventions on you by not responding. Or by providing closed (not open-ended) answers like &quot;yeah&quot; or &quot;not really&quot;. </p>
<p>The remaining sections are about techniques of detecting that someone applies this method on you, and how to deal with it.</p><div class="item_footer"><p><small><a href="https://railean.net/index.php/how-to-have-impossible-conversations-notes">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://railean.net/index.php/how-to-have-impossible-conversations-notes#comments</comments>
			<wfw:commentRss>https://railean.net/index.php?tempskin=_rss2&#38;disp=comments&#38;p=428</wfw:commentRss>
		</item>
				<item>
			<title>The jacket</title>
			<link>https://railean.net/index.php/the-jacket</link>
			<pubDate>Thu, 25 Jul 2019 11:39:00 +0000</pubDate>			<dc:creator>gr8dude</dc:creator>
			<category domain="alt">Thoughts</category>
<category domain="main">Organized rhyme</category>			<guid isPermaLink="false">426@https://railean.net/</guid>
						<description>&lt;p&gt;Every step you take,&lt;br /&gt;
every decision you make&lt;br /&gt;
closes a door, blocks a path,&lt;br /&gt;
it&#039;s obvious if you do the math.&lt;/p&gt;
&lt;p&gt;The freedoms you have will erode,&lt;br /&gt;
straightjacketing you down the road.&lt;br /&gt;
As time passes by you&#039;ll think more&lt;br /&gt;
of what you don&#039;t have, but had plenty before.&lt;/p&gt;
&lt;p&gt;The hourglass runs out of sand,&lt;br /&gt;
look closer, make note of the trend.&lt;br /&gt;
The choices you still have today...&lt;br /&gt;
Tomorrow - they&#039;re going away.&lt;/p&gt;
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;https://railean.net/media/blogs/a/quick-uploads/p426/straightjacket.jpg?mtime=1564047268&quot; title=&quot;And then life wants to give you a high-five!&quot; rel=&quot;lightbox[p426]&quot; id=&quot;link_17&quot;&gt;&lt;img alt=&quot;The jacket&quot; src=&quot;https://railean.net/media/blogs/a/quick-uploads/p426/.evocache/straightjacket.jpg/fit-400x320.jpg?mtime=1564047268&quot; width=&quot;247&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;And then life wants to give you a high-five!&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://railean.net/index.php/the-jacket&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Every step you take,<br />
every decision you make<br />
closes a door, blocks a path,<br />
it's obvious if you do the math.</p>
<p>The freedoms you have will erode,<br />
straightjacketing you down the road.<br />
As time passes by you'll think more<br />
of what you don't have, but had plenty before.</p>
<p>The hourglass runs out of sand,<br />
look closer, make note of the trend.<br />
The choices you still have today...<br />
Tomorrow - they're going away.</p>
<div><a href="https://railean.net/media/blogs/a/quick-uploads/p426/straightjacket.jpg?mtime=1564047268" title="And then life wants to give you a high-five!" rel="lightbox[p426]" id="link_17"><img alt="The jacket" src="https://railean.net/media/blogs/a/quick-uploads/p426/.evocache/straightjacket.jpg/fit-320x320.jpg?mtime=1564047268" width="247" height="320" class="loadimg" /></a><div><i>And then life wants to give you a high-five!</i></div></div><div class="item_footer"><p><small><a href="https://railean.net/index.php/the-jacket">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://railean.net/index.php/the-jacket#comments</comments>
			<wfw:commentRss>https://railean.net/index.php?tempskin=_rss2&#38;disp=comments&#38;p=426</wfw:commentRss>
		</item>
				<item>
			<title>The shoes</title>
			<link>https://railean.net/index.php/the-shoes-ruse</link>
			<pubDate>Tue, 16 Jul 2019 02:14:00 +0000</pubDate>			<dc:creator>gr8dude</dc:creator>
			<category domain="alt">Thoughts</category>
<category domain="main">Organized rhyme</category>
<category domain="alt">Photo / graphics</category>			<guid isPermaLink="false">424@https://railean.net/</guid>
						<description>&lt;p&gt;Sometimes when you ask&lt;br /&gt;
how it goes,&lt;br /&gt;
I try to escape with a ruse.&lt;br /&gt;
&amp;quot;&lt;em&gt;Not bad&lt;/em&gt;&amp;quot;, I might say,&lt;br /&gt;
&amp;quot;&lt;em&gt;many others would like&lt;br /&gt;
to walk through their lives&lt;br /&gt;
in my shoes&lt;/em&gt;&amp;quot;.&lt;/p&gt;
&lt;p&gt;&amp;quot;&lt;em&gt;How nice&lt;/em&gt;&amp;quot;, you remark,&lt;br /&gt;
without giving a chance&lt;br /&gt;
to finish the thought&lt;br /&gt;
that ensues.&lt;/p&gt;
&lt;p&gt;And so I am left,&lt;br /&gt;
ruminating all day...&lt;br /&gt;
Do &lt;strong&gt;I&lt;/strong&gt; want to be&lt;br /&gt;
in my shoes?&lt;/p&gt;
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;https://railean.net/media/blogs/a/quick-uploads/p424/shoes-smaller.jpg?mtime=1563235876&quot; rel=&quot;lightbox[p424]&quot; id=&quot;link_16&quot;&gt;&lt;img alt=&quot;The shoes&quot; src=&quot;https://railean.net/media/blogs/a/quick-uploads/p424/.evocache/shoes-smaller.jpg/fit-400x320.jpg?mtime=1563235876&quot; width=&quot;355&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://railean.net/index.php/the-shoes-ruse&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Sometimes when you ask<br />
how it goes,<br />
I try to escape with a ruse.<br />
&quot;<em>Not bad</em>&quot;, I might say,<br />
&quot;<em>many others would like<br />
to walk through their lives<br />
in my shoes</em>&quot;.</p>
<p>&quot;<em>How nice</em>&quot;, you remark,<br />
without giving a chance<br />
to finish the thought<br />
that ensues.</p>
<p>And so I am left,<br />
ruminating all day...<br />
Do <strong>I</strong> want to be<br />
in my shoes?</p>
<div><a href="https://railean.net/media/blogs/a/quick-uploads/p424/shoes-smaller.jpg?mtime=1563235876" rel="lightbox[p424]" id="link_16"><img alt="The shoes" src="https://railean.net/media/blogs/a/quick-uploads/p424/.evocache/shoes-smaller.jpg/fit-320x320.jpg?mtime=1563235876" width="320" height="289" class="loadimg" /></a></div><div class="item_footer"><p><small><a href="https://railean.net/index.php/the-shoes-ruse">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://railean.net/index.php/the-shoes-ruse#comments</comments>
			<wfw:commentRss>https://railean.net/index.php?tempskin=_rss2&#38;disp=comments&#38;p=424</wfw:commentRss>
		</item>
				<item>
			<title>Notes on procrastination</title>
			<link>https://railean.net/index.php/procrastination-notes-now-habit</link>
			<pubDate>Sun, 23 Jun 2019 01:10:00 +0000</pubDate>			<dc:creator>gr8dude</dc:creator>
			<category domain="alt">Thoughts</category>
<category domain="alt">Society</category>
<category domain="main">Book distillery</category>			<guid isPermaLink="false">422@https://railean.net/</guid>
						<description>&lt;p&gt;The notes are based on &amp;quot;The now habit&amp;quot; by Neil Fiore:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Procrastionation is not laziness.&lt;/li&gt;
&lt;li&gt;It could be fear of criticism, fear of judgement, even fear of success.&lt;/li&gt;
&lt;li&gt;You can overcome it by focusing on &lt;em&gt;getting started&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Think about what you can do &lt;em&gt;right now&lt;/em&gt;, rather than about a hypothetical future where the work is in a &amp;quot;finished&amp;quot; state.&lt;/li&gt;
&lt;li&gt;Introspect and understand why it occurs in your case.&lt;/li&gt;
&lt;li&gt;Make time for &lt;em&gt;guilt-free&lt;/em&gt; play.&lt;ul&gt;
&lt;li&gt;Use the &amp;quot;unschedule&amp;quot; to plan guilt-free play time first&lt;/li&gt;
&lt;li&gt;Remember to add constraints with respect to how much work you want to get done (no more than 5h/day, no more than 20/h week)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Read the &amp;quot;walk the plank&amp;quot; example to learn to observe yourself from aside and understand that most often you have what it takes to get it done, and the pressure is actually self-induced.&lt;/li&gt;
&lt;li&gt;Find ways to rely on &lt;em&gt;intrinsic motivation&lt;/em&gt; to work on something (rather than external forces).&lt;/li&gt;
&lt;li&gt;Don&#039;t push yourself too hard, accept your flaws and limitations. Your imperfections are a part of you, learn to live with them, and perhaps gradually improve yourself, but don&#039;t try to change everything at once (you will probably fail and this will dampen your spirits).&lt;/li&gt;
&lt;li&gt;When desperate, think about the worst thing that could happen - is it that bad? Most often it isn&#039;t! And even if it does happen - what will you do? Sometimes there are very simple measures that can be applied, once you&#039;re aware of them, your anxiety is reduced.&lt;/li&gt;
&lt;li&gt;Learn how to get into the &lt;em&gt;flow state&lt;/em&gt; and how to stay there.&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;Procrastination is not a problem, it is a solution to a problem (albeit, not an optimal one), or at least a symptom &lt;/li&gt;
&lt;li&gt;Identify the 6 signs of procrastination (what are they?)&lt;/li&gt;
&lt;li&gt;It is partially caused by fear of criticism, or fear of attaining sub-perfect results&lt;/li&gt;
&lt;li&gt;It also leads to self-criticism, self-judgment. We raise the bar high ourselves. So we defensively postpone the moment of truth.&lt;/li&gt;
&lt;li&gt;If we identify with our work, criticism of work can be perceived as criticism of us - even though objectively that is not true.&lt;/li&gt;
&lt;li&gt;It could be rooted in a childhood pattern, the will to meet the expectations of parents and elder siblings &lt;/li&gt;
&lt;li&gt;It is not necessarily an indication of laziness (if you describe it like that, you&#039;re creating self-induced pressure)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Rewards of procrastination&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;reduces fear of being judged. (but does it? It just postpones it) &lt;/li&gt;
&lt;li&gt;if the work that wasn&#039;t done turns out to be unnecessary, this is a second &amp;quot;return of investment&amp;quot;, procrastination saved us from doing unnecessary things (it conserves energy). &lt;ul&gt;
&lt;li&gt;it can be done by someone else&lt;/li&gt;
&lt;li&gt;it can cancel itself (wasn&#039;t necessary in the first place) &lt;/li&gt;
&lt;li&gt;the item you postponed buying is now on sale, so you even saved some resources &lt;/li&gt;
&lt;li&gt;it often goes unpunished (there are no consequences, either because of a miracle, or because someone forgot to check your work) &lt;/li&gt;
&lt;li&gt;postponing can give you extra time to cool down and make a better decision, or avoid unnecessary conflict escalation &lt;/li&gt;
&lt;li&gt;sometimes issues resolve themselves, or more information is available as you keep waiting - so you can make a better decision)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;we may become &lt;em&gt;addicted to procrastination&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;it can be seen as a disregard of authority (like a mini-rebellion)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Exercises&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Introspect, observe yourself procrastinating: what caused it in that particular instance? What were the trigger factors?&lt;/li&gt;
&lt;li&gt;Learn not to identify yourself with your work, this leads to potential negative outcomes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you&#039;re involved in multiple activities, failure in one of them is less likely to bring you down.&lt;/p&gt;
&lt;p&gt;Think about the example of a plank you have to walk&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;basic case - no problem &lt;/li&gt;
&lt;li&gt;same case, but the plank is between 2 skyscrapers - you have fear &lt;/li&gt;
&lt;li&gt;same thing, but there is a fire behind you, or there is a crying child on the other side - forget the fear, you just go ahead and do this&lt;/li&gt;
&lt;li&gt;same thing, plank is between skyscrapers, but a few meters underneath you have your family and support network, who encourage you, and promise their help in case of need&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Every &amp;quot;I have to do X&amp;quot; statement must be converted into&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a concrete action step towards the goal&lt;/li&gt;
&lt;li&gt;or a dialogue with your boss about &amp;quot;I won&#039;t do it&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Specific changes in wording your statements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Work on changing &amp;quot;I have to&amp;quot; to &amp;quot;I choose to&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot;I must finish&amp;quot; , this relates to a future state, but doesn&#039;t tell you what to do now (so it is not constructive) -&amp;gt; &amp;quot;when/where can I start?&amp;quot; or &amp;quot;when is the next time I can start?
-&amp;quot; this project is so big and important &amp;quot; sounds like&amp;quot; this is my one big chance in life &amp;quot;or&amp;quot; I can&#039;t find a way to deal with it &amp;quot; - &amp;gt;&amp;quot; I can take a small step &amp;quot;or&amp;quot; I can start with a 15min effort &amp;quot;
-&amp;quot; I must be perfect &amp;quot;. You&#039;re setting yourself up for not accepting small steps and iterative versions, because you already set the bar high. - &amp;gt;&amp;quot; I can be perfectly human [and make mistakes in my intermediate iterations] &amp;quot;. Intentionally, work in beta mode to produce low-fidelity versions&lt;/li&gt;
&lt;li&gt;&amp;quot;I don&#039;t have time to play&amp;quot; or &amp;quot;I cannot join you tonight&amp;quot;. This creates a feeling of hatred towards the job, a zombie mode feeling -&amp;gt; &amp;quot;I must have time to play&amp;quot; or &amp;quot;I need guilt-free rest time in my schedule&amp;quot;. It should increase your inner worth&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Detect these patterns and act immediately - this is a moment when you can consciously decide to not follow the old path.&lt;/p&gt;
&lt;h1&gt;Guilt-free play&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Children are always motivated to get involved (clean, do dishes :) it is only when you start demanding it, that this becomes a nuisance. &lt;/li&gt;
&lt;li&gt;Remember Churchill&#039;s quote: I am always eager to learn, but I don&#039;t like being taught.&lt;/li&gt;
&lt;li&gt;It also helps you relax without pressure/guilt and it gives your mind a chance to work it out in the background. &lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Motivation to start&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;push vs pull&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;push&lt;/strong&gt; someone into the work with pressure and threats (if you don&#039;t do X, you won&#039;t get Y). Example for students: in the first semester you will have to read this shelf, by the end of the course - this entire wall of shelves. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;pull&lt;/strong&gt; - assume a person&#039;s built-in curiosity is going to do the work for you. If you do X, you&#039;ll get an extension to your vacation. For students: imagine an empty shelf, as you progress through the semester you will fill one entire shelf, and as your knowledge grows throughout the course - your expertise will fill the entire wall!&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Avoiding unpleasant work&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;You can do this via procrastination, if you fear criticism, even from yourself.&lt;/li&gt;
&lt;li&gt;There are 3 main mechanisms involved&lt;ul&gt;
&lt;li&gt;fear of not finishing&lt;/li&gt;
&lt;li&gt;fear of failure &lt;/li&gt;
&lt;li&gt;terror of being overwhelmed&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Overcoming one of them will weaken the others, because you gain confidence as you do so.&lt;/p&gt;
&lt;p&gt;Beware of the &lt;strong&gt;fear of success&lt;/strong&gt;. Sometimes, succeeding will bring more headaches, for example if you apply for a new job and actually pass the interview, this will potentially lead to some unpleasant effects - moving to a different city, quitting the current job (and having &amp;quot;the talk&amp;quot; with your current boss, etc). At times, just thinking about these things makes you less motivated to work on getting the new job!&lt;/p&gt;
&lt;h1&gt;3D thinking&lt;/h1&gt;
&lt;p&gt;Dealing with a project requires an understanding of its&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;size&lt;/li&gt;
&lt;li&gt;length&lt;/li&gt;
&lt;li&gt;breadth&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;The unschedule&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;B.F. Skinner had a button linked to his chair, which would count the time of work and collect stats&lt;/li&gt;
&lt;li&gt;keep track of your work time, 30min increments should be enough of a resolution to give you some practical results&lt;/li&gt;
&lt;li&gt;when scheduling, start by planning the guilt-free playtime&lt;ul&gt;
&lt;li&gt;this helps create the habit of using a schedule and planning, but not in an unpleasant way.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Set anti constraints&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;do not work more than 20h a week&lt;/li&gt;
&lt;li&gt;do not work more than 5h a day&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It seems that some procrastination is a way to disrespect/resist/object authority, by insubordination. You can turn the context upside down, by setting these constraints and then defying them.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;schedule for the nearest starting point, rather than for finishing&lt;/li&gt;
&lt;li&gt;do something fun after hard work, this will associate work with something positive. &lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;The worst thing&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;What is the worst that could happen?&lt;/li&gt;
&lt;li&gt;What would I do if it happened?&lt;/li&gt;
&lt;li&gt;How would I lessen the pain and get on with as much happiness as possible if the worse did occur?&lt;/li&gt;
&lt;li&gt;What alternatives would I have?&lt;/li&gt;
&lt;li&gt;What can I do now to lessen the probability?&lt;/li&gt;
&lt;li&gt;Is there anything I can do now to increase my chances of achieving my goal?&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Focus on getting started&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Treat the whole process as a series of &lt;em&gt;start events&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Focus on nudging yourself towards starting, and the rest will take care of itself.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Flow&lt;/h1&gt;
&lt;p&gt;All this other stuff, just take it from the source - Mihaly Csikszentmihalyi has a TED talk where he &lt;a href=&quot;https://www.youtube.com/watch?v=fXIeFJCqsPs&quot;&gt;explains the concept of flow&lt;/a&gt;.&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://railean.net/index.php/procrastination-notes-now-habit&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<p>The notes are based on &quot;The now habit&quot; by Neil Fiore:</p>
<ul>
<li>Procrastionation is not laziness.</li>
<li>It could be fear of criticism, fear of judgement, even fear of success.</li>
<li>You can overcome it by focusing on <em>getting started</em>.</li>
<li>Think about what you can do <em>right now</em>, rather than about a hypothetical future where the work is in a &quot;finished&quot; state.</li>
<li>Introspect and understand why it occurs in your case.</li>
<li>Make time for <em>guilt-free</em> play.<ul>
<li>Use the &quot;unschedule&quot; to plan guilt-free play time first</li>
<li>Remember to add constraints with respect to how much work you want to get done (no more than 5h/day, no more than 20/h week)</li>
</ul></li>
<li>Read the &quot;walk the plank&quot; example to learn to observe yourself from aside and understand that most often you have what it takes to get it done, and the pressure is actually self-induced.</li>
<li>Find ways to rely on <em>intrinsic motivation</em> to work on something (rather than external forces).</li>
<li>Don't push yourself too hard, accept your flaws and limitations. Your imperfections are a part of you, learn to live with them, and perhaps gradually improve yourself, but don't try to change everything at once (you will probably fail and this will dampen your spirits).</li>
<li>When desperate, think about the worst thing that could happen - is it that bad? Most often it isn't! And even if it does happen - what will you do? Sometimes there are very simple measures that can be applied, once you're aware of them, your anxiety is reduced.</li>
<li>Learn how to get into the <em>flow state</em> and how to stay there.</li>
</ul>

<hr />
<ul>
<li>Procrastination is not a problem, it is a solution to a problem (albeit, not an optimal one), or at least a symptom </li>
<li>Identify the 6 signs of procrastination (what are they?)</li>
<li>It is partially caused by fear of criticism, or fear of attaining sub-perfect results</li>
<li>It also leads to self-criticism, self-judgment. We raise the bar high ourselves. So we defensively postpone the moment of truth.</li>
<li>If we identify with our work, criticism of work can be perceived as criticism of us - even though objectively that is not true.</li>
<li>It could be rooted in a childhood pattern, the will to meet the expectations of parents and elder siblings </li>
<li>It is not necessarily an indication of laziness (if you describe it like that, you're creating self-induced pressure)</li>
</ul>
<h1>Rewards of procrastination</h1>
<ul>
<li>reduces fear of being judged. (but does it? It just postpones it) </li>
<li>if the work that wasn't done turns out to be unnecessary, this is a second &quot;return of investment&quot;, procrastination saved us from doing unnecessary things (it conserves energy). <ul>
<li>it can be done by someone else</li>
<li>it can cancel itself (wasn't necessary in the first place) </li>
<li>the item you postponed buying is now on sale, so you even saved some resources </li>
<li>it often goes unpunished (there are no consequences, either because of a miracle, or because someone forgot to check your work) </li>
<li>postponing can give you extra time to cool down and make a better decision, or avoid unnecessary conflict escalation </li>
<li>sometimes issues resolve themselves, or more information is available as you keep waiting - so you can make a better decision)</li>
</ul></li>
<li>we may become <em>addicted to procrastination</em></li>
<li>it can be seen as a disregard of authority (like a mini-rebellion)</li>
</ul>
<h1>Exercises</h1>
<ul>
<li>Introspect, observe yourself procrastinating: what caused it in that particular instance? What were the trigger factors?</li>
<li>Learn not to identify yourself with your work, this leads to potential negative outcomes</li>
</ul>
<p>If you're involved in multiple activities, failure in one of them is less likely to bring you down.</p>
<p>Think about the example of a plank you have to walk</p>
<ul>
<li>basic case - no problem </li>
<li>same case, but the plank is between 2 skyscrapers - you have fear </li>
<li>same thing, but there is a fire behind you, or there is a crying child on the other side - forget the fear, you just go ahead and do this</li>
<li>same thing, plank is between skyscrapers, but a few meters underneath you have your family and support network, who encourage you, and promise their help in case of need</li>
</ul>
<p>Every &quot;I have to do X&quot; statement must be converted into</p>
<ul>
<li>a concrete action step towards the goal</li>
<li>or a dialogue with your boss about &quot;I won't do it&quot;</li>
</ul>
<p>Specific changes in wording your statements:</p>
<ul>
<li>Work on changing &quot;I have to&quot; to &quot;I choose to&quot;</li>
<li>&quot;I must finish&quot; , this relates to a future state, but doesn't tell you what to do now (so it is not constructive) -&gt; &quot;when/where can I start?&quot; or &quot;when is the next time I can start?
-&quot; this project is so big and important &quot; sounds like&quot; this is my one big chance in life &quot;or&quot; I can't find a way to deal with it &quot; - &gt;&quot; I can take a small step &quot;or&quot; I can start with a 15min effort &quot;
-&quot; I must be perfect &quot;. You're setting yourself up for not accepting small steps and iterative versions, because you already set the bar high. - &gt;&quot; I can be perfectly human [and make mistakes in my intermediate iterations] &quot;. Intentionally, work in beta mode to produce low-fidelity versions</li>
<li>&quot;I don't have time to play&quot; or &quot;I cannot join you tonight&quot;. This creates a feeling of hatred towards the job, a zombie mode feeling -&gt; &quot;I must have time to play&quot; or &quot;I need guilt-free rest time in my schedule&quot;. It should increase your inner worth</li>
</ul>
<p>Detect these patterns and act immediately - this is a moment when you can consciously decide to not follow the old path.</p>
<h1>Guilt-free play</h1>
<ul>
<li>Children are always motivated to get involved (clean, do dishes :) it is only when you start demanding it, that this becomes a nuisance. </li>
<li>Remember Churchill's quote: I am always eager to learn, but I don't like being taught.</li>
<li>It also helps you relax without pressure/guilt and it gives your mind a chance to work it out in the background. </li>
</ul>
<h1>Motivation to start</h1>
<ul>
<li>push vs pull</li>
<li><strong>push</strong> someone into the work with pressure and threats (if you don't do X, you won't get Y). Example for students: in the first semester you will have to read this shelf, by the end of the course - this entire wall of shelves. </li>
<li><strong>pull</strong> - assume a person's built-in curiosity is going to do the work for you. If you do X, you'll get an extension to your vacation. For students: imagine an empty shelf, as you progress through the semester you will fill one entire shelf, and as your knowledge grows throughout the course - your expertise will fill the entire wall!</li>
</ul>
<h1>Avoiding unpleasant work</h1>
<ul>
<li>You can do this via procrastination, if you fear criticism, even from yourself.</li>
<li>There are 3 main mechanisms involved<ul>
<li>fear of not finishing</li>
<li>fear of failure </li>
<li>terror of being overwhelmed</li>
</ul></li>
</ul>
<p>Overcoming one of them will weaken the others, because you gain confidence as you do so.</p>
<p>Beware of the <strong>fear of success</strong>. Sometimes, succeeding will bring more headaches, for example if you apply for a new job and actually pass the interview, this will potentially lead to some unpleasant effects - moving to a different city, quitting the current job (and having &quot;the talk&quot; with your current boss, etc). At times, just thinking about these things makes you less motivated to work on getting the new job!</p>
<h1>3D thinking</h1>
<p>Dealing with a project requires an understanding of its</p>
<ul>
<li>size</li>
<li>length</li>
<li>breadth</li>
</ul>
<h1>The unschedule</h1>
<ul>
<li>B.F. Skinner had a button linked to his chair, which would count the time of work and collect stats</li>
<li>keep track of your work time, 30min increments should be enough of a resolution to give you some practical results</li>
<li>when scheduling, start by planning the guilt-free playtime<ul>
<li>this helps create the habit of using a schedule and planning, but not in an unpleasant way.</li>
</ul></li>
</ul>
<h2>Set anti constraints</h2>
<ul>
<li>do not work more than 20h a week</li>
<li>do not work more than 5h a day</li>
</ul>
<p>It seems that some procrastination is a way to disrespect/resist/object authority, by insubordination. You can turn the context upside down, by setting these constraints and then defying them.</p>
<ul>
<li>schedule for the nearest starting point, rather than for finishing</li>
<li>do something fun after hard work, this will associate work with something positive. </li>
</ul>
<h1>The worst thing</h1>
<ul>
<li>What is the worst that could happen?</li>
<li>What would I do if it happened?</li>
<li>How would I lessen the pain and get on with as much happiness as possible if the worse did occur?</li>
<li>What alternatives would I have?</li>
<li>What can I do now to lessen the probability?</li>
<li>Is there anything I can do now to increase my chances of achieving my goal?</li>
</ul>
<h1>Focus on getting started</h1>
<ul>
<li>Treat the whole process as a series of <em>start events</em>.</li>
<li>Focus on nudging yourself towards starting, and the rest will take care of itself.</li>
</ul>
<h1>Flow</h1>
<p>All this other stuff, just take it from the source - Mihaly Csikszentmihalyi has a TED talk where he <a href="https://www.youtube.com/watch?v=fXIeFJCqsPs">explains the concept of flow</a>.</p><div class="item_footer"><p><small><a href="https://railean.net/index.php/procrastination-notes-now-habit">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://railean.net/index.php/procrastination-notes-now-habit#comments</comments>
			<wfw:commentRss>https://railean.net/index.php?tempskin=_rss2&#38;disp=comments&#38;p=422</wfw:commentRss>
		</item>
				<item>
			<title>The bottomless pit</title>
			<link>https://railean.net/index.php/bottomless-pit-bottom</link>
			<pubDate>Fri, 14 Jun 2019 03:21:00 +0000</pubDate>			<dc:creator>gr8dude</dc:creator>
			<category domain="main">Organized rhyme</category>			<guid isPermaLink="false">423@https://railean.net/</guid>
						<description>&lt;p&gt;So, you have found yourself&lt;br /&gt;
at the bottom of the bottomless&lt;br /&gt;
pit of despair and doubt.&lt;br /&gt;
Again.&lt;/p&gt;
&lt;p&gt;Don&#039;t worry, with time&lt;br /&gt;
you&#039;ll get used to the cold&lt;br /&gt;
and the numbness of mind&lt;br /&gt;
and the pain.&lt;/p&gt;
&lt;p&gt;Rejoice! You&#039;ve set foot&lt;br /&gt;
on a ground where&lt;br /&gt;
no human or beast&lt;br /&gt;
stepped before!&lt;/p&gt;
&lt;p&gt;Now you have plenty of time&lt;br /&gt;
to rethink, to replan,&lt;br /&gt;
reconsider, recant, as all&lt;br /&gt;
your concerns are no more!&lt;/p&gt;

&lt;hr /&gt;
&lt;p&gt;An optimist knows that things can always get worse, even when they&#039;re already bad. And when they are bad - how bad is that? Is it as bad as you thought it would be? Do you have the feeling that your concerns were exaggerated? And even if they weren&#039;t - don&#039;t you feel some form of relief anyway?&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://railean.net/index.php/bottomless-pit-bottom&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<p>So, you have found yourself<br />
at the bottom of the bottomless<br />
pit of despair and doubt.<br />
Again.</p>
<p>Don't worry, with time<br />
you'll get used to the cold<br />
and the numbness of mind<br />
and the pain.</p>
<p>Rejoice! You've set foot<br />
on a ground where<br />
no human or beast<br />
stepped before!</p>
<p>Now you have plenty of time<br />
to rethink, to replan,<br />
reconsider, recant, as all<br />
your concerns are no more!</p>

<hr />
<p>An optimist knows that things can always get worse, even when they're already bad. And when they are bad - how bad is that? Is it as bad as you thought it would be? Do you have the feeling that your concerns were exaggerated? And even if they weren't - don't you feel some form of relief anyway?</p><div class="item_footer"><p><small><a href="https://railean.net/index.php/bottomless-pit-bottom">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://railean.net/index.php/bottomless-pit-bottom#comments</comments>
			<wfw:commentRss>https://railean.net/index.php?tempskin=_rss2&#38;disp=comments&#38;p=423</wfw:commentRss>
		</item>
				<item>
			<title>Evaluarea uzabilității și securității extraselor de cont prin email</title>
			<link>https://railean.net/index.php/extras-de-cont-bank-email-usability-security</link>
			<pubDate>Sat, 11 May 2019 22:31:00 +0000</pubDate>			<dc:creator>gr8dude</dc:creator>
			<category domain="main">Technology / programming</category>
<category domain="alt">Thoughts</category>
<category domain="alt">Recommendations</category>
<category domain="alt">Usability</category>			<guid isPermaLink="false">421@https://railean.net/</guid>
						<description>&lt;p&gt;Într-un articol precedent am &lt;a href=&quot;http://railean.net/index.php/interfetele-grafice-keystroke-level-modeling&quot;&gt;comparat două interfețe de online banking din Moldova&lt;/a&gt;. Acea oferită de Fincombank era net superioară interfeței Agroindbank, pentru scenariul achitării facturilor.&lt;/p&gt;
&lt;p&gt;De data aceasta voi evalua aspectele de uzabilitate și securitate a mesajelor de tip ”extras de cont” care vin regulat pe email, de la Fincombank (FCB) și Victoriabank (VB). Scenariul evaluat este găsirea răspunsului la 2 întrebări: &lt;em&gt;„câți bani am în cont?”&lt;/em&gt; și &lt;em&gt;„ce tranzacții am efectuat luna aceasta?”&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Înainte de a porni la drum, trebuie să clarific un detaliu - un email poate fi interceptat în timpul transmiterii de la un server la altul. Există diverse nuanțe tehnice care trebuie luate în considerație, dar pentru a simplifica lucrurile: ceea ce expediezi sau primești prin email &lt;em&gt;nu este confidențial&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Așadar, să purcedem la lectură!&lt;br /&gt;
&lt;/p&gt;
&lt;h2&gt;Fincombank&lt;/h2&gt;
&lt;p&gt;Așa arată mesajele de la FCB (&lt;a href=&quot;http://railean.net/media/blogs/a/quick-uploads/p421/fcb-email.png&quot;&gt;screenshot, ca să vezi în culori&lt;/a&gt;).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Buna ziua, stimate Client!&lt;/p&gt;
&lt;p&gt;La acest e-mail veti gasi atasat extrasul cardului Dvs.&lt;br /&gt;
Pentru a deschide fisierul dat, Va rugam sa utilizati ultimele 4 (patru) cifre a codului fiscal din buletinul Dvs. de identitate.&lt;br /&gt;
La fel, pentru a deschide acest fisier aveti nevoie de un program de dezarhivare. Daca nu aveti acest program instalat pe calculatorul Dvs., il puteti descarca gratuit de pe adresa &lt;a href=&quot;http://www.7-zip.org&quot; class=&quot;linebreak&quot;&gt;http://www.7-zip.org&lt;/a&gt; &lt;em&gt; sau &lt;a href=&quot;http://www.7zip-ro.com/ro/&quot; class=&quot;linebreak&quot;&gt;http://www.7zip-ro.com/ro/&lt;/a&gt; &lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Va multumim de interesul manifestat pentru produsele FinComBank S.A. si Va rugam sa adaugati adresa de e-mail in lista Dvs de contacte pentru a fi sigur ca scrisorile nu vor fi percepute ca spam.&lt;/p&gt;
&lt;p&gt;Acest mesaj este transmis automat. Va rugam sa nu raspundeti la acest mesaj.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;FinComBank S.A. nu poarta raspundere pentru instalarea/utilizarea de catre Client a produselor soft pentru arhivarea/dezarhivarea fisierelor trimise. Responsabilitatea pentru alegerea si utilizarea unui anumit instrument apartine utilizatorului final.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cu stima,&lt;br /&gt;
FinComBank S.A.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Добрый день, уважаемый Клиент!&lt;/p&gt;
&lt;p&gt;В приложении к этому письму Вы найдете выписку по Вашей карте.&lt;br /&gt;
Чтобы открыть файл, используйте, пожалуйста, последние четыре (4) цифры идентификационного кода Вашего удостоверения личности.&lt;br /&gt;
Также для открытия этого файла вам необходима программа для разархивирования. Если, на вашем компьютере не установлена эта программа, вы можете скачать ее бесплатно по адресу &lt;a href=&quot;http://www.7-zip.org&quot; class=&quot;linebreak&quot;&gt;http://www.7-zip.org&lt;/a&gt; &lt;em&gt; или &lt;a href=&quot;http://www.7zip-ro.com/ro/&quot; class=&quot;linebreak&quot;&gt;http://www.7zip-ro.com/ro/&lt;/a&gt; &lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Благодарим за интерес, проявленный к продуктам FinComBank S.A. и просим Вас добавить наш e-mail адрес в список контактов, чтобы быть уверенным, что письма не рассматриваются как спам.&lt;/p&gt;
&lt;p&gt;Это сообщение передается автоматически. Пожалуйста, не отвечайте на него.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;FinComBank S.A. не несет ответственности за установку/использования клиентами продуктов для программного обеспечения для архивирования/разархивирования отправленных файлов. Ответственность за выбор и использование конкретного инструмента принадлежит конечному пользователю.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;С уважением,&lt;br /&gt;
FinComBank S.A.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ce nu e bine aici?&lt;/p&gt;
&lt;h3&gt;Securitatea&lt;/h3&gt;
&lt;p&gt;Mesajul ne îndeamnă să vizităm un careva web-site și să instalăm o aplicație pentru a putea deschide fișierul atașat. Sunt câteva probleme:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Utilizatorul se expune unui risc sporit. Actualmente, adresa 7zip-ro.com nu este validă. Asta înseamnă că un răufăcător ar putea chiar acum să înregistreze acest domain, să lanseze pe el un site care arată exact ca 7-zip.org, și să distribuie un program malițios, care pe lângă 7-zip mai instalează și un backdoor care va expedia undeva toate parolele, adresele vizitate, documente din calculator, etc. Utilizatorul va face ceea ce face întotdeauna: download, next, I agree, next, next, continue, finish. O variație a unui atac nu necesită cumpărarea domainului; cineva care administrează o rețea ar putea redirecționa apelurile către 7-zip.org spre un site interpus.&lt;/li&gt;
&lt;li&gt;Banca include și o remarcă de ”spălare a mâinilor” - noi nu purtăm răspundere, bla bla bla. Practica arată că &lt;a href=&quot;https://cris.fau.de/converis/portal/publication/203730504&quot;&gt;responsabilitatea trebuie plasată pe entitatea cel mai bine-pregătită s-o poarte&lt;/a&gt;. În caz contrar ajungem la decizii sub-optimale, iraționale sau chiar periculoase. Acest principiu fundamental a fost încălcat. Chiar e rezonabil să așteptăm de la un fermier care a mers pe site-ul 7zip, să știe diferența dintre 32-bit exe, 64-bit exe, MSI și așa mai departe?&lt;/li&gt;
&lt;li&gt;Mai trist e faptul că îndrumarea nici nu este necesară. Orice sistem de operare modern poate deschide un fișier ZIP fără careva aplicații terțe (Windows poate s-o facă din &lt;a href=&quot;https://en.wikipedia.org/wiki/Zip_(file_format)#Implementation&quot;&gt;cel puțin anul 2000&lt;/a&gt;). Totul putea fi evitat.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Cifrele magice&lt;/h3&gt;
&lt;p&gt;Care a fost intenția folosirii arhivei cu parolă? Să protejeze datele? Să ascundă starea contului meu de ochii vicleni a ciberhoților?&lt;/p&gt;
&lt;p&gt;Iată codul unui program care găsește parola în două secunde, încercând pe rând variantele de la 0000 la 9999. Nu în zadar în popor există expresia ”zece linii în cruce, parola se duce” :-)&lt;/p&gt;
&lt;p&gt;&lt;!-- codeblock line=1 --&gt;&lt;/p&gt;&lt;pre class=&quot;codeblock&quot;&gt;&lt;code&gt;from zipfile import PyZipFile
z = PyZipFile(&#039;extras.zip&#039;)

for i in range(0, 10000):
    try:
        z.extractall(pwd=b&#039;%04d&#039; % i)
    except:
        pass
    else:
        print(&#039;Password = %04d&#039; % i)
        break&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;!-- /codeblock --&gt;&lt;/p&gt;

&lt;p&gt;Cu alte cuvinte, această măsură de securitate nu reprezintă un obstacol în calea criminalilor, dar e un obstacol în fața utilizatorilor. Aceștia trebuie să treacă prin niște pași adiționali ca să vadă starea contului lor, sunt împinși spre riscuri nenecesare, în timp ce banca ”nu poartă răspundere”.&lt;/p&gt;
&lt;h3&gt;Diacritice&lt;/h3&gt;
&lt;p&gt;Acest mesaj ar fi mai plăcut dacă era scris cu diacritice. În secolul nostru, chiar și un Tamagochi sau un ”999-in-1 brick game” poate afișa text Unicode, cu diacritice, umlauturi, accente exotice și emoji. E una când un adolescent scrie comentarii pe Youtube fără diacritice, dar e alta când o instituție serioasă face același lucru. Sunt curios să aflu, dacă româna din aceste mesaje e fără diacritice deoarece cuiva pur și simplu nu-i pasă de limbă, sau e din cauza îngrijorării că mesajul nu va fi afișat corect la unii clienți. &lt;/p&gt;
&lt;p&gt;Bonus: cum sună &lt;a href=&quot;https://www.youtube.com/watch?v=yOCtS9s9M4s&quot;&gt;româna fără diacritice&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Personalizare&lt;/h3&gt;
&lt;p&gt;Un mesaj adresat cuiva ar putea începe cu numele persoanei: ”Dragă Tractorin Prițăpovici, ...”. O astfel de personalizare îl face mai credibil și îl evidențiază pe fonul spamului, care deseori nu e suficient de sofisticat ca să știe numele persoanei, căreia i se adresează.&lt;/p&gt;
&lt;p&gt;”Client” sau ”Vă” scris cu majusculă e o încercare de a exprima respect, dar aceasta nu se compară cu cele mai dulci cuvinte din lume: &lt;code class=&quot;codespan&quot;&gt;$firstName $lastName&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Aspectul lingvistic&lt;/h3&gt;
&lt;p&gt;O copie a textului vine și în limba rusă. Sunt clientul acestei bănci de peste zece ani și în această perioadă au fost multe ocazii să mă întrebe în ce limbă vreau să-mi vină mesajele, iar apoi să mi le expedieze anume în acea limbă. Textul lung distrage atenția cititorului și reduce probabilitatea că va fi citit în integritate. Și așa suntem bombardați cu zeci de mesaje și alerte pe zi, la ce ne mai trebuie o sarcină cognitivă adițională?&lt;/p&gt;
&lt;h3&gt;Căutare&lt;/h3&gt;
&lt;p&gt;Serviciile de email oferă opțiunea de a căuta mesaje după cuvinte-cheie. Problema este că datele despre tranzacții nu se află în textul mesajelor electronice, ci în fișierele atașate, care sunt arhivate și criptate. Deci, informația din ele nu este indexată și nu poate fi găsită, decât printr-un efort manual.&lt;/p&gt;
&lt;h4&gt;Rezumat Fincombank&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Textul în sine nu conține informații confidențiale.&lt;/li&gt;
&lt;li&gt;Textul nu este personalizat, ceea ce simplifică sarcina unui răufăcător care ar vrea să impersoneze banca în mesaje de phishing. Interesant e că fișierul atașat e unic și e asociat cu contul meu, ceea ce înseamnă sistemul care trimite mesajele le poate personaliza.&lt;/li&gt;
&lt;li&gt;Răspunsul la cele două întrebări despre starea contului se ascunde după un număr mare de pași adiționali.&lt;/li&gt;
&lt;li&gt;Mesajele nu sunt ”căutabile”.&lt;/li&gt;
&lt;li&gt;Pe alocuri securitatea utilizatorilor este pusă în pericol.&lt;/li&gt;
&lt;li&gt;Un inamic care a interceptat mesajul va găsi fără probleme parola, deci măsurile de securitate sunt aproape irelevante.&lt;/li&gt;
&lt;li&gt;Culmea este că după ce treci prin această aventură, te ciocnești cu ultima problemă - care sunt ultimele 4 cifre din IDNP? Tu le ții minte? (eu - da).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Victoriabank&lt;/h2&gt;
&lt;p&gt;Mesajele de la Victoriabank arată astfel:&lt;/p&gt;
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;https://railean.net/media/blogs/a/quick-uploads/p421/vb-complete-masked.png?mtime=1557605672&quot; rel=&quot;lightbox[p421]&quot; id=&quot;link_14&quot;&gt;&lt;img alt=&quot;Evaluarea uzabilității și securității extraselor de cont prin email&quot; src=&quot;https://railean.net/media/blogs/a/quick-uploads/p421/.evocache/vb-complete-masked.png/fit-400x320.png?mtime=1557605672&quot; width=&quot;238&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Răspunsul la cele două întrebări despre starea contului se află chiar în mesaj, așadar utilitatea acestuia nu poate fi pusă la îndoială.&lt;/li&gt;
&lt;li&gt;Textul e personalizat, acolo văd numele meu, e un semn bun.&lt;/li&gt;
&lt;li&gt;Datele despre tranzacții sunt chiar în mesaj, deci acestea sunt ”căutabile”.&lt;/li&gt;
&lt;li&gt;Mesajul începe cu o ofertă specială, exact cum 99% din spam - credit rapid, bani gratuiți, investește CHIAR ACUM, etc. Cineva care vede mesajul pe ecranul unui telefon mic, va citi aceste paragrafe și își va spune ”OOo! ofertă unică! Hai să le dau ultimele 12 cifre din numărul cardului și primele 4 cifre din PIN, ura!!1”.&lt;/li&gt;
&lt;li&gt;Deși mesajul e în română, oferta specială din antet vine și în varianta rusă. Probabil programul care generează prima parte a mesajului ține cont de preferințele utilizatorului, iar programul care generează prima parte - nu. Probabil programele au fost scrise de persoane diferite.&lt;/li&gt;
&lt;li&gt;În schimb, prima parte a mesajului e cu diacritice, iar a doua - nu. Probabil textul care a fost transmis programatorilor, a venit din surse diferite (una din aceste surse posibil că a învățat în aceeași clasă cu persoana care scrie textele pentru FCB).&lt;/li&gt;
&lt;li&gt;La capitolul securitate, mesajul se termină cu proclamația precum că textul este confidențial și cu rugămintea nostimă de a-l transmite înapoi expeditorului, dacă a ajuns la noi din greșeală. Acest text vine în română (cu diacritice) și în engleză (fără diacritice, din păcate [e.g., &amp;quot;întruchipătion of evil&amp;quot;]).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;În general, VB a echilibrat utilitatea și securitatea. Deși textul conține numărul contului și alte detalii, putem presupune că acele entități care sunt capabile să intercepteze mesajele de acest gen, cunosc deja unde am conturi, cine-mi sunt inamicii pe Facebook și cine m-a învățat să scriu cu diacritice. Mai mult decât atât, aceste mesaje sunt indexate și se supun căutării. Adică, dacă caut o tranzacție de 548 EUR de 3 ani vechime, în aplicația mea de email scriu ”548” și voi găsi mesajul. În cazul FCB - nu.&lt;/p&gt;
&lt;h3&gt;Ce fac alte bănci?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Nu transmit astfel de mesaje, dar în schimb oferă o aplicație pe smartphone care îți permite să accesezi rapid contul.&lt;/li&gt;
&lt;li&gt;Transmit mesaje în care se spune ”Dragă Tractorin Prițăpovici, apasă aici ca să vezi extrasul” și te duc la ei pe site sau te îndeamnă să instalezi aplicația lor pe telefon.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;În ultimul exemplu, nu se transmite informație despre bilanț și tranzacții, ceea ce înseamnă că entitățile care pot intercepta mesajele nu știu despre conturile și sumele de bani de care dispun clienții.&lt;/p&gt;
&lt;h3&gt;Concluzii și sfaturi bătrânești&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;În ambele cazuri, mesajele pot fi scurtate, pentru a îmbunătăți raportul semnal/zgomot.&lt;/li&gt;
&lt;li&gt;În mesaje sunt inconsistențe lingvistice, care pot fi rectificate ușor.&lt;/li&gt;
&lt;li&gt;Băncile ar putea oferi utilizatorilor opțiunea de a alege ce fel de emailuri vor să primească: informative, utile și ”căutabile”, dar care divulgă anumite date despre tranzacțiile lor; sau uber-securizate, care nu divulgă nimic, dar necesită mai mult efort pentru a fi deschise.&lt;/li&gt;
&lt;li&gt;FCB ar putea oferi gratis acces la serviciul de online banking Fincompay, pentru a rezolva problema mesajelor cu utilitate redusă. Actualmente FCB cere 7 lei/lună pentru acest serviciu, în timp ce alte bănci (e.g., N26, ING Diba, Comdirect, DKB, etc.) oferă conturi gratuite, fără taxe lunare, care sunt 100% accesibile online (chiar și contul îl poți deschide fără de a-ți ridica fundul de pe canapea).&lt;/li&gt;
&lt;li&gt;Băncile ar trebui să țină cont de uzabilitate, deoarece aceasta deseori se intersectează cu securitatea. Dacă nu ești atent (cum în exemplul domainului expirat), asta poate avea implicații dezastruoase pentru clientelă.&lt;/li&gt;
&lt;li&gt;Personalizarea lingvistică se poate rezolva în felul următor - data viitoare când trimiți clienților un email, include linkuri unice cu textul ”[Vreau corespondența să fie în limba română] [Пишите по-русски] și [I want all future correspondence to be in English]”.&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://railean.net/index.php/extras-de-cont-bank-email-usability-security&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<p>Într-un articol precedent am <a href="http://railean.net/index.php/interfetele-grafice-keystroke-level-modeling">comparat două interfețe de online banking din Moldova</a>. Acea oferită de Fincombank era net superioară interfeței Agroindbank, pentru scenariul achitării facturilor.</p>
<p>De data aceasta voi evalua aspectele de uzabilitate și securitate a mesajelor de tip ”extras de cont” care vin regulat pe email, de la Fincombank (FCB) și Victoriabank (VB). Scenariul evaluat este găsirea răspunsului la 2 întrebări: <em>„câți bani am în cont?”</em> și <em>„ce tranzacții am efectuat luna aceasta?”</em>.</p>
<p>Înainte de a porni la drum, trebuie să clarific un detaliu - un email poate fi interceptat în timpul transmiterii de la un server la altul. Există diverse nuanțe tehnice care trebuie luate în considerație, dar pentru a simplifica lucrurile: ceea ce expediezi sau primești prin email <em>nu este confidențial</em>.</p>
<p>Așadar, să purcedem la lectură!<br />
</p>
<h2>Fincombank</h2>
<p>Așa arată mesajele de la FCB (<a href="http://railean.net/media/blogs/a/quick-uploads/p421/fcb-email.png">screenshot, ca să vezi în culori</a>).</p>
<blockquote>
<p>Buna ziua, stimate Client!</p>
<p>La acest e-mail veti gasi atasat extrasul cardului Dvs.<br />
Pentru a deschide fisierul dat, Va rugam sa utilizati ultimele 4 (patru) cifre a codului fiscal din buletinul Dvs. de identitate.<br />
La fel, pentru a deschide acest fisier aveti nevoie de un program de dezarhivare. Daca nu aveti acest program instalat pe calculatorul Dvs., il puteti descarca gratuit de pe adresa <a href="http://www.7-zip.org" class="linebreak">http://www.7-zip.org</a> <em> sau <a href="http://www.7zip-ro.com/ro/" class="linebreak">http://www.7zip-ro.com/ro/</a> </em>.</p>
<p>Va multumim de interesul manifestat pentru produsele FinComBank S.A. si Va rugam sa adaugati adresa de e-mail in lista Dvs de contacte pentru a fi sigur ca scrisorile nu vor fi percepute ca spam.</p>
<p>Acest mesaj este transmis automat. Va rugam sa nu raspundeti la acest mesaj.</p>
<ul>
<li>FinComBank S.A. nu poarta raspundere pentru instalarea/utilizarea de catre Client a produselor soft pentru arhivarea/dezarhivarea fisierelor trimise. Responsabilitatea pentru alegerea si utilizarea unui anumit instrument apartine utilizatorului final.</li>
</ul>
<p>Cu stima,<br />
FinComBank S.A.</p>
<hr />
<p>Добрый день, уважаемый Клиент!</p>
<p>В приложении к этому письму Вы найдете выписку по Вашей карте.<br />
Чтобы открыть файл, используйте, пожалуйста, последние четыре (4) цифры идентификационного кода Вашего удостоверения личности.<br />
Также для открытия этого файла вам необходима программа для разархивирования. Если, на вашем компьютере не установлена эта программа, вы можете скачать ее бесплатно по адресу <a href="http://www.7-zip.org" class="linebreak">http://www.7-zip.org</a> <em> или <a href="http://www.7zip-ro.com/ro/" class="linebreak">http://www.7zip-ro.com/ro/</a> </em>.</p>
<p>Благодарим за интерес, проявленный к продуктам FinComBank S.A. и просим Вас добавить наш e-mail адрес в список контактов, чтобы быть уверенным, что письма не рассматриваются как спам.</p>
<p>Это сообщение передается автоматически. Пожалуйста, не отвечайте на него.</p>
<ul>
<li>FinComBank S.A. не несет ответственности за установку/использования клиентами продуктов для программного обеспечения для архивирования/разархивирования отправленных файлов. Ответственность за выбор и использование конкретного инструмента принадлежит конечному пользователю.</li>
</ul>
<p>С уважением,<br />
FinComBank S.A.</p>
</blockquote>
<p>Ce nu e bine aici?</p>
<h3>Securitatea</h3>
<p>Mesajul ne îndeamnă să vizităm un careva web-site și să instalăm o aplicație pentru a putea deschide fișierul atașat. Sunt câteva probleme:</p>
<ul>
<li>Utilizatorul se expune unui risc sporit. Actualmente, adresa 7zip-ro.com nu este validă. Asta înseamnă că un răufăcător ar putea chiar acum să înregistreze acest domain, să lanseze pe el un site care arată exact ca 7-zip.org, și să distribuie un program malițios, care pe lângă 7-zip mai instalează și un backdoor care va expedia undeva toate parolele, adresele vizitate, documente din calculator, etc. Utilizatorul va face ceea ce face întotdeauna: download, next, I agree, next, next, continue, finish. O variație a unui atac nu necesită cumpărarea domainului; cineva care administrează o rețea ar putea redirecționa apelurile către 7-zip.org spre un site interpus.</li>
<li>Banca include și o remarcă de ”spălare a mâinilor” - noi nu purtăm răspundere, bla bla bla. Practica arată că <a href="https://cris.fau.de/converis/portal/publication/203730504">responsabilitatea trebuie plasată pe entitatea cel mai bine-pregătită s-o poarte</a>. În caz contrar ajungem la decizii sub-optimale, iraționale sau chiar periculoase. Acest principiu fundamental a fost încălcat. Chiar e rezonabil să așteptăm de la un fermier care a mers pe site-ul 7zip, să știe diferența dintre 32-bit exe, 64-bit exe, MSI și așa mai departe?</li>
<li>Mai trist e faptul că îndrumarea nici nu este necesară. Orice sistem de operare modern poate deschide un fișier ZIP fără careva aplicații terțe (Windows poate s-o facă din <a href="https://en.wikipedia.org/wiki/Zip_(file_format)#Implementation">cel puțin anul 2000</a>). Totul putea fi evitat.</li>
</ul>
<h3>Cifrele magice</h3>
<p>Care a fost intenția folosirii arhivei cu parolă? Să protejeze datele? Să ascundă starea contului meu de ochii vicleni a ciberhoților?</p>
<p>Iată codul unui program care găsește parola în două secunde, încercând pe rând variantele de la 0000 la 9999. Nu în zadar în popor există expresia ”zece linii în cruce, parola se duce” :-)</p>
<p><!-- codeblock line=1 --></p><pre class="codeblock"><code>from zipfile import PyZipFile
z = PyZipFile('extras.zip')

for i in range(0, 10000):
    try:
        z.extractall(pwd=b'%04d' % i)
    except:
        pass
    else:
        print('Password = %04d' % i)
        break</code></pre><p><!-- /codeblock --></p>

<p>Cu alte cuvinte, această măsură de securitate nu reprezintă un obstacol în calea criminalilor, dar e un obstacol în fața utilizatorilor. Aceștia trebuie să treacă prin niște pași adiționali ca să vadă starea contului lor, sunt împinși spre riscuri nenecesare, în timp ce banca ”nu poartă răspundere”.</p>
<h3>Diacritice</h3>
<p>Acest mesaj ar fi mai plăcut dacă era scris cu diacritice. În secolul nostru, chiar și un Tamagochi sau un ”999-in-1 brick game” poate afișa text Unicode, cu diacritice, umlauturi, accente exotice și emoji. E una când un adolescent scrie comentarii pe Youtube fără diacritice, dar e alta când o instituție serioasă face același lucru. Sunt curios să aflu, dacă româna din aceste mesaje e fără diacritice deoarece cuiva pur și simplu nu-i pasă de limbă, sau e din cauza îngrijorării că mesajul nu va fi afișat corect la unii clienți. </p>
<p>Bonus: cum sună <a href="https://www.youtube.com/watch?v=yOCtS9s9M4s">româna fără diacritice</a>.</p>
<h3>Personalizare</h3>
<p>Un mesaj adresat cuiva ar putea începe cu numele persoanei: ”Dragă Tractorin Prițăpovici, ...”. O astfel de personalizare îl face mai credibil și îl evidențiază pe fonul spamului, care deseori nu e suficient de sofisticat ca să știe numele persoanei, căreia i se adresează.</p>
<p>”Client” sau ”Vă” scris cu majusculă e o încercare de a exprima respect, dar aceasta nu se compară cu cele mai dulci cuvinte din lume: <code class="codespan">$firstName $lastName</code>.</p>
<h3>Aspectul lingvistic</h3>
<p>O copie a textului vine și în limba rusă. Sunt clientul acestei bănci de peste zece ani și în această perioadă au fost multe ocazii să mă întrebe în ce limbă vreau să-mi vină mesajele, iar apoi să mi le expedieze anume în acea limbă. Textul lung distrage atenția cititorului și reduce probabilitatea că va fi citit în integritate. Și așa suntem bombardați cu zeci de mesaje și alerte pe zi, la ce ne mai trebuie o sarcină cognitivă adițională?</p>
<h3>Căutare</h3>
<p>Serviciile de email oferă opțiunea de a căuta mesaje după cuvinte-cheie. Problema este că datele despre tranzacții nu se află în textul mesajelor electronice, ci în fișierele atașate, care sunt arhivate și criptate. Deci, informația din ele nu este indexată și nu poate fi găsită, decât printr-un efort manual.</p>
<h4>Rezumat Fincombank</h4>
<ul>
<li>Textul în sine nu conține informații confidențiale.</li>
<li>Textul nu este personalizat, ceea ce simplifică sarcina unui răufăcător care ar vrea să impersoneze banca în mesaje de phishing. Interesant e că fișierul atașat e unic și e asociat cu contul meu, ceea ce înseamnă sistemul care trimite mesajele le poate personaliza.</li>
<li>Răspunsul la cele două întrebări despre starea contului se ascunde după un număr mare de pași adiționali.</li>
<li>Mesajele nu sunt ”căutabile”.</li>
<li>Pe alocuri securitatea utilizatorilor este pusă în pericol.</li>
<li>Un inamic care a interceptat mesajul va găsi fără probleme parola, deci măsurile de securitate sunt aproape irelevante.</li>
<li>Culmea este că după ce treci prin această aventură, te ciocnești cu ultima problemă - care sunt ultimele 4 cifre din IDNP? Tu le ții minte? (eu - da).</li>
</ul>
<h2>Victoriabank</h2>
<p>Mesajele de la Victoriabank arată astfel:</p>
<div class="image_block"><a href="https://railean.net/media/blogs/a/quick-uploads/p421/vb-complete-masked.png?mtime=1557605672" rel="lightbox[p421]" id="link_14"><img alt="Evaluarea uzabilității și securității extraselor de cont prin email" src="https://railean.net/media/blogs/a/quick-uploads/p421/.evocache/vb-complete-masked.png/fit-400x320.png?mtime=1557605672" width="238" height="320" class="loadimg" /></a></div>
<ul>
<li>Răspunsul la cele două întrebări despre starea contului se află chiar în mesaj, așadar utilitatea acestuia nu poate fi pusă la îndoială.</li>
<li>Textul e personalizat, acolo văd numele meu, e un semn bun.</li>
<li>Datele despre tranzacții sunt chiar în mesaj, deci acestea sunt ”căutabile”.</li>
<li>Mesajul începe cu o ofertă specială, exact cum 99% din spam - credit rapid, bani gratuiți, investește CHIAR ACUM, etc. Cineva care vede mesajul pe ecranul unui telefon mic, va citi aceste paragrafe și își va spune ”OOo! ofertă unică! Hai să le dau ultimele 12 cifre din numărul cardului și primele 4 cifre din PIN, ura!!1”.</li>
<li>Deși mesajul e în română, oferta specială din antet vine și în varianta rusă. Probabil programul care generează prima parte a mesajului ține cont de preferințele utilizatorului, iar programul care generează prima parte - nu. Probabil programele au fost scrise de persoane diferite.</li>
<li>În schimb, prima parte a mesajului e cu diacritice, iar a doua - nu. Probabil textul care a fost transmis programatorilor, a venit din surse diferite (una din aceste surse posibil că a învățat în aceeași clasă cu persoana care scrie textele pentru FCB).</li>
<li>La capitolul securitate, mesajul se termină cu proclamația precum că textul este confidențial și cu rugămintea nostimă de a-l transmite înapoi expeditorului, dacă a ajuns la noi din greșeală. Acest text vine în română (cu diacritice) și în engleză (fără diacritice, din păcate [e.g., &quot;întruchipătion of evil&quot;]).</li>
</ul>
<p>În general, VB a echilibrat utilitatea și securitatea. Deși textul conține numărul contului și alte detalii, putem presupune că acele entități care sunt capabile să intercepteze mesajele de acest gen, cunosc deja unde am conturi, cine-mi sunt inamicii pe Facebook și cine m-a învățat să scriu cu diacritice. Mai mult decât atât, aceste mesaje sunt indexate și se supun căutării. Adică, dacă caut o tranzacție de 548 EUR de 3 ani vechime, în aplicația mea de email scriu ”548” și voi găsi mesajul. În cazul FCB - nu.</p>
<h3>Ce fac alte bănci?</h3>
<ul>
<li>Nu transmit astfel de mesaje, dar în schimb oferă o aplicație pe smartphone care îți permite să accesezi rapid contul.</li>
<li>Transmit mesaje în care se spune ”Dragă Tractorin Prițăpovici, apasă aici ca să vezi extrasul” și te duc la ei pe site sau te îndeamnă să instalezi aplicația lor pe telefon.</li>
</ul>
<p>În ultimul exemplu, nu se transmite informație despre bilanț și tranzacții, ceea ce înseamnă că entitățile care pot intercepta mesajele nu știu despre conturile și sumele de bani de care dispun clienții.</p>
<h3>Concluzii și sfaturi bătrânești</h3>
<ul>
<li>În ambele cazuri, mesajele pot fi scurtate, pentru a îmbunătăți raportul semnal/zgomot.</li>
<li>În mesaje sunt inconsistențe lingvistice, care pot fi rectificate ușor.</li>
<li>Băncile ar putea oferi utilizatorilor opțiunea de a alege ce fel de emailuri vor să primească: informative, utile și ”căutabile”, dar care divulgă anumite date despre tranzacțiile lor; sau uber-securizate, care nu divulgă nimic, dar necesită mai mult efort pentru a fi deschise.</li>
<li>FCB ar putea oferi gratis acces la serviciul de online banking Fincompay, pentru a rezolva problema mesajelor cu utilitate redusă. Actualmente FCB cere 7 lei/lună pentru acest serviciu, în timp ce alte bănci (e.g., N26, ING Diba, Comdirect, DKB, etc.) oferă conturi gratuite, fără taxe lunare, care sunt 100% accesibile online (chiar și contul îl poți deschide fără de a-ți ridica fundul de pe canapea).</li>
<li>Băncile ar trebui să țină cont de uzabilitate, deoarece aceasta deseori se intersectează cu securitatea. Dacă nu ești atent (cum în exemplul domainului expirat), asta poate avea implicații dezastruoase pentru clientelă.</li>
<li>Personalizarea lingvistică se poate rezolva în felul următor - data viitoare când trimiți clienților un email, include linkuri unice cu textul ”[Vreau corespondența să fie în limba română] [Пишите по-русски] și [I want all future correspondence to be in English]”.</li>
</ul><div class="item_footer"><p><small><a href="https://railean.net/index.php/extras-de-cont-bank-email-usability-security">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://railean.net/index.php/extras-de-cont-bank-email-usability-security#comments</comments>
			<wfw:commentRss>https://railean.net/index.php?tempskin=_rss2&#38;disp=comments&#38;p=421</wfw:commentRss>
		</item>
				<item>
			<title>Ce presupune conformitatea cu GDPR?</title>
			<link>https://railean.net/index.php/conformitatea-cu-gdpr</link>
			<pubDate>Wed, 24 Oct 2018 09:17:00 +0000</pubDate>			<dc:creator>gr8dude</dc:creator>
			<category domain="alt">Technology / programming</category>
<category domain="main">Education</category>			<guid isPermaLink="false">419@https://railean.net/</guid>
						<description>&lt;p&gt;&lt;strong&gt;Notă: acest articol este publicat într-o formă redactată.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Din data de 25 mai 2018 a intrat în vigoare GDPR (General Data Protection Regulation). Voi explica în termeni simpli, în baza unui exemplu, care sunt câteva din cerințele fundamentale, care trebuie satisfăcute pentru ca afirmația dată să fie justă. Ceea ce urmează, e bazat pe experiența mea de cercetare în domeniul &lt;em&gt;usable privacy for IoT (Internet of Things)&lt;/em&gt; în cadrul proiectului &lt;a href=&quot;http://privacyus.eu&quot;&gt;Privacy&amp;amp;Us&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Înainte de a porni la drum, te atenționez că nu sunt un jurist. Povestirea mea e mai degrabă una inginerească, adresată programatorilor sau altor oameni care au tangențe cu elaborarea sistemelor software, care într-un mod sau altul &amp;quot;ating&amp;quot; date personale. În același timp, mă adresez și omului de rând, care vrea să fie informat despre ceea ce se întâmplă în societate. Pentru a verifica independent veridicitatea afirmațiilor mele, ești încurajat să consulți &lt;a href=&quot;https://gdpr-info.eu/&quot;&gt;textul propriu-zis&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Transparență&lt;/h2&gt;
&lt;p&gt;Unul din pilonii de bază a GDPR este &amp;quot;&lt;em&gt;informed consent&lt;/em&gt;&amp;quot;, adică &amp;quot;consimțământ conștient&amp;quot;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The basic requirements for the effectiveness of a valid legal consent are defined in Article 7 and specified further in recital 32 of the GDPR. Consent must be freely given, specific, informed and unambiguous.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;De exemplu, dacă apeși butonul &amp;quot;Sunt de acord&amp;quot; când te înregistrezi pe un site, trebuie să înțelegi care sunt implicațiile acestei decizii. Aceasta, la rândul său, implică faptul că sistemul este complet &lt;em&gt;transparent&lt;/em&gt;, iar utilizatorii știu ce se petrece cu datele lor.&lt;/p&gt;
&lt;p&gt;În linii generale, asta se reduce la cunoașterea răspunsurilor la câteva întrebări cruciale. Răspunsurile nu pot fi îngropate sub un morman de hârtie, ci trebuie să fie la suprafață. Pe site-ul xxxxxxxxxx putem găsi doar unele răspunsuri: &lt;/p&gt;
&lt;table&gt;
  &lt;tr&gt;
    &lt;th&gt;Întrebare&lt;/th&gt;
    &lt;th&gt;Răspuns oferit pe xxxxxxxxxx&lt;/th&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;care date sunt colectate?&lt;/td&gt;
    &lt;td&gt;&lt;em&gt;Presupunem&lt;/em&gt; că e adresa email, numele și prenumele, țara și localitatea, numărul de telefon.&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;cu ce scop se colectează?&lt;/td&gt;
    &lt;td&gt;&quot;Datele personale vor fi utilizate pentru xxxxxxxxxx xxxxxxxxxx&quot;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;cine are acces la ele?&lt;/td&gt;
    &lt;td&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;cât timp vor fi păstrate datele?&lt;/td&gt;
    &lt;td&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;unde sunt păstrate datele?&lt;/td&gt;
    &lt;td&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;E clar că nu sunt toate răspunsurile pe loc, așadar nu poate fi vorba de consimțământ informat, cum prevăd canoanele GDPR. &lt;/p&gt;
&lt;p&gt;Mai mult ca atât, ca inginer sunt conștient de faptul că atunci când browserul deschide un site, pe server se transmit și alte date, care nu sunt explicit declarate în acele câmpuri: adresa IP (tot &lt;a href=&quot;https://gdpr-info.eu/issues/personal-data/&quot;&gt;se consideră „informație cu caracter personal”&lt;/a&gt;), tipul browserului (de exemplu, Firefox sau Chrome) sau sistemul de operare (Windows, Android, etc.), printre altele...&lt;/p&gt;
&lt;p&gt;La prima vedere, aici nu este nimic suspect. Totuși, orice om care elaborează un sistem (nu doar programatorii, ci și managerii care îi organizează), trebuie să anticipeze unele scenarii negative. Să zicem, dacă într-o zi la putere vine un dictator care zice „hai să-i presăm pe vorbitorii limbii X”, îi va prinde bine o listă în care ai toate numele, numerele de telefon, adresele de email și &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language&quot;&gt;limbile pe care le preferă browserul acestui om&lt;/a&gt;. Sau dacă lista asta ajunge în mâinile unor criminali, care se vor gândi de la cine să stoarcă bani în primul rând, le va prinde bine aceeași listă, în care scrie „negru pe alb” cine are ultimul model de iPhone. Sau altfel, dacă este prezentă și adresa ta IP în listă, le va fi ușor să-ți coreleze identitatea cu niște comentarii anonime (sau un pseudonim) de pe unele site-uri supuse lor.&lt;/p&gt;
&lt;p&gt;Pe lângă toate astea, trebuie să înțelegi că astăzi justiția în Moldova este atât de pliabilă, încât e ușor să obții orice decizie, ca mai apoi cineva să pretindă că „extragerea acestor date de pe server a fost complet legală”. „Justiția” te va obliga să divulgi aceste date, în numele securității statului, iar dacă opui rezistență, vor găsi un articol, care după un pic de acrobatică mentală, va fi aplicabil asupra ta.&lt;/p&gt;
&lt;h2&gt;Acțiune explicită&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;consent must be unambiguous, which means it requires either a statement or a clear affirmative act. Consent cannot be implied and must always be given through an opt-in, a declaration or an active motion, so that there is no misunderstanding that the data subject has consented to the particular processing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;În general, asta se rezolvă printr-o bifă separată, pe care o activezi ca să exprimi explicit acordul tău cu colectarea acestor date. Așadar, nu este suficient să adaugi o remarcă de tip „atenție, prin apăsarea butonului &#039;Înregistrare&#039; tu ne dai acordul să preluăm datele”, trebuie să ai o bifă sau un buton separat prin care exprimi acordul cu colectarea datelor, și alt buton prin care zici că te înregistrezi pe site.&lt;/p&gt;
&lt;h2&gt;Controller, processor&lt;/h2&gt;
&lt;p&gt;Imagineză-ți că ești un fermier din Porumbeni, care cultivează zarzavaturi, preia comenzi prin Internet și livrează produse clienților. Ești expert în agricultură, dar nu și în tehnologii. Când auzi cuvântul „server”, ți se năzare „sever” sau „север”.&lt;/p&gt;
&lt;p&gt;Clienții tăi îți dau numele lor și adresa, că altfel nu le poți livra roșiile și vinetele. Ai rugat pe cineva să-ți facă un web-site, care este găzduit într-un data centru modern din Chiperceni. Când se înregistrează cineva pe site, datele care ți-au fost încredințate ție, fizic - sunt păstrate în Chiperceni; deși utilizatorii o făceau pe site-ul porumbeni-fresh.md, pe care figura numele companiei tale și era afișată fotografia ta. Cu alte cuvinte, omul care se înregistrează pe site, consideră că stabilește o relație cu tine, și nu cu un oarecare administrator de sisteme sau o întreprindere din Chiperceni.&lt;/p&gt;
&lt;p&gt;În acest exemplu, compania ta (tu ești fermierul) &lt;strong&gt;controlează &lt;/strong&gt;informația, iar data centrul din Chiperceni o &lt;strong&gt;procesează &lt;/strong&gt;în numele tău. Așadar, tu faci ceea ce știi mai bine, iar ei fac ceea ce știu ei mai bine, și toți sunt fericiți.&lt;/p&gt;
&lt;p&gt;Conform prevederilor GDPR, utilizatorul trebuie să cunoască &lt;a href=&quot;https://gdpr-info.eu/chapter-4/&quot;&gt;cine procesează datele, și cine le controlează&lt;/a&gt;. În cazul specific xxxxxxxxxx xxxxxxxxxx despre care discutăm, noi nu știm cine sunt aceste entități. Cititorul atent va vedea, că datele sunt salvate pe serverele Google, deoarece pagina folosește serviciul Google Forms, respectiv Google e „data processor”. Va partaja oare Google datele cu persoane terțe? În ce mod ei protejează datele?&lt;/p&gt;
&lt;h2&gt;Dreptul la rectificarea datelor colectate&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://gdpr-info.eu/art-16-gdpr/&quot;&gt;Articolul 16&lt;/a&gt; spune că trebuie să existe o interfață, prin care un utilizator poate modifica datele personale pe care le-a introdus în sistem. Să zicem, dacă am scris acolo că mă cheama „Zorzonel Ariceli”, iar apoi am observat că din greșeală am scris cu un singur „L” (corect e „Aricelli”), trebuie să fiu capabil să rectific datele. Pe site însă nu există facilități de redactare.&lt;/p&gt;
&lt;h2&gt;Dreptul de a șterge datele&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://gdpr-info.eu/art-17-gdpr/&quot;&gt;Articolul 17&lt;/a&gt; spune că sistemul trebuie să permită utilizatorilor să șteargă datele despre ei.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The data subject shall have the right to obtain from the controller the erasure of personal data concerning him or her without undue delay and the controller shall have the obligation to erase personal data without undue delay.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Site-ul nu oferă un formular prin care pot cere ștergerea datelor despre mine.&lt;/p&gt;
&lt;h2&gt;Obligația de a desemna un „data protection officer”&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot; https://gdpr-info.eu/art-37-gdpr/&quot;&gt;Articolul 37&lt;/a&gt; afirmă că trebuie să fie numită o persoană responsabilă, căreia i se pot adresa utilizatorii atunci când au careva întrebări sau probleme legate de prelucrarea datelor personale:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The controller and the processor shall designate a data protection officer
...
The controller or the processor shall publish the contact details of the data protection officer&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pe site nu se indică aceste detalii. Acolo se spune despre unele persoane implicate: xxxxxxxxxx, xxxxxxxxxx, xxxxxxxxxx. Cine din ei răspunde de datele personale? Toți? Nimeni?&lt;/p&gt;
&lt;h1&gt;Ce zice legislația moldovenească?&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;http://lex.justice.md/md/340495/&quot;&gt;Legea 133 privind protecţia datelor cu caracter personal&lt;/a&gt;, are și ea de spus câte ceva la această temă. Pe alocuri e aliniată cu GDPR și promovează idei similare:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Art. 5 (2): ”Consimţămîntul privind prelucrarea datelor cu caracter personal poate fi retras în orice moment de către subiectul datelor cu caracter personal”. Cum îl retrag?&lt;/li&gt;
&lt;li&gt;Art. 13 (1.e): ”... informaţii privind modul de exercitare a dreptului de intervenţie asupra datelor cu caracter personal.” Cum o fac?&lt;/li&gt;
&lt;li&gt;Art. 14 (a): ”Orice subiect al datelor cu caracter personal are dreptul de a obţine de la operator sau persoana împuternicită de către acesta, la cerere şi în mod gratuit: ... rectificarea, actualizarea, blocarea sau ştergerea datelor cu caracter personal”. Cum rectific?&lt;/li&gt;
&lt;li&gt;Art. 13 (1): ”La prelucrarea datelor cu caracter personal, operatorul este obligat să ia măsurile organizatorice şi tehnice necesare pentru protecţia datelor cu caracter personal împotriva distrugerii, modificării, blocării, copierii, răspîndirii, precum şi împotriva altor acţiuni ilicite, ...” - ținem ”în minte” această cerință, vom reveni la ea.&lt;/li&gt;
&lt;li&gt;Art. 32 (1): ”Prezentul articol se aplică în cazul transmiterii către un alt stat, ...” + (3) ”poate avea loc doar cu autorizarea Centrului”. Să presupunem că s-a făcut o careva înțelegere cu Google, ca aceste date să se păstreze anume într-un data centru gestionat de Google în Moldova, sau că aceasta a fost autorizat de Centrul Naţional pentru Protecţia Datelor cu Caracter Personal.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Concluzie&lt;/h1&gt;
&lt;p&gt;Am evidențiat doar unele aspecte superficiale a ”aisbergului GDPR”. Tema este atât de complexă, încât deseori chiar și acei care ar trebui să înțeleagă toate nuanțele - &lt;a href=&quot;https://link.springer.com/article/10.1007/s10664-017-9517-1&quot;&gt;nu le înțeleg&lt;/a&gt; (publicația poate fi descărcată gratis depe Sci-hub).&lt;/p&gt;
&lt;p&gt;Este important ca acei care gestionează datele personale, s-o facă cu cap și cu grijă. Cred că cel mai bine a spus-o Boromir:
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;https://railean.net/media/blogs/a/quick-uploads/p419/gdpr-boromir-take2.jpg?mtime=1540304572&quot; rel=&quot;lightbox[p419]&quot; id=&quot;link_12&quot;&gt;&lt;img alt=&quot;Ce presupune conformitatea cu GDPR?&quot; src=&quot;https://railean.net/media/blogs/a/quick-uploads/p419/.evocache/gdpr-boromir-take2.jpg/fit-400x320.jpg?mtime=1540304572&quot; width=&quot;400&quot; height=&quot;236&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Am văzut că și afirmația despre respectarea legii locale poate fi pusă la îndoială. De fapt, aceasta ar putea pune în pericol toată operațiunea, din cauza unor „grave încălcări a legislației și a drepturilor cetățenilor”.&lt;/p&gt;
&lt;h1&gt;Bonus - ce e de făcut?&lt;/h1&gt;
&lt;h3&gt;Pentru xxxxxxxxxx&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Să nu urmați sfatul unui om pe Internet, care spune că nu e jurist, fără de a consulta un jurist&lt;/li&gt;
&lt;li&gt;Mai sus am enumerat o listă de întrebări la care nu oferă răspuns pagina - aceste răspunsuri trebuie să fie disponibile&lt;/li&gt;
&lt;li&gt;Să vă gândiți la următoarele:&lt;ul&gt;
&lt;li&gt;prin ce dispozitive se accesează datele colectate? (laptop, telefoane mobile, etc.)&lt;/li&gt;
&lt;li&gt;e securizat fiecare din aceste dispozitive?&lt;/li&gt;
&lt;li&gt;sistemul de operare e actualizat&lt;/li&gt;
&lt;li&gt;sistemul de operare nu a fost instalat de pe un disc obținut din surse dubioase&lt;/li&gt;
&lt;li&gt;accesul la sistem e protejat cu o parolă diferită de 11111&lt;/li&gt;
&lt;li&gt;conturile Google, cu care se accesează datele nu folosesc nici ele parole triviale, sau care se reutilizează pe alte site-uri (mai ales acelea pe care le-ați deschis în Moldova); ați activat „two-factor authentication”&lt;/li&gt;
&lt;li&gt;sistemul nu cumva e o versiune antică de Android sau iOS, care a fost abandonată de producător încă în &#039;45?&lt;/li&gt;
&lt;li&gt;E cert că nu e instalat un keylogger pe acest sistem?&lt;/li&gt;
&lt;li&gt;Cine mai cunoaște parola?&lt;/li&gt;
&lt;li&gt;Cine mai are acces fizic la sistem? (adică, e capabil să conecteze la el un flash disk, să încarce sistemul de pe CD, etc.)&lt;/li&gt;
&lt;li&gt;E același sistem, prin care intrați pe Odnoklassniki?&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Dacă copii a fișierului sunt salvate uneori și pe computer, aceste fișiere sunt criptate?&lt;/li&gt;
&lt;li&gt;Dacă circulează copii a datelor în cadrul echipei - cum le transmiteți între voi?&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Pentru inginerul conștient&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Întotdeauna acordă-ți întrebarea „ce rău se poate întâmpla, dacă datele ajung la persoane terțe?”&lt;/li&gt;
&lt;li&gt;Citește despre &lt;a href=&quot;https://gdpr-info.eu/issues/privacy-impact-assessment/&quot;&gt;DPIA &lt;/a&gt;(data protection impact assessment), e un proces de analiză, prin care se află răspunsurile la întrebarea anterioară și se propun soluții pentru fiecare scenariu&lt;/li&gt;
&lt;li&gt;În calitate de material inspirațional, citește „Computer power and human reason” de Joseph Weizenbaum și „Certainties and doubts - a philosophy of life” de Anatol Rapoport, ca să conștientizezi cât de mare e responsabilitatea de pe umerii tăi.&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://railean.net/index.php/conformitatea-cu-gdpr&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<br />
<b>Notice</b>:  Trying to access array offset on value of type null in <b>/var/www/html/plugins/markdown_plugin/_parsedown_extra.inc.php</b> on line <b>241</b><br />
<p><strong>Notă: acest articol este publicat într-o formă redactată.</strong></p>
<p>Din data de 25 mai 2018 a intrat în vigoare GDPR (General Data Protection Regulation). Voi explica în termeni simpli, în baza unui exemplu, care sunt câteva din cerințele fundamentale, care trebuie satisfăcute pentru ca afirmația dată să fie justă. Ceea ce urmează, e bazat pe experiența mea de cercetare în domeniul <em>usable privacy for IoT (Internet of Things)</em> în cadrul proiectului <a href="http://privacyus.eu">Privacy&amp;Us</a>.</p>
<p>Înainte de a porni la drum, te atenționez că nu sunt un jurist. Povestirea mea e mai degrabă una inginerească, adresată programatorilor sau altor oameni care au tangențe cu elaborarea sistemelor software, care într-un mod sau altul &quot;ating&quot; date personale. În același timp, mă adresez și omului de rând, care vrea să fie informat despre ceea ce se întâmplă în societate. Pentru a verifica independent veridicitatea afirmațiilor mele, ești încurajat să consulți <a href="https://gdpr-info.eu/">textul propriu-zis</a>.</p>

<h2>Transparență</h2>
<p>Unul din pilonii de bază a GDPR este &quot;<em>informed consent</em>&quot;, adică &quot;consimțământ conștient&quot;.</p>
<blockquote>
<p>The basic requirements for the effectiveness of a valid legal consent are defined in Article 7 and specified further in recital 32 of the GDPR. Consent must be freely given, specific, informed and unambiguous.</p>
</blockquote>
<p>De exemplu, dacă apeși butonul &quot;Sunt de acord&quot; când te înregistrezi pe un site, trebuie să înțelegi care sunt implicațiile acestei decizii. Aceasta, la rândul său, implică faptul că sistemul este complet <em>transparent</em>, iar utilizatorii știu ce se petrece cu datele lor.</p>
<p>În linii generale, asta se reduce la cunoașterea răspunsurilor la câteva întrebări cruciale. Răspunsurile nu pot fi îngropate sub un morman de hârtie, ci trebuie să fie la suprafață. Pe site-ul xxxxxxxxxx putem găsi doar unele răspunsuri: </p>
<table>
  <tr>
    <th>Întrebare</th>
    <th>Răspuns oferit pe xxxxxxxxxx</th>
  </tr>
  <tr>
    <td>care date sunt colectate?</td>
    <td><em>Presupunem</em> că e adresa email, numele și prenumele, țara și localitatea, numărul de telefon.</td>
  </tr>
  <tr>
    <td>cu ce scop se colectează?</td>
    <td>"Datele personale vor fi utilizate pentru xxxxxxxxxx xxxxxxxxxx"</td>
  </tr>
  <tr>
    <td>cine are acces la ele?</td>
    <td></td>
  </tr>
  <tr>
    <td>cât timp vor fi păstrate datele?</td>
    <td></td>
  </tr>
  <tr>
    <td>unde sunt păstrate datele?</td>
    <td></td>
  </tr>
</table>
<p>E clar că nu sunt toate răspunsurile pe loc, așadar nu poate fi vorba de consimțământ informat, cum prevăd canoanele GDPR. </p>
<p>Mai mult ca atât, ca inginer sunt conștient de faptul că atunci când browserul deschide un site, pe server se transmit și alte date, care nu sunt explicit declarate în acele câmpuri: adresa IP (tot <a href="https://gdpr-info.eu/issues/personal-data/">se consideră „informație cu caracter personal”</a>), tipul browserului (de exemplu, Firefox sau Chrome) sau sistemul de operare (Windows, Android, etc.), printre altele...</p>
<p>La prima vedere, aici nu este nimic suspect. Totuși, orice om care elaborează un sistem (nu doar programatorii, ci și managerii care îi organizează), trebuie să anticipeze unele scenarii negative. Să zicem, dacă într-o zi la putere vine un dictator care zice „hai să-i presăm pe vorbitorii limbii X”, îi va prinde bine o listă în care ai toate numele, numerele de telefon, adresele de email și <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language">limbile pe care le preferă browserul acestui om</a>. Sau dacă lista asta ajunge în mâinile unor criminali, care se vor gândi de la cine să stoarcă bani în primul rând, le va prinde bine aceeași listă, în care scrie „negru pe alb” cine are ultimul model de iPhone. Sau altfel, dacă este prezentă și adresa ta IP în listă, le va fi ușor să-ți coreleze identitatea cu niște comentarii anonime (sau un pseudonim) de pe unele site-uri supuse lor.</p>
<p>Pe lângă toate astea, trebuie să înțelegi că astăzi justiția în Moldova este atât de pliabilă, încât e ușor să obții orice decizie, ca mai apoi cineva să pretindă că „extragerea acestor date de pe server a fost complet legală”. „Justiția” te va obliga să divulgi aceste date, în numele securității statului, iar dacă opui rezistență, vor găsi un articol, care după un pic de acrobatică mentală, va fi aplicabil asupra ta.</p>
<h2>Acțiune explicită</h2>
<blockquote>
<p>consent must be unambiguous, which means it requires either a statement or a clear affirmative act. Consent cannot be implied and must always be given through an opt-in, a declaration or an active motion, so that there is no misunderstanding that the data subject has consented to the particular processing.</p>
</blockquote>
<p>În general, asta se rezolvă printr-o bifă separată, pe care o activezi ca să exprimi explicit acordul tău cu colectarea acestor date. Așadar, nu este suficient să adaugi o remarcă de tip „atenție, prin apăsarea butonului 'Înregistrare' tu ne dai acordul să preluăm datele”, trebuie să ai o bifă sau un buton separat prin care exprimi acordul cu colectarea datelor, și alt buton prin care zici că te înregistrezi pe site.</p>
<h2>Controller, processor</h2>
<p>Imagineză-ți că ești un fermier din Porumbeni, care cultivează zarzavaturi, preia comenzi prin Internet și livrează produse clienților. Ești expert în agricultură, dar nu și în tehnologii. Când auzi cuvântul „server”, ți se năzare „sever” sau „север”.</p>
<p>Clienții tăi îți dau numele lor și adresa, că altfel nu le poți livra roșiile și vinetele. Ai rugat pe cineva să-ți facă un web-site, care este găzduit într-un data centru modern din Chiperceni. Când se înregistrează cineva pe site, datele care ți-au fost încredințate ție, fizic - sunt păstrate în Chiperceni; deși utilizatorii o făceau pe site-ul porumbeni-fresh.md, pe care figura numele companiei tale și era afișată fotografia ta. Cu alte cuvinte, omul care se înregistrează pe site, consideră că stabilește o relație cu tine, și nu cu un oarecare administrator de sisteme sau o întreprindere din Chiperceni.</p>
<p>În acest exemplu, compania ta (tu ești fermierul) <strong>controlează </strong>informația, iar data centrul din Chiperceni o <strong>procesează </strong>în numele tău. Așadar, tu faci ceea ce știi mai bine, iar ei fac ceea ce știu ei mai bine, și toți sunt fericiți.</p>
<p>Conform prevederilor GDPR, utilizatorul trebuie să cunoască <a href="https://gdpr-info.eu/chapter-4/">cine procesează datele, și cine le controlează</a>. În cazul specific xxxxxxxxxx xxxxxxxxxx despre care discutăm, noi nu știm cine sunt aceste entități. Cititorul atent va vedea, că datele sunt salvate pe serverele Google, deoarece pagina folosește serviciul Google Forms, respectiv Google e „data processor”. Va partaja oare Google datele cu persoane terțe? În ce mod ei protejează datele?</p>
<h2>Dreptul la rectificarea datelor colectate</h2>
<p><a href="https://gdpr-info.eu/art-16-gdpr/">Articolul 16</a> spune că trebuie să existe o interfață, prin care un utilizator poate modifica datele personale pe care le-a introdus în sistem. Să zicem, dacă am scris acolo că mă cheama „Zorzonel Ariceli”, iar apoi am observat că din greșeală am scris cu un singur „L” (corect e „Aricelli”), trebuie să fiu capabil să rectific datele. Pe site însă nu există facilități de redactare.</p>
<h2>Dreptul de a șterge datele</h2>
<p><a href="https://gdpr-info.eu/art-17-gdpr/">Articolul 17</a> spune că sistemul trebuie să permită utilizatorilor să șteargă datele despre ei.</p>
<blockquote>
<p>The data subject shall have the right to obtain from the controller the erasure of personal data concerning him or her without undue delay and the controller shall have the obligation to erase personal data without undue delay.</p>
</blockquote>
<p>Site-ul nu oferă un formular prin care pot cere ștergerea datelor despre mine.</p>
<h2>Obligația de a desemna un „data protection officer”</h2>
<p><a href=" https://gdpr-info.eu/art-37-gdpr/">Articolul 37</a> afirmă că trebuie să fie numită o persoană responsabilă, căreia i se pot adresa utilizatorii atunci când au careva întrebări sau probleme legate de prelucrarea datelor personale:</p>
<blockquote>
<p>The controller and the processor shall designate a data protection officer
...
The controller or the processor shall publish the contact details of the data protection officer</p>
</blockquote>
<p>Pe site nu se indică aceste detalii. Acolo se spune despre unele persoane implicate: xxxxxxxxxx, xxxxxxxxxx, xxxxxxxxxx. Cine din ei răspunde de datele personale? Toți? Nimeni?</p>
<h1>Ce zice legislația moldovenească?</h1>
<p><a href="http://lex.justice.md/md/340495/">Legea 133 privind protecţia datelor cu caracter personal</a>, are și ea de spus câte ceva la această temă. Pe alocuri e aliniată cu GDPR și promovează idei similare:</p>
<ul>
<li>Art. 5 (2): ”Consimţămîntul privind prelucrarea datelor cu caracter personal poate fi retras în orice moment de către subiectul datelor cu caracter personal”. Cum îl retrag?</li>
<li>Art. 13 (1.e): ”... informaţii privind modul de exercitare a dreptului de intervenţie asupra datelor cu caracter personal.” Cum o fac?</li>
<li>Art. 14 (a): ”Orice subiect al datelor cu caracter personal are dreptul de a obţine de la operator sau persoana împuternicită de către acesta, la cerere şi în mod gratuit: ... rectificarea, actualizarea, blocarea sau ştergerea datelor cu caracter personal”. Cum rectific?</li>
<li>Art. 13 (1): ”La prelucrarea datelor cu caracter personal, operatorul este obligat să ia măsurile organizatorice şi tehnice necesare pentru protecţia datelor cu caracter personal împotriva distrugerii, modificării, blocării, copierii, răspîndirii, precum şi împotriva altor acţiuni ilicite, ...” - ținem ”în minte” această cerință, vom reveni la ea.</li>
<li>Art. 32 (1): ”Prezentul articol se aplică în cazul transmiterii către un alt stat, ...” + (3) ”poate avea loc doar cu autorizarea Centrului”. Să presupunem că s-a făcut o careva înțelegere cu Google, ca aceste date să se păstreze anume într-un data centru gestionat de Google în Moldova, sau că aceasta a fost autorizat de Centrul Naţional pentru Protecţia Datelor cu Caracter Personal.</li>
</ul>
<h1>Concluzie</h1>
<p>Am evidențiat doar unele aspecte superficiale a ”aisbergului GDPR”. Tema este atât de complexă, încât deseori chiar și acei care ar trebui să înțeleagă toate nuanțele - <a href="https://link.springer.com/article/10.1007/s10664-017-9517-1">nu le înțeleg</a> (publicația poate fi descărcată gratis depe Sci-hub).</p>
<p>Este important ca acei care gestionează datele personale, s-o facă cu cap și cu grijă. Cred că cel mai bine a spus-o Boromir:
<div class="image_block"><a href="https://railean.net/media/blogs/a/quick-uploads/p419/gdpr-boromir-take2.jpg?mtime=1540304572" rel="lightbox[p419]" id="link_12"><img alt="Ce presupune conformitatea cu GDPR?" src="https://railean.net/media/blogs/a/quick-uploads/p419/.evocache/gdpr-boromir-take2.jpg/fit-400x320.jpg?mtime=1540304572" width="400" height="236" class="loadimg" /></a></div>
<p>Am văzut că și afirmația despre respectarea legii locale poate fi pusă la îndoială. De fapt, aceasta ar putea pune în pericol toată operațiunea, din cauza unor „grave încălcări a legislației și a drepturilor cetățenilor”.</p>
<h1>Bonus - ce e de făcut?</h1>
<h3>Pentru xxxxxxxxxx</h3>
<ul>
<li>Să nu urmați sfatul unui om pe Internet, care spune că nu e jurist, fără de a consulta un jurist</li>
<li>Mai sus am enumerat o listă de întrebări la care nu oferă răspuns pagina - aceste răspunsuri trebuie să fie disponibile</li>
<li>Să vă gândiți la următoarele:<ul>
<li>prin ce dispozitive se accesează datele colectate? (laptop, telefoane mobile, etc.)</li>
<li>e securizat fiecare din aceste dispozitive?</li>
<li>sistemul de operare e actualizat</li>
<li>sistemul de operare nu a fost instalat de pe un disc obținut din surse dubioase</li>
<li>accesul la sistem e protejat cu o parolă diferită de 11111</li>
<li>conturile Google, cu care se accesează datele nu folosesc nici ele parole triviale, sau care se reutilizează pe alte site-uri (mai ales acelea pe care le-ați deschis în Moldova); ați activat „two-factor authentication”</li>
<li>sistemul nu cumva e o versiune antică de Android sau iOS, care a fost abandonată de producător încă în '45?</li>
<li>E cert că nu e instalat un keylogger pe acest sistem?</li>
<li>Cine mai cunoaște parola?</li>
<li>Cine mai are acces fizic la sistem? (adică, e capabil să conecteze la el un flash disk, să încarce sistemul de pe CD, etc.)</li>
<li>E același sistem, prin care intrați pe Odnoklassniki?</li>
</ul></li>
<li>Dacă copii a fișierului sunt salvate uneori și pe computer, aceste fișiere sunt criptate?</li>
<li>Dacă circulează copii a datelor în cadrul echipei - cum le transmiteți între voi?</li>
</ul>
<h3>Pentru inginerul conștient</h3>
<ul>
<li>Întotdeauna acordă-ți întrebarea „ce rău se poate întâmpla, dacă datele ajung la persoane terțe?”</li>
<li>Citește despre <a href="https://gdpr-info.eu/issues/privacy-impact-assessment/">DPIA </a>(data protection impact assessment), e un proces de analiză, prin care se află răspunsurile la întrebarea anterioară și se propun soluții pentru fiecare scenariu</li>
<li>În calitate de material inspirațional, citește „Computer power and human reason” de Joseph Weizenbaum și „Certainties and doubts - a philosophy of life” de Anatol Rapoport, ca să conștientizezi cât de mare e responsabilitatea de pe umerii tăi.</li>
</ul><div class="item_footer"><p><small><a href="https://railean.net/index.php/conformitatea-cu-gdpr">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://railean.net/index.php/conformitatea-cu-gdpr#comments</comments>
			<wfw:commentRss>https://railean.net/index.php?tempskin=_rss2&#38;disp=comments&#38;p=419</wfw:commentRss>
		</item>
				<item>
			<title>Peer-reviewed publications</title>
			<link>https://railean.net/index.php/iot-usable-privacy-peer-reviewed-publications</link>
			<pubDate>Tue, 28 Aug 2018 07:04:00 +0000</pubDate>			<dc:creator>gr8dude</dc:creator>
			<category domain="alt">Technology / programming</category>
<category domain="alt">Education</category>
<category domain="alt">Book distillery</category>
<category domain="main">Research</category>			<guid isPermaLink="false">420@https://railean.net/</guid>
						<description>&lt;p&gt;Here are some of the results of my research conducted within &lt;a href=&quot;https://privacyus.eu/&quot;&gt;Privacy&amp;amp;Us&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Life-long Privacy in the IoT? Measuring Privacy Attitudes Throughout the Life-cycle of IoT Devices&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Published in &lt;a href=&quot;https://link.springer.com/chapter/10.1007/978-3-319-92925-5_9&quot;&gt;Privacy and Identity 2017: Privacy and Identity Management. The Smart Revolution&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Keywords: Internet of Things, IoT, Privacy, Usability&lt;/li&gt;
  &lt;li&gt;Author&#039;s copy [&lt;a href=&quot;https://owncloud.gwdg.de/index.php/s/rQE8nDp2q7b2med&quot;&gt;PDF&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Abstract:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The novelty of the Internet of Things (IoT) as a trend has not&lt;br /&gt;
given society sufficient time to establish a clear view of what IoT is and&lt;br /&gt;
how it operates. As such, people are likely to be unaware of the privacy&lt;br /&gt;
implications, thus creating a gap between the belief of what a device does&lt;br /&gt;
and its actual behaviour. The responses collected in our online survey&lt;br /&gt;
indicate that participants tend to see IoT as computer-like devices, rather&lt;br /&gt;
than appliances, though there are some important misconceptions about&lt;br /&gt;
the way these devices function. We also find that privacy is a primary&lt;br /&gt;
concern when it comes to IoT adoption. Nevertheless, participants have&lt;br /&gt;
a propensity to keep using IoT devices even after they find out that the&lt;br /&gt;
device abuses their trust. Finally, we provide recommendations to IoT&lt;br /&gt;
vendors, to make their products more transparent in terms of privacy.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Let there be LITE: Design and Evaluation of a Label for IoT Transparency Enhancement&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Published in &lt;a href=&quot;https://dl.acm.org/citation.cfm?id=3236126#&quot;&gt;Proceedings of the 20th International Conference on Human-Computer Interaction with Mobile Devices and Services Adjunct&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Keywords: Internet of Things, IoT, privacy, usability, public policy issues, label&lt;/li&gt;
  &lt;li&gt;Author&#039;s copy [&lt;a href=&quot;https://owncloud.gwdg.de/index.php/s/uqcxirRipL7SNrn&quot;&gt;PDF&lt;/a&gt;]&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://owncloud.gwdg.de/index.php/s/qgdbuGlwdGCv7a0&quot;&gt;Poster&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Abstract:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We present a “privacy facts” label, which aims at helping&lt;br /&gt;
non-experts understand how an Internet of Things (IoT)&lt;br /&gt;
device collects and handles data. We describe our design&lt;br /&gt;
methodology, and detail the results of our user study involv-&lt;br /&gt;
ing 31 participants, assessing the efficacy of the label. The&lt;br /&gt;
results suggest that the label was perceived positively by&lt;br /&gt;
the participants, and is a promising solution to help users in&lt;br /&gt;
making informed decisions.&lt;/p&gt;
&lt;/blockquote&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://railean.net/index.php/iot-usable-privacy-peer-reviewed-publications&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Here are some of the results of my research conducted within <a href="https://privacyus.eu/">Privacy&amp;Us</a>.</p>
<h3>Life-long Privacy in the IoT? Measuring Privacy Attitudes Throughout the Life-cycle of IoT Devices</h3>
<ul>
  <li>Published in <a href="https://link.springer.com/chapter/10.1007/978-3-319-92925-5_9">Privacy and Identity 2017: Privacy and Identity Management. The Smart Revolution</a></li>
  <li>Keywords: Internet of Things, IoT, Privacy, Usability</li>
  <li>Author's copy [<a href="https://owncloud.gwdg.de/index.php/s/rQE8nDp2q7b2med">PDF</a>]</li>
</ul>
<p>Abstract:</p>
<blockquote>
<p>The novelty of the Internet of Things (IoT) as a trend has not<br />
given society sufficient time to establish a clear view of what IoT is and<br />
how it operates. As such, people are likely to be unaware of the privacy<br />
implications, thus creating a gap between the belief of what a device does<br />
and its actual behaviour. The responses collected in our online survey<br />
indicate that participants tend to see IoT as computer-like devices, rather<br />
than appliances, though there are some important misconceptions about<br />
the way these devices function. We also find that privacy is a primary<br />
concern when it comes to IoT adoption. Nevertheless, participants have<br />
a propensity to keep using IoT devices even after they find out that the<br />
device abuses their trust. Finally, we provide recommendations to IoT<br />
vendors, to make their products more transparent in terms of privacy.</p>
</blockquote>
<h3>Let there be LITE: Design and Evaluation of a Label for IoT Transparency Enhancement</h3>
<ul>
  <li>Published in <a href="https://dl.acm.org/citation.cfm?id=3236126#">Proceedings of the 20th International Conference on Human-Computer Interaction with Mobile Devices and Services Adjunct</a></li>
  <li>Keywords: Internet of Things, IoT, privacy, usability, public policy issues, label</li>
  <li>Author's copy [<a href="https://owncloud.gwdg.de/index.php/s/uqcxirRipL7SNrn">PDF</a>]</li>
  <li><a href="https://owncloud.gwdg.de/index.php/s/qgdbuGlwdGCv7a0">Poster</a></li>
</ul>
<p>Abstract:</p>
<blockquote>
<p>We present a “privacy facts” label, which aims at helping<br />
non-experts understand how an Internet of Things (IoT)<br />
device collects and handles data. We describe our design<br />
methodology, and detail the results of our user study involv-<br />
ing 31 participants, assessing the efficacy of the label. The<br />
results suggest that the label was perceived positively by<br />
the participants, and is a promising solution to help users in<br />
making informed decisions.</p>
</blockquote><div class="item_footer"><p><small><a href="https://railean.net/index.php/iot-usable-privacy-peer-reviewed-publications">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://railean.net/index.php/iot-usable-privacy-peer-reviewed-publications#comments</comments>
			<wfw:commentRss>https://railean.net/index.php?tempskin=_rss2&#38;disp=comments&#38;p=420</wfw:commentRss>
		</item>
			</channel>
</rss>
