<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Knacks on yozy//NET</title>
    <link>https://yozy.net/categories/knacks/</link>
    <description>Recent content in Knacks on yozy//NET</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 08 May 2020 16:30:00 +0200</lastBuildDate>
    <atom:link href="https://yozy.net/categories/knacks/feed.xml" rel="self" type="application/rss" />
    <item>
      <title>Tricking Programmers Into Being Helpful</title>
      <link>https://yozy.net/2020/05/tricking-programmers-into-being-helpful/</link>
      <pubDate>Fri, 08 May 2020 16:30:00 +0200</pubDate>
      <guid>https://yozy.net/2020/05/tricking-programmers-into-being-helpful/</guid>
      <description>&lt;p&gt;People&lt;a href=&#34;https://stackoverflow.blog/2018/04/26/stack-overflow-isnt-very-welcoming-its-time-for-that-to-change/&#34;&gt;[1]&lt;/a&gt; accuse Stack Overflow of being unwelcoming to newbies. Older programmers complain that the site quality has decreased because of the influx of low quality questions.&lt;/p&gt;&#xA;&lt;p&gt;I am part of the latter crowd. I expect that if I give out my time to help somebody, they will reciprocate and invest time into understanding the problem and redact a concise question. Unfortunately when one goes through review queues on Stack Overflow, a good portion of the asked question is copy pasted textbook exercises.&lt;/p&gt;&#xA;&lt;p&gt;Here is a thought:&lt;/p&gt;&#xA;&lt;p&gt;Even though answering computer puzzles is annoying on a Q/A website, there is a whole bunch of websites specializing in just that—interview preparation courses.&lt;/p&gt;&#xA;&lt;p&gt;What if we mixed the two? Imagine a service that gives you short programming challenges. Except these would be generated from low effort Stack Overflow questions&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;. Posted solutions would get sent to Stack Overflow until an answer is accepted. After that the question would stay up, but answers would no longer propagate as we don&amp;rsquo;t want to spam the Stack Overflow questions.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Maybe only in part. Ideally the service would have more structured problems too.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>How to get into a junior position and keep it</title>
      <link>https://yozy.net/2020/04/how-to-get-into-a-junior-position-and-keep-it/</link>
      <pubDate>Wed, 29 Apr 2020 08:00:00 +0200</pubDate>
      <guid>https://yozy.net/2020/04/how-to-get-into-a-junior-position-and-keep-it/</guid>
      <description>&lt;p&gt;You are fresh out of school looking for your first job, maybe you have done an internship or have some other first experience. The most impressive thing on your resume is still sitting in the Education section. You might be asking yourself: &amp;ldquo;How do I stand out?&amp;rdquo;&lt;/p&gt;&#xA;&lt;h1 id=&#34;be-familiar-with-what-you-are-selling&#34;&gt;Be familiar with what you are selling&lt;/h1&gt;&#xA;&lt;p&gt;One thing people often do, is to pad their resume with every school project and tech they had a course on. This is understandable: what else should they be talking about, right? Not everybody has side projects that are in line with their career choices.&lt;/p&gt;&#xA;&lt;p&gt;Although I disrelish sifting through pages of resumes, I don&amp;rsquo;t get too worked up about it. Unless the position you are applying to is massively coveted and the company will receive hundreds or applications, people responsible for picking candidates will sit through it. I know I did.&lt;/p&gt;&#xA;&lt;p&gt;Now here is the principal thing:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Only mention projects and tech that you are confortable discussing &lt;strong&gt;at length&lt;/strong&gt;, and &lt;strong&gt;in detail&lt;/strong&gt;.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Reading a three page resume is a chore but can be done in a couple of minutes. A candidate in the room, however, deserves attention for at least half an hour. The job of the interviewer is to learn about the candidate and find out if they will fit the company and be productive. With nothing but the resume to grasp on, the conversation naturally gravitates towards the mentioned projects. So if I ask you what was your role during a particular project, what were the challenges, or what did you like or dislike when using a particular tech, you&amp;rsquo;d better have an answer ready.&lt;/p&gt;&#xA;&lt;h1 id=&#34;understand-things-before-tearing-them-apart&#34;&gt;Understand things before tearing them apart&lt;/h1&gt;&#xA;&lt;p&gt;There is a large chance you will be recruited as a part of a team. You may have read a lot about 10x developers but don&amp;rsquo;t pay too much attention to that. Most software is not written by superstars&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Personality is something that will be evaluated during the probation period. A good personality indicator for coders is the manner  how they approach an existing code base. Usually the first (and second&amp;hellip; probably the third too) impression is that the code &lt;em&gt;sucks&lt;/em&gt;. This is for two reasons: First is because it was written by people. Second is for you to discover. And I mean this quite literally.&lt;/p&gt;&#xA;&lt;p&gt;Before spewing expletives ask your colleagues to explain why the code works the way it does, why is it structured as it is and so on. Chances are there are reasons that may not make sense now but may have when the code was written.&lt;/p&gt;&#xA;&lt;p&gt;Some examples:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The code was written before a feature X in language even existed. Rewriting it is not a priority.&lt;/li&gt;&#xA;&lt;li&gt;The code originally depended on library X but it was refactored out.&lt;/li&gt;&#xA;&lt;li&gt;Implementing feature X was required to secure funding 10 years ago, it was never used since and there was no time to remove it.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The first reflex is the urge to rewrite everything. I invite you to read this &lt;a href=&#34;https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/&#34;&gt;article by Joel Spolsky&lt;/a&gt; to find out why this is a really bad idea.&lt;/p&gt;&#xA;&lt;p&gt;Only once you have understood the reasons, you can start fuming and lamenting what a pile of garbage you have inherited. But this will keep you from making mistakes that could lead to disaster and lost time down the road. Example: Refactoring a library that ends up breaking some client&amp;rsquo;s plugin they depend on. It will also avoid being the obnoxious winger during lunch.&lt;/p&gt;&#xA;&lt;h1 id=&#34;a-homework-assignment&#34;&gt;A homework assignment&lt;/h1&gt;&#xA;&lt;p&gt;I challenge you to go through your resume and write notes about every project you chose to mention. Think about your role and contribution. Recall how you solved a particular problem, or at least how the final presentation went. I am sure you were not one of the freeloaders, so prove it.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Also they probably don&amp;rsquo;t read recruiting advice on random blogs.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;My personal favorite.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>Qt Creator Hidden Gems</title>
      <link>https://yozy.net/2018/01/qt-creator-hidden-gems/</link>
      <pubDate>Tue, 02 Jan 2018 11:57:28 +0100</pubDate>
      <guid>https://yozy.net/2018/01/qt-creator-hidden-gems/</guid>
      <description>&lt;p&gt;When it comes to C++ IDEs I always reach for Qt Creator. I love its streamlined user interface which nevertheless exposes all screws and knobs if necessary.&lt;/p&gt;&#xA;&lt;p&gt;But mostly I like how it manages to surprise me with every update.&lt;/p&gt;&#xA;&lt;p&gt;Most recently I have updated to version 4.5.1 (from the 4.5 RC) and as I am hacking on the keyboard I see this:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://yozy.net/images/2018-01-02/qt-creator-output-param@2x.png&#34; alt=&#34;QtCreator detects output parameters&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Finally a work around the terrible decision to not explicitly mark function parameters used as a reference in C++.&lt;/p&gt;&#xA;&lt;p&gt;What&amp;rsquo;s more, Qt Creator does support &amp;ldquo;relative&amp;rdquo; text style for this highlight. One &lt;code&gt;saturation +0.30&lt;/code&gt; later I have:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://yozy.net/images/2018-01-02/qt-creator-output-param-hilight@2x.png&#34; alt=&#34;QtCreator can change text style relatively&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Can&amp;rsquo;t wait for what the 4.6 will bring!&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Parallels 12 and Windows 7 Slow Cursor</title>
      <link>https://yozy.net/2017/11/parallels-12-and-windows-7-slow-cursor/</link>
      <pubDate>Wed, 22 Nov 2017 11:41:09 +0100</pubDate>
      <guid>https://yozy.net/2017/11/parallels-12-and-windows-7-slow-cursor/</guid>
      <description>&lt;p&gt;After updating my macOS, Parallels 12 has broken loading a VM from the&#xA;Bootcamp partition. This has forced me to use my Windows 7 virtual machine&#xA;and I have discovered a weird problem:&lt;/p&gt;&#xA;&lt;p&gt;The mouse cursor inside the virtual machine is really slow if an&#xA;application is loading something or doing some activity.&lt;/p&gt;&#xA;&lt;p&gt;At first I thought this was because the machine was hogged, but the&#xA;problem is actually simpler than that: &lt;em&gt;Windows 7, in Parallels 12, is&#xA;really &lt;strong&gt;slow&lt;/strong&gt; when rendering an animated cursor&lt;/em&gt;. I have changed my&#xA;cursor theme to an old non-aero one and everything is fine now.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Use QtCreator to develop OpenViBE in 2017 on Linux</title>
      <link>https://yozy.net/2017/11/use-qtcreator-to-develop-openvibe-in-2017-on-linux/</link>
      <pubDate>Sun, 19 Nov 2017 20:00:00 +0000</pubDate>
      <guid>https://yozy.net/2017/11/use-qtcreator-to-develop-openvibe-in-2017-on-linux/</guid>
      <description>&lt;p&gt;Note: This tutorial does not use the &lt;em&gt;meta&lt;/em&gt; repository. It uses the latest OpenViBE 2.0.0 repositories with the multi-repository build. It is based on QtCreator 4.4.1 (the currently latest stable release). It will work on the 4.5 version, however this one seems to not currently work very well on Linux.&lt;/p&gt;&#xA;&lt;p&gt;It is possible to simplify this installation a LOT if you only wish to build the OpenViBE component and wish to use the default SDK (Kernel, Modules, base plugins..) and Designer. In that case only take the part concerning the &lt;em&gt;extras&lt;/em&gt; repo and do not specify custom &lt;strong&gt;OPENVIBE_SDK_PATH&lt;/strong&gt; and &lt;strong&gt;DESIGNER_SDK_PATH&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;This tutorial also does not use the build scripts!&lt;/p&gt;&#xA;&lt;p&gt;This post assumes that your final configuration will look like this:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;openvibe&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;sdk&lt;/strong&gt; &lt;em&gt;git repository for OpenViBE SDK&lt;/em&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;designer&lt;/strong&gt; &lt;em&gt;git repository for OpenViBE Designer&lt;/em&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;extras&lt;/strong&gt; &lt;em&gt;git repository for OpenViBE Extras&lt;/em&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;test&lt;/strong&gt; &lt;em&gt;git repository for integration tests&lt;/em&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;build&lt;/strong&gt; &lt;em&gt;contains all of the build folders populated by CMake&lt;/em&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;sdk-debug&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;sdk-release&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;designer-debug&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;designer-release&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;extras-debug&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;extras-release&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;dist&lt;/strong&gt; &lt;em&gt;contains all of the folders created during CMake INSTALL phase&lt;/em&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;sdk-debug&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;sdk-release&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;designer-debug&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;designer-release&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;openvibe-debug&lt;/strong&gt; &lt;em&gt;this tis the final destination of the complete Debug build&lt;/em&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;openvibe-release&lt;/strong&gt; &lt;em&gt;and the release build&lt;/em&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In my examples I am putting all of these files under &lt;code&gt;/opt&lt;/code&gt;, if you want them somewhere else you should change all instances of &lt;code&gt;/opt&lt;/code&gt; in this tutorial to something else.&lt;/p&gt;&#xA;&lt;h1 id=&#34;clone-the-repositories&#34;&gt;Clone the repositories&lt;/h1&gt;&#xA;&lt;p&gt;Get to the folder where you want to have your &lt;strong&gt;openvibe&lt;/strong&gt; root folder and do:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /opt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir openvibe&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; openvibe&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir build&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; build&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir sdk-debug sdk-release designer-debug designer-release openvibe-debug openvibe-release&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ..&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir dist&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone git@gitlab.inria.fr:openvibe/sdk.git sdk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone git@gitlab.inria.fr:openvibe/designer.git designer&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone git@gitlab.inria.fr:openvibe/extras.git extras&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone git@gitlab.inria.fr:openvibe/test.git &lt;span class=&#34;nb&#34;&gt;test&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;install-dependencies&#34;&gt;Install dependencies&lt;/h1&gt;&#xA;&lt;p&gt;Some dependencies are needed, this will install all linux native packages + some extras such as test.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# if you want test data you will need the values for these variables&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;PROXYPASS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;DEPENDENCY_SERVER&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;perl sdk/scripts/linux-install_dependencies.pl --manifest-dir sdk/scripts/ --dependencies-dir dependencies&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;perl sdk/scripts/linux-install_dependencies.pl --manifest-dir designer/scripts/ --dependencies-dir dependencies&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;perl sdk/scripts/linux-install_dependencies.pl --manifest-dir extras/scripts/ --dependencies-dir dependencies&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /opt/openvibe/sdk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./unix-get-dependencies.sh --manifest tests-data.txt --out /opt/openvibe/dependencies --cache /opt/openvibe/dependencies/arch&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;configure-the-qtcreator&#34;&gt;Configure the QtCreator&lt;/h1&gt;&#xA;&lt;p&gt;This step will have to be reproduced for all of the other repositories with minor changes.&lt;/p&gt;&#xA;&lt;p&gt;It is important to know how CMake actually works, a quick summary:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;CMake creates a &lt;em&gt;build&lt;/em&gt; folder during configuration step. This folder contains all of the configuration files (CMakeCache.txt is the most important), ninja file (this tells the compiler in what order it should build the project) and the built binary files.&lt;/li&gt;&#xA;&lt;li&gt;When you configure the project all of the variables you specify at configure are saved in the &lt;em&gt;build&lt;/em&gt; folder.&lt;/li&gt;&#xA;&lt;li&gt;When you build the project, the binary files are kept in the &lt;em&gt;build&lt;/em&gt; folder.&lt;/li&gt;&#xA;&lt;li&gt;When you INSTALL the project, only the files that are necessary for the final application are copied into the &lt;em&gt;dist&lt;/em&gt; folder (specified by &lt;strong&gt;CMAKE_INSTALL_PREFIX&lt;/strong&gt;. On Linux, the default &lt;em&gt;dist&lt;/em&gt; folder is &lt;code&gt;/usr/local&lt;/code&gt; and on Windows it is &lt;code&gt;C:\Program Files (x86)\PROJECT_NAME&lt;/code&gt;. We &lt;strong&gt;do not&lt;/strong&gt; want to use the default folders!&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;session-configuration&#34;&gt;Session configuration&lt;/h2&gt;&#xA;&lt;p&gt;Launch QtCreator, create a new session&lt;/p&gt;&#xA;&lt;h2 id=&#34;sdk-configuration&#34;&gt;SDK configuration&lt;/h2&gt;&#xA;&lt;p&gt;Go to &lt;strong&gt;Welcome -&amp;gt; Open Project&lt;/strong&gt; and navigate to the &lt;code&gt;openvibe/sdk/CMakeLists.txt&lt;/code&gt; file, a dialog like this will open:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://yozy.net/images/openvibe-qtcreator/sdk-configure-project.png&#34; alt=&#34;sdk-configure-project&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Note that I have already changed all paths to what they should be.&lt;/p&gt;&#xA;&lt;p&gt;Click on the &lt;strong&gt;Configure Project&lt;/strong&gt; button.&lt;/p&gt;&#xA;&lt;h3 id=&#34;cmake-variables&#34;&gt;CMake variables&lt;/h3&gt;&#xA;&lt;p&gt;You will see a lot of errors printed in the General Messages tab on the bottom. Go to the &lt;strong&gt;Projects&lt;/strong&gt; pane on the right and select &lt;strong&gt;build&lt;/strong&gt; under GCC.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://yozy.net/images/openvibe-qtcreator/build-configuration-button.png&#34; alt=&#34;build-config-button&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Check that the &lt;strong&gt;Edit build configuration&lt;/strong&gt; dropdown is set to &lt;strong&gt;Debug&lt;/strong&gt; on the top of this window.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://yozy.net/images/openvibe-qtcreator/sdk-build-type-debug.png&#34; alt=&#34;sdk-build-type-debug&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Now you will need to (sadly, blindly) add a few variables to the lot. This is because the configuration by default is not what we want.&lt;/p&gt;&#xA;&lt;p&gt;Add these variables:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;CMAKE_INSTALL_PREFIX&lt;/strong&gt; &lt;code&gt;String&lt;/code&gt; &lt;code&gt;/opt/openvibe/dist/sdk-debug&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;OV_CUSTOM_DEPENDENCIES_PATH&lt;/strong&gt; &lt;code&gt;String&lt;/code&gt; &lt;code&gt;/opt/openvibe/dependencies&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;BUILD_UNIT_TEST&lt;/strong&gt; &lt;code&gt;Boolean&lt;/code&gt; &lt;code&gt;ON&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;BUILD_VALIDATION_TEST&lt;/strong&gt; &lt;code&gt;Boolean&lt;/code&gt; &lt;code&gt;ON&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The test variables are not strictly necessary and you can turn them OFF if you want.&lt;/p&gt;&#xA;&lt;p&gt;Click on &lt;strong&gt;Apply Configuration&lt;/strong&gt;. Note that Qt Creator does not save this configuration if you do not use Apply!&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://yozy.net/images/openvibe-qtcreator/sdk-build-configuration.png&#34; alt=&#34;sdk-build-config&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;install-and-clean&#34;&gt;Install and clean&lt;/h3&gt;&#xA;&lt;p&gt;In order to actually run the INSTALL step after each build (this is not how normal projects work but here it is necessary).&lt;/p&gt;&#xA;&lt;p&gt;In the &lt;strong&gt;Build Steps&lt;/strong&gt; and &lt;strong&gt;Clean Steps&lt;/strong&gt; choose the &lt;em&gt;install&lt;/em&gt; and &lt;em&gt;clean&lt;/em&gt; option respectively.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://yozy.net/images/openvibe-qtcreator/sdk-build-steps.png&#34; alt=&#34;sdk-build-steps&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;run-environment&#34;&gt;Run environment&lt;/h3&gt;&#xA;&lt;p&gt;OpenViBE requires some variables on runtime to work. Also, as we are not installing into a default prefix we need to tell Linux where to find the libraries.&lt;/p&gt;&#xA;&lt;p&gt;In the &lt;strong&gt;Build Environment&lt;/strong&gt; click on &lt;strong&gt;Batch Edit&amp;hellip;&lt;/strong&gt; and insert the following string:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;LD_LIBRARY_PATH=/opt/openvibe/dist/sdk-debug/lib&#xA;OV_PATH_ROOT=/opt/openvibe/dist/sdk-debug&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;You are now ready to build &lt;em&gt;OpenViBE SDK&lt;/em&gt; in &lt;em&gt;Debug&lt;/em&gt; mode. Give it a spin, either right click on the OpenVIBE project in the &lt;strong&gt;Edit&lt;/strong&gt; view or use the hammer button on the bottom left.&lt;/p&gt;&#xA;&lt;h3 id=&#34;release-configuration&#34;&gt;Release configuration&lt;/h3&gt;&#xA;&lt;p&gt;Redo the same thing for &lt;strong&gt;Release&lt;/strong&gt; configuration on the top.&lt;/p&gt;&#xA;&lt;p&gt;In this case you will need to change the &lt;strong&gt;CMAKE_INSTALL_PREFIX&lt;/strong&gt; to &lt;code&gt;/opt/openvibe/dist/sdk-release/&lt;/code&gt;. And choose the appropriate environment variables like so:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;LD_LIBRARY_PATH=/opt/openvibe/dist/sdk-release/lib&#xA;OV_PATH_ROOT=/opt/openvibe/dist/sdk-release&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;designer-configuration&#34;&gt;Designer configuration&lt;/h2&gt;&#xA;&lt;p&gt;This step is very similar to the SDK. First open the project from the Welcome screen.&lt;/p&gt;&#xA;&lt;p&gt;On the &lt;em&gt;configure project&lt;/em&gt; page select:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Debug &lt;em&gt;build folder&lt;/em&gt; is &lt;code&gt;/opt/openvibe/build/designer-debug&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Release &lt;em&gt;build folder&lt;/em&gt; is &lt;code&gt;/opt/openvibe/build/designer-release&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Do not forget to disable all other build types.&lt;/p&gt;&#xA;&lt;h3 id=&#34;cmake-variables-1&#34;&gt;CMake variables&lt;/h3&gt;&#xA;&lt;p&gt;You will need some additional CMake variable specified:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;OPENVIBE_SDK_PATH&lt;/strong&gt; &lt;code&gt;String&lt;/code&gt; &lt;code&gt;/opt/openvibe/dist/sdk-debug&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;LIST_DEPENDENCIES_PATH&lt;/strong&gt; &lt;code&gt;String&lt;/code&gt; &lt;code&gt;/opt/openvibe/dependencies&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;CMAKE_INSTALL_PREFIX&lt;/strong&gt; &lt;code&gt;String&lt;/code&gt; &lt;code&gt;/opt/openvibe/dist/designer-debug&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This tells the designer to find the SDK built in the previous step. Otherwise the designer will use SDK from its dependencies.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://yozy.net/images/openvibe-qtcreator/designer-build-configuration.png&#34; alt=&#34;designer-build-config&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Click on &lt;strong&gt;Apply Configuration&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;install--clean&#34;&gt;Install &amp;amp; Clean&lt;/h3&gt;&#xA;&lt;p&gt;Check the &lt;code&gt;install&lt;/code&gt; and &lt;code&gt;clean&lt;/code&gt; options in Clean and Build steps like in SDK.&lt;/p&gt;&#xA;&lt;h3 id=&#34;run-environment-1&#34;&gt;Run environment&lt;/h3&gt;&#xA;&lt;p&gt;We also want to be able to run a &amp;ldquo;pure&amp;rdquo; designer installation from Qt Creator.&lt;/p&gt;&#xA;&lt;p&gt;In the &lt;strong&gt;Build Environment&lt;/strong&gt; click on &lt;strong&gt;Batch Edit&amp;hellip;&lt;/strong&gt; and insert the following string:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;LD_LIBRARY_PATH=/opt/openvibe/dist/designer-debug/lib&#xA;OV_PATH_ROOT=/opt/openvibe/dist/designer-debug&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;You are now ready to build &lt;em&gt;OpenViBE Designer&lt;/em&gt; in &lt;em&gt;Debug&lt;/em&gt; mode. Give it a spin, either right click on the OpenVIBE project in the &lt;strong&gt;Edit&lt;/strong&gt; view or use the hammer button on the bottom left.&lt;/p&gt;&#xA;&lt;h2 id=&#34;extras-configuration&#34;&gt;Extras configuration&lt;/h2&gt;&#xA;&lt;p&gt;Once again (and for the last time).&lt;/p&gt;&#xA;&lt;p&gt;On the &lt;em&gt;configure project&lt;/em&gt; page select:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Debug &lt;em&gt;build folder&lt;/em&gt; is &lt;code&gt;/opt/openvibe/build/openvibe-debug&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Release &lt;em&gt;build folder&lt;/em&gt; is &lt;code&gt;/opt/openvibe/build/opevibe-release&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Do not forget to disable all other build types.&lt;/p&gt;&#xA;&lt;h3 id=&#34;cmake-variables-2&#34;&gt;CMake variables&lt;/h3&gt;&#xA;&lt;p&gt;You will need some additional CMake variable specified:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;OPENVIBE_SDK_PATH&lt;/strong&gt; &lt;code&gt;String&lt;/code&gt; &lt;code&gt;/opt/openvibe/dist/sdk-debug&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;DESIGNER_SDK_PATH&lt;/strong&gt; &lt;code&gt;String&lt;/code&gt; &lt;code&gt;/opt/openvibe/dist/designer-debug&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;LIST_DEPENDENCIES_PATH&lt;/strong&gt; &lt;code&gt;String&lt;/code&gt; &lt;code&gt;/opt/openvibe/dependencies&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;CMAKE_INSTALL_PREFIX&lt;/strong&gt; &lt;code&gt;String&lt;/code&gt; &lt;code&gt;/opt/openvibe/dist/openvibe-debug&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This tells the designer to find the SDK built in the previous step. Otherwise the designer will use SDK from its dependencies.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://yozy.net/images/openvibe-qtcreator/extras-build-configuration.png&#34; alt=&#34;extras-build-config&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Click on &lt;strong&gt;Apply Configuration&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;install--clean-1&#34;&gt;Install &amp;amp; Clean&lt;/h3&gt;&#xA;&lt;p&gt;Check the &lt;code&gt;install&lt;/code&gt; and &lt;code&gt;clean&lt;/code&gt; options in Clean and Build steps like in SDK.&lt;/p&gt;&#xA;&lt;h3 id=&#34;run-environment-2&#34;&gt;Run environment&lt;/h3&gt;&#xA;&lt;p&gt;Finally, we want to be able to run the complete installation.&lt;/p&gt;&#xA;&lt;p&gt;In the &lt;strong&gt;Build Environment&lt;/strong&gt; click on &lt;strong&gt;Batch Edit&amp;hellip;&lt;/strong&gt; and insert the following string:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;LD_LIBRARY_PATH=/opt/openvibe/dist/openvibe-debug/lib&#xA;OV_PATH_ROOT=/opt/openvibe/dist/openvibe-debug&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;You are now ready to build the &lt;em&gt;Full OpenViBE Designer&lt;/em&gt; in &lt;em&gt;Debug&lt;/em&gt; mode. Give it a spin, either right click on the OpenVIBE project in the &lt;strong&gt;Edit&lt;/strong&gt; view or use the hammer button on the bottom left.&lt;/p&gt;&#xA;&lt;p&gt;You should now see all of the various OpenViBE projects in the build menu.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://yozy.net/images/openvibe-qtcreator/projects.png&#34; alt=&#34;projects&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;running-the-openvibe-designer-with-the-full-feature-set&#34;&gt;Running the OpenViBE Designer with the full feature set&lt;/h3&gt;&#xA;&lt;p&gt;The Designer project is built in a separate project from extras. If you want to run the designer (or debug it) with all of the plugins, you need to create a new run configuration.&lt;/p&gt;&#xA;&lt;p&gt;Go to &lt;strong&gt;Projects -&amp;gt; OpenViBE -&amp;gt; Run&lt;/strong&gt; in the left pane. Be careful to choose the OpenViBE Project which corresponds to extras!&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://yozy.net/images/openvibe-qtcreator/run-configuration-button.png&#34; alt=&#34;run-config-button&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Click on &lt;strong&gt;Add -&amp;gt; Custom Executable&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://yozy.net/images/openvibe-qtcreator/run-configuration-add-button.png&#34; alt=&#34;run-config-add-button&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Now select the &lt;code&gt;/opt/openvibe/dist/openvibe-debug/bin/openvibe-designer&lt;/code&gt; as &lt;em&gt;Executable&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Rename this configuration as &lt;em&gt;Debug Designer&lt;/em&gt;. You can now choose it from the projects menu and run it using the play button (or debug it using the play button with a little bug on it)&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://yozy.net/images/openvibe-qtcreator/debug-designer.png&#34; alt=&#34;debug-designer&#34;&gt;&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>DTerm and Fish shell, together</title>
      <link>https://yozy.net/2017/10/dterm-and-fish-shell-together/</link>
      <pubDate>Tue, 31 Oct 2017 15:10:51 +0000</pubDate>
      <guid>https://yozy.net/2017/10/dterm-and-fish-shell-together/</guid>
      <description>&lt;p&gt;Fish shell does not seem to like to live within the DTerm terminal emulator. Sadly, DTerm seems in a state of abandon.&lt;/p&gt;&#xA;&lt;p&gt;What I do now is to force &lt;code&gt;bash&lt;/code&gt; as the shell used by DTerm. I do this by launching:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fish&#34; data-lang=&#34;fish&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;env&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;SHELL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/bin/bash &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt; /Applications/DTerm.app&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>MiKTeX 2.9 and Windows 10 package installation woes</title>
      <link>https://yozy.net/2017/08/miktex-2.9-and-windows-10-package-installation-woes/</link>
      <pubDate>Wed, 02 Aug 2017 15:42:08 +0000</pubDate>
      <guid>https://yozy.net/2017/08/miktex-2.9-and-windows-10-package-installation-woes/</guid>
      <description>&lt;p&gt;Today my MiKTeX installation stopped installing packages on the fly. After trying to install packages through Package Manager I found out that this did not work either. The error that I have obtained is this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The executed process did not succeed.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;fileName&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;C:\Program Files (x86)\MiKTeX 2.9\MiKTeX\bin\initexmf.exe&amp;#34;&lt;/span&gt;, &lt;span class=&#34;nv&#34;&gt;arguments&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34; --mklinks --mkmaps&amp;#34;&lt;/span&gt;, &lt;span class=&#34;nv&#34;&gt;exitCode&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I googled around and found out that this might be a problem with the installation folder not being accessible and the suggested solution was to install MiKTeX somewhere else (or just for the local user). This was not an option for me as a toolchain that does not depend only on me requires the latex binary to be in the default folder.&lt;/p&gt;&#xA;&lt;p&gt;My solution was to go to the &lt;code&gt;C:\Program Files (x86)\MiKTeX 2.9&lt;/code&gt; folder properties and changing the &lt;strong&gt;Users&lt;/strong&gt; permissions to &lt;strong&gt;Full Control&lt;/strong&gt;. Not extremely secure but at least now I can build my documentation.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Unprotect password protected Word documents</title>
      <link>https://yozy.net/2016/10/unprotect-password-protected-word-documents/</link>
      <pubDate>Sat, 22 Oct 2016 13:13:43 +0000</pubDate>
      <guid>https://yozy.net/2016/10/unprotect-password-protected-word-documents/</guid>
      <description>&lt;p&gt;It is always annoying when people expect you to collaborate with them and they send you locked files.&lt;/p&gt;&#xA;&lt;p&gt;This trick only works for documents that are protected for &lt;strong&gt;Review&lt;/strong&gt;. Not when you can not even open them.&lt;/p&gt;&#xA;&lt;p&gt;So, let us assume you have a &lt;code&gt;Protected.docx&lt;/code&gt; file that looks something like this. Notice the disabled &lt;em&gt;Delete Comment&lt;/em&gt;, &lt;em&gt;Accept Changes&lt;/em&gt; and so buttons.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://yozy.net/images/unprotect-word/protected-document.png&#34; alt=&#34;Sad grey icons&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;step-1-open-the-box&#34;&gt;Step 1: Open the box&lt;/h2&gt;&#xA;&lt;p&gt;A good thing to know is that .docx (and .xlsx) files are just zipped folders.&lt;/p&gt;&#xA;&lt;p&gt;Rename the &lt;code&gt;Protected.docx&lt;/code&gt; file to &lt;code&gt;Protected.zip&lt;/code&gt; and unzip it. You will obtain something that looks like this:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://yozy.net/images/unprotect-word/file-contents.png&#34; alt=&#34;Docx folder contents&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;step-2-tinker-with-the-contents&#34;&gt;Step 2: Tinker with the contents&lt;/h2&gt;&#xA;&lt;p&gt;Open the file &lt;code&gt;word/settings.xml&lt;/code&gt;. Its contents will look somewhat like this (except there will be more of it and everything will be on the same line):&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;UTF-8&amp;#34; standalone=&amp;#34;yes&amp;#34;?&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;w:settings&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;xmlns:mc=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://schemas.openxmlformats.org/markup-compatibility/2006&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;xmlns:o=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;urn:schemas-microsoft-com:office:office&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;xmlns:r=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://schemas.openxmlformats.org/officeDocument/2006/relationships&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;xmlns:m=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://schemas.openxmlformats.org/officeDocument/2006/math&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;xmlns:v=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;urn:schemas-microsoft-com:vml&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;xmlns:w10=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;urn:schemas-microsoft-com:office:word&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;xmlns:w=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://schemas.openxmlformats.org/wordprocessingml/2006/main&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;xmlns:w14=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://schemas.microsoft.com/office/word/2010/wordml&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;xmlns:w15=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://schemas.microsoft.com/office/word/2012/wordml&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;xmlns:sl=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://schemas.openxmlformats.org/schemaLibrary/2006/main&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;mc:Ignorable=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;w14 w15&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;w:zoom&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:percent=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;100&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;w:proofState&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:spelling=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;clean&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:grammar=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;clean&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;w:trackRevisions/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;w:documentProtection&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:edit=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;trackedChanges&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:enforcement=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:cryptProviderType=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;rsaFull&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:cryptAlgorithmClass=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;hash&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:cryptAlgorithmType=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;typeAny&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:cryptAlgorithmSid=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;4&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:cryptSpinCount=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;100000&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:hash=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;1+kEXOhPYpKExv2F8dIx9VCN5Ps=&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:salt=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;aOdV7QoW4ZJW3KVDxd7jBg==&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;w:defaultTabStop&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:val=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;720&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;w:characterSpacingControl&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:val=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;doNotCompress&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;w:savePreviewPicture/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;w:compat&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;w:useFELayout/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Notice the&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;w:documentProtection&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:edit=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;trackedChanges&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:enforcement=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:cryptProviderType=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;rsaFull&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:cryptAlgorithmClass=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;hash&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:cryptAlgorithmType=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;typeAny&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:cryptAlgorithmSid=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;4&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:cryptSpinCount=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;100000&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:hash=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;1+kEXOhPYpKExv2F8dIx9VCN5Ps=&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;w:salt=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;aOdV7QoW4ZJW3KVDxd7jBg==&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;this is the source of our woes. Now, simply remove the characters between &lt;code&gt;&amp;lt;w:documentProtection&lt;/code&gt; and the first &lt;code&gt;/&amp;gt;&lt;/code&gt; you encounter after it. Save the file.&lt;/p&gt;&#xA;&lt;h2 id=&#34;step-3-put-the-box-back-together&#34;&gt;Step 3: Put the box back together&lt;/h2&gt;&#xA;&lt;p&gt;Now, zip the folder back again. It is important that you compress the files as they were: the folders &lt;code&gt;word&lt;/code&gt;, &lt;code&gt;_rels&lt;/code&gt;, &lt;code&gt;docProps&lt;/code&gt; and the file &lt;code&gt;[Content_Types].xml&lt;/code&gt; are on the top level of the zip (i.e.: not in a subfolder that was probably created when you unzipped the original file). Let us call the new file &lt;code&gt;Unprotected.zip&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Finally, rename the file back to &lt;code&gt;Unprotected.docx&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;step-4-look-into-the-box&#34;&gt;Step 4: Look into the box&lt;/h2&gt;&#xA;&lt;p&gt;And voilà:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://yozy.net/images/unprotect-word/unprotected-document.png&#34; alt=&#34;Sad grey icons&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Note: Word might complain about the document being corrupted, simply choose &lt;em&gt;Open Anyway&lt;/em&gt; and re-save the file again.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Chrome: Your profile could not be opened correctly</title>
      <link>https://yozy.net/2014/03/chrome-your-profile-could-not-be-opened-correctly/</link>
      <pubDate>Tue, 11 Mar 2014 16:25:45 +0000</pubDate>
      <guid>https://yozy.net/2014/03/chrome-your-profile-could-not-be-opened-correctly/</guid>
      <description>&lt;p&gt;Long story short:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;If you want to use Google Chrome on Windows, uninstall AVG&lt;/p&gt;&lt;/blockquote&gt;&#xA;</description>
    </item>
    <item>
      <title>gzip, bzip, zip and md5sum a folder</title>
      <link>https://yozy.net/2013/07/gzip-bzip-zip-and-md5sum-a-folder/</link>
      <pubDate>Tue, 09 Jul 2013 19:00:39 +0000</pubDate>
      <guid>https://yozy.net/2013/07/gzip-bzip-zip-and-md5sum-a-folder/</guid>
      <description>&lt;p&gt;During the OpenViBE releases I found myself to repeat this procedure ad&#xA;nauseum. So I made a little script that does the thing automatically. I will&#xA;just leave it here for future reference:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;ch&#34;&gt;#!/usr/bin/perl&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$folder&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$ARGV&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`tar czf $folder.tar.gz $folder\n`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`tar cjf $folder.tar.bz2 $folder\n`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`zip -9 -r $folder.zip $folder\n`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`md5sum $folder.tar.gz $folder.tar.bz2 $folder.zip &amp;gt; $folder.md5\n`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Happy hacking&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>A bookmarklet to make a stretched article readable</title>
      <link>https://yozy.net/2013/07/a-bookmarklet-to-make-a-stretched-article-readable/</link>
      <pubDate>Tue, 09 Jul 2013 11:21:33 +0000</pubDate>
      <guid>https://yozy.net/2013/07/a-bookmarklet-to-make-a-stretched-article-readable/</guid>
      <description>&lt;p&gt;There are many tools like &lt;a href=&#34;http://www.readability.com/&#34;&gt;Readability&lt;/a&gt; or &lt;a href=&#34;http://evernote.com/clearly/&#34;&gt;Evernote Clearly&lt;/a&gt; to make any&#xA;arbitrary article readable and they are very good at their job.&lt;/p&gt;&#xA;&lt;p&gt;Sometimes however you do not want to get rid of all of the formatting and&#xA;sometimes they simply just do not work, e.g., on web forums.&lt;/p&gt;&#xA;&lt;p&gt;One thing you can find all over the Internet is pages stretched from side to&#xA;side, and they are all but readable on larger screens. Of course with&#xA;responsive design you can just resize your browser but that is not what you&#xA;want to do all of the time.&lt;/p&gt;&#xA;&lt;p&gt;Here is a handy bookmarklet that will &amp;lsquo;columnize&amp;rsquo; any webpage:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;javascript&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;d&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;getElementsByTagName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;body&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;d&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;style&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;11in&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;d&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;style&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;margin&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;0 auto&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;void&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Enjoy&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Lock screen on Mac OS X with keyboard shortcut [updated]</title>
      <link>https://yozy.net/2012/11/lock-screen-on-mac-os-x-with-keyboard-shortcut-updated/</link>
      <pubDate>Wed, 28 Nov 2012 16:56:37 +0000</pubDate>
      <guid>https://yozy.net/2012/11/lock-screen-on-mac-os-x-with-keyboard-shortcut-updated/</guid>
      <description>&lt;p&gt;&lt;em&gt;Last update: 2017-11-18 for High Sierra&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Luckily we now have a real shortcut without hacks using &lt;strong&gt;⌃⌘Q&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;One of the issues that rises the most eyebrows while using Mac OS X is that&#xA;there is no native way of simply locking your screen with a keyboard shortcut.&#xA;Finally I have managed to compile all of the stuff on the Internet to come up&#xA;with a simple yet &lt;em&gt;real&lt;/em&gt; solution to this problem If you can not be bothered by&#xA;reading the whole article here is the short version:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Run &lt;strong&gt;Keychain Access&lt;/strong&gt; go to &lt;strong&gt;Preferences → General → Show keychain status in menubar&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Look at &lt;a href=&#34;https://yozy.net/2011/05/global-keyboard-actions-in-snow-leopard-without-third-party-software&#34; title=&#34;Global keyboard actions in Snow Leaopard without third party software&#34;&gt;this tutorial&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Use the script from &lt;a href=&#34;https://gist.github.com/1322095&#34; title=&#34;https://gist.github.com/1322095&#34;&gt;freespace&amp;rsquo;s github page&lt;/a&gt; instead of my example.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;And now for the long version.&lt;/p&gt;&#xA;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;There are a lot of ways to work around this problem and many of them were&#xA;already published on a zillion of blogs. In practice four methods prevail:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Setting the system to lock immediately upon launching the screensaver and&#xA;then using the &lt;strong&gt;ctrl+⇧+⏏&lt;/strong&gt; (control+shift+eject) shortcut.&lt;/li&gt;&#xA;&lt;li&gt;Enabling the Keychain Access menu item and then choosing &lt;strong&gt;lock screen&lt;/strong&gt;&#xA;from the menu (by mouse).&lt;/li&gt;&#xA;&lt;li&gt;Enabling the multiple user login and then switching user.&lt;/li&gt;&#xA;&lt;li&gt;Using a third party software, such as Quicksilver or Alfred.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Of course these methods have all some benefits and some drawbacks. When we look&#xA;at them we can easily spot that only the option two actually does what we want:&#xA;it locks the screen without closing the session, it is native and it &lt;em&gt;has&lt;/em&gt; to&#xA;be invoked by the user. However it does not use the feedback, so fails to&#xA;satisfy the primary objective.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-real-solution&#34;&gt;The real solution&lt;/h2&gt;&#xA;&lt;p&gt;It is extremely simple to assign a keyboard shortcut to any item in the&#xA;application menu. Sadly, the task bar is not considered part of it and the&#xA;keyboard shortcuts will not reach it. Enter AppleScript and Automator, solution&#xA;to any problem there is! It took some digging but there actually &lt;strong&gt;is&lt;/strong&gt; an&#xA;AppleScript which clicks on menu items. With that we can create a service that&#xA;will then be available thorough a global shortcut.&lt;/p&gt;&#xA;&lt;h3 id=&#34;preliminary&#34;&gt;Preliminary&lt;/h3&gt;&#xA;&lt;p&gt;In order for this to work you need to enable the Keychain Access menu item. Run&#xA;&lt;strong&gt;Keychain Access&lt;/strong&gt; go to &lt;strong&gt;Preferences → General → Show keychain status in&#xA;menubar&lt;/strong&gt;,&lt;/p&gt;&#xA;&lt;h3 id=&#34;implementation&#34;&gt;Implementation&lt;/h3&gt;&#xA;&lt;p&gt;The path from a script to a service to a keyboard shortcut is already paved. I&#xA;have already covered how to &lt;a href=&#34;https://yozy.net/2011/05/global-keyboard-actions-in-snow-leopard-without-third-party-software&#34; title=&#34;Global keyboard actions in Snow Leaopard without third party software&#34;&gt;assign a global keyboard shortcut to a script&lt;/a&gt;&#xA;so please refer to that.&lt;/p&gt;&#xA;&lt;h3 id=&#34;the-script&#34;&gt;The script&lt;/h3&gt;&#xA;&lt;p&gt;The actual script to use is taken from &lt;a href=&#34;https://gist.github.com/1322095&#34; title=&#34;https://gist.github.com/1322095&#34;&gt;freespace&amp;rsquo;s github page&lt;/a&gt; and is&#xA;actually based on an example provided by Apple itself. For the sake of&#xA;consistency, here is the script:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-applescript&#34; data-lang=&#34;applescript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;tell&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;application&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;System Events&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;get&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;properties&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;get&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;every&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;process&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;UI&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;elements&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;enabled&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;tell&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;process&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SystemUIServer&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;repeat&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;number&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;menu&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;bar&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;items&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;menu&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;bar&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;description&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;menu&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;bar&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;item&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;menu&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;bar&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Keychain menu extra&amp;#34;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;k&#34;&gt;tell&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;menu&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;bar&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;item&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;menu&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;bar&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;nv&#34;&gt;click&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;menu&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;item&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;front&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;menu&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Lock Screen&amp;#34;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                            &lt;span class=&#34;nv&#34;&gt;click&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;menu&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;item&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Lock Screen&amp;#34;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;front&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;menu&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                            &lt;span class=&#34;k&#34;&gt;exit&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;repeat&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;tell&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;repeat&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;tell&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;tell&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;application&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;System Preferences&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nb&#34;&gt;activate&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;current&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;pane&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;pane&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;com.apple.preference.universalaccess&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nb&#34;&gt;display dialog&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;UI element scripting is not enabled. Check \&amp;#34;Enable access for assistive devices\&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;tell&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;end&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;end&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;tell&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And for the sake of clarity: I did not code this script.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Add shortcuts for emoji characters to finally put the ± key to use</title>
      <link>https://yozy.net/2012/11/add-shortcuts-for-emoji-characters-to-finally-put-the-key-to-use/</link>
      <pubDate>Thu, 08 Nov 2012 03:13:01 +0000</pubDate>
      <guid>https://yozy.net/2012/11/add-shortcuts-for-emoji-characters-to-finally-put-the-key-to-use/</guid>
      <description>&lt;p&gt;I have finally managed to find a use for the ± key on the Apple keyboard. This keyI have finally managed to find a use for the ± key on the Apple keyboard. This key bugged me since I got the computer as I have never ever seen it in a text and just can not understand why it would be on a keyboard in the first place.&lt;/p&gt;&#xA;&lt;p&gt;Since there is a native text-expansion feature in OS X (Settings → Language&#xA;&amp;amp; Text → Text) it seems that this character could serve as a perfect&#xA;&amp;ldquo;marker&amp;rdquo; for some exotic shortcuts. The color emoticons available in the OS X&#xA;make a perfect candidate since inserting them into text is quite a hassle as&#xA;one has to go through the Special Character menu.&lt;/p&gt;&#xA;&lt;p&gt;Thus I made shortcuts for some of them as illustrated here:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://yozy.net/images/emoji-shortcuts.png&#34; alt=&#34;img-emoji-shortcuts&#34; title=&#34;Emoji shortcut examples&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;They help me navigate in plain text document and provide valuable highlighting&#xA;options in places where other methods do not exist. Maybe this could help you&#xA;too. Bugged me since I got the computer as I have never ever seen it in a text&#xA;and just can not understand why it would be on a keyboard in the first place.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Vim setup</title>
      <link>https://yozy.net/2012/10/vim-setup/</link>
      <pubDate>Mon, 22 Oct 2012 15:14:01 +0000</pubDate>
      <guid>https://yozy.net/2012/10/vim-setup/</guid>
      <description>&lt;p&gt;Again, this is mostly a social bookmark to have a trace of what different parts&#xA;of my configuration files in my Vim folder do. Feel free to steal whatever part&#xA;you like. Note that not all of these settings will work without additional&#xA;plugins. The ones I use on daily basis are: &lt;strong&gt;Powerline&lt;/strong&gt;, &lt;strong&gt;bclose&lt;/strong&gt;, &lt;strong&gt;voom&lt;/strong&gt;&#xA;and &lt;strong&gt;latex-suite&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;A hint: Since I am using several computers I use Dropbox to synchronize all of&#xA;my vim configurations thus my .vim folder on every machine is just a symlink to&#xA;the Dropbox folder. I have moved my vimrc file there as well and source it from&#xA;the original .vimrc file in the home folder.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;quot; In case we are in a 256 color capable terminal&#xA;set t_Co=256&#xA;&#xA;&amp;quot; Set a right colorscheme&#xA;colorscheme zenburn&#xA;&#xA;&amp;quot; Let Powerline use nice symbols&#xA;let g:Powerline_symbols = &#39;fancy&#39;&#xA;&#xA;&amp;quot; Look for modelines embedded in source files, this is especially useful when&#xA;&amp;quot; getting python code from other developers&#xA;set modeline&#xA;&#xA;&amp;quot; The only GUI element we want is the icon, remove menubar, toolbars etc.&#xA;set go=i&#xA;&#xA;&amp;quot; Always show the statusline&#xA;set laststatus=2&#xA;&#xA;&amp;quot; Display the beginning of the last line at the end of the buffer&#xA;set display=lastline&#xA;&#xA;&amp;quot; Turn on the syntax highlighting&#xA;syntax on&#xA;&#xA;&amp;quot; Set default window size to something sensible&#xA;set lines=60&#xA;set columns=170&#xA;&amp;quot;&#xA;&amp;quot; Set the editor to wrap long lines on words&#xA;set wrap&#xA;set linebreak&#xA;&#xA;&amp;quot; Do not insert break lines to long lines&#xA;set textwidth=0&#xA;set wrapmargin=0&#xA;&#xA;&amp;quot; Turn on folding&#xA;set foldenable&#xA;&#xA;&amp;quot; Make folding indent sensitive&#xA;set foldmethod=indent&#xA;&#xA;&amp;quot; Don&#39;t autofold anything (but I can still fold manually)&#xA;set foldlevel=100&#xA;&#xA;&amp;quot; don&#39;t open folds when you search into them&#xA;set foldopen-=search&#xA;&#xA;&amp;quot; don&#39;t open folds when you undo stuff&#xA;set foldopen-=undo&#xA;&#xA;&amp;quot; Start the filetype plugin, this is really necessary&#xA;filetype plugin on&#xA;&#xA;&amp;quot;set fuopt=maxvert&#xA;&#xA;&amp;quot; I use simple php templates&#xA;au BufNewFile,BufRead *.tmpl setf php&#xA;&#xA;&amp;quot; Load doxygen syntax highlighting when necessary&#xA;let g:load_doxygen_syntax=1&#xA;&#xA;&amp;quot; Add doxygen syntax highlighting to all cpp files&#xA;au BufNewFile,BufRead *.cpp setf cpp.doxygen&#xA;&#xA;&amp;quot; Add jQuery syntax highlighting&#xA;au BufRead,BufNewFile jquery.*.js set ft=javascript syntax=jquery&#xA;&#xA;&amp;quot; Activate line numbers&#xA;set number&#xA;&#xA;&amp;quot; Tab size to 4 spaces, and no expanding of tabs to spaces!&#xA;set tabstop=4&#xA;set shiftwidth=4&#xA;set noexpandtab&#xA;&#xA;&amp;quot; Display only 5 first suggestions when correcting orthograph&#xA;set spellsuggest=best,5&#xA;&#xA;&amp;quot; I use the &amp;lt;,&amp;gt; shortcut to align a paragraph to the wrap width&#xA;nmap , gqap&#xA;&amp;quot;&#xA;&amp;quot; Use Ctrl-W+` to close current file without closing the split (needs bclose&#xA;&amp;quot; plugin)&#xA;nmap &amp;lt;C-W&amp;gt;` &amp;lt;Plug&amp;gt;Kwbd&#xA;&#xA;&amp;quot; Enable the use of Ctrl-Space and Ctrl-Enter for completion&#xA;imap &amp;lt;C-S-space&amp;gt; &amp;lt;C-n&amp;gt;&#xA;imap &amp;lt;C-space&amp;gt; &amp;lt;C-p&amp;gt;&#xA;imap &amp;lt;C-CR&amp;gt; &amp;lt;C-x&amp;gt;&amp;lt;C-o&amp;gt;&#xA;&#xA;&amp;quot; Map the up/down arrow keys to follow visual lines, not the real ones&#xA;map &amp;lt;Up&amp;gt; gk&#xA;map &amp;lt;Down&amp;gt; gj&#xA;imap &amp;lt;Down&amp;gt; &amp;lt;C-o&amp;gt;gj&#xA;imap &amp;lt;Up&amp;gt; &amp;lt;C-o&amp;gt;gk&#xA;&#xA;&amp;quot; Map Meta-j and Meta-k to follow visual lines&#xA;map &amp;lt;M-j&amp;gt; gj&#xA;map &amp;lt;M-k&amp;gt; gk&#xA;&#xA;&amp;quot; Map Home and End to go to beginning and end of the visual line&#xA;map &amp;lt;End&amp;gt; g&amp;lt;End&amp;gt;&#xA;map &amp;lt;Home&amp;gt; g&amp;lt;Home&amp;gt;&#xA;imap &amp;lt;End&amp;gt; &amp;lt;C-o&amp;gt;g&amp;lt;End&amp;gt;&#xA;imap &amp;lt;Home&amp;gt; &amp;lt;C-o&amp;gt;g&amp;lt;Home&amp;gt;&#xA;&#xA;&amp;quot; Make Meta-Shift-MouseScroll create a visual block selection&#xA;noremap &amp;lt;M-S-LeftMouse&amp;gt; &amp;lt;4-LeftMouse&amp;gt;&#xA;inoremap &amp;lt;M-S-LeftMouse&amp;gt; &amp;lt;4-LeftMouse&amp;gt;&#xA;noremap &amp;lt;M-S-LeftDrag&amp;gt; &amp;lt;LeftDrag&amp;gt;&#xA;inoremap &amp;lt;M-S-LeftDrag&amp;gt; &amp;lt;LeftDrag&amp;gt;&#xA;&#xA;&amp;quot;set statusline=%&amp;lt;[%02n]\ %F%(\ %m%h%w%y%r%)\ %a%=\ %8l,%c%V/%L\ (%P)&#xA;&amp;quot; Map gw to switch the word under the cursors with the next one&#xA;nnoremap &amp;lt;silent&amp;gt; gw &amp;quot;_yiw:s/\(\%#\w\+\)\(\W\+\)\(\w\+\)/\3\2\1/&amp;lt;CR&amp;gt;&amp;lt;c-o&amp;gt;&amp;lt;c-l&amp;gt;&#xA;&#xA;&amp;quot; Map gl to switch the word under the cursor with the previous one&#xA;nnoremap &amp;lt;silent&amp;gt; gl &amp;quot;_yiw?\w\+\_W\+\%#&amp;lt;CR&amp;gt;:s/\(\%#\w\+\)\(\_W\+\)\(\w\+\)/\3\2\1/&amp;lt;CR&amp;gt;&amp;lt;c-o&amp;gt;&amp;lt;c-l&amp;gt;&#xA;&#xA;&amp;quot; Map F3 to show the list of buffers&#xA;map &amp;lt;F3&amp;gt; :buffers&amp;lt;CR&amp;gt;:b&amp;lt;space&amp;gt;&#xA;&#xA;&amp;quot; Map F4 to switch between .h and .cpp file&#xA;map &amp;lt;F4&amp;gt; :e %:p:s,.h$,.X123X,:s,.cpp$,.h,:s,.X123X$,.cpp,&amp;lt;CR&amp;gt;g`&amp;quot;&#xA;&#xA;&amp;quot; Map F5 and F6 to go to next/previous error marker&#xA;map &amp;lt;F5&amp;gt; :cp&amp;lt;CR&amp;gt;&#xA;map &amp;lt;F6&amp;gt; :cn&amp;lt;CR&amp;gt;&#xA;&#xA;&amp;quot; Map F8 to save all files and run Make&#xA;map &amp;lt;F8&amp;gt; :wall&amp;lt;CR&amp;gt;:make&amp;lt;CR&amp;gt;&#xA;&#xA;&amp;quot; Start indenting scheme automatically&#xA;filetype plugin indent on&#xA;&#xA;&amp;quot; Use the right grep command on mac&#xA;set grepprg=grep\ -nH\ $*&#xA;&#xA;&amp;quot; Of course we are using latex&#xA;let g:tex_flavor=&#39;latex&#39;&#xA;&#xA;&amp;quot; Autogenerate ctags on C/C++ source file save&#xA;&amp;quot;au BufWritePost .c,.cpp,*.h silent! !ctags -R &amp;amp;amp;&#xA;&#xA;&amp;quot; If we are on a Mac&#xA;if has(&amp;quot;unix&amp;quot;) &amp;amp;amp;&amp;amp;amp; match(system(&amp;quot;uname&amp;quot;),&#39;Darwin&#39;) != -1&#xA;let g:platform_MAC=1&#xA;&amp;quot; Setup a nice font for powerline&#xA;set guifont=Meslo\ LG\ M\ DZ\ for\ Powerline:h12&#xA;&#xA;&amp;quot; Receive option keys as meta&#xA;set macmeta&#xA;&#xA;&amp;quot; Map :TB for mode for writing text on a big screen&#xA;command TB colorscheme mayansmoke|set spell|set linespace=8|set guifont=Meslo\ LG\ M\ DZ\ for\ Powerline:h20|set fu&#xA;&amp;quot; Map :TB for mode for writing text on a small screen&#xA;command T colorscheme mayansmoke|set spell|set linespace=8|set guifont=Meslo\ LG\ M\ DZ\ for\ Powerline:h14&#xA;&amp;quot; Map :TB for mode for writing code&#xA;command C colorscheme zenburn|set nospell|set linespace=0|set guifont=Meslo\ LG\ M\ DZ\ for\ Powerline:h12&#xA;&#xA;&amp;quot; If we are on Linux&#xA;else&#xA;set guifont=Droid\ Sans\ Mono\ for\ Powerline\ 12&#xA;let g:Powerline_symbols = &#39;fancy&#39;&#xA;&#xA;&amp;quot; Map Meta+V as paste from system clipboard&#xA;imap &amp;lt;M-v&amp;gt; &amp;lt;Esc&amp;gt;&amp;quot;+pa&#xA;imap &amp;lt;M-S-v&amp;gt; &amp;lt;Esc&amp;gt;&amp;quot;+Pa&#xA;nmap &amp;lt;M-v&amp;gt; &amp;quot;+p&#xA;nmap &amp;lt;M-S-v&amp;gt; &amp;quot;+P&#xA;&#xA;&amp;quot; Map Meta+C as copy to system clipboard&#xA;vmap &amp;lt;M-c&amp;gt; &amp;quot;+y&#xA;&#xA;&amp;quot; Map Ctrl+S as save&#xA;nmap &amp;lt;C-s&amp;gt; :w&amp;lt;CR&amp;gt;&#xA;imap &amp;lt;C-s&amp;gt; &amp;lt;Esc&amp;gt;:w&amp;lt;CR&amp;gt;a&#xA;&#xA;&amp;quot; Map :TB for mode for writing text&#xA;command T colorscheme mayansmoke|set spell|set linespace=8|set guifont=Droid\ Sans\ Mono\ for\ Powerline\ 14&#xA;&amp;quot; Map :TB for mode for writing code&#xA;command C colorscheme zenburn|set nospell|set linespace=0|set guifont=Droid\ Sans\ Mono\ for\ Powerline\ 10&#xA;endif&#xA;&#xA;&amp;quot; Deletes double lines and such from a SVN log&#xA;function! CleanSVNLog()&#xA;%s/^-*$//g&#xA;%s/^r\d\d*.*$//g&#xA;%s/\n\n\n*/\r\r/&#xA;endfunction&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;</description>
    </item>
    <item>
      <title>List of useful links to hack your OS X installation</title>
      <link>https://yozy.net/2012/07/list-of-useful-links-to-hack-your-os-x-installation/</link>
      <pubDate>Thu, 05 Jul 2012 08:00:40 +0000</pubDate>
      <guid>https://yozy.net/2012/07/list-of-useful-links-to-hack-your-os-x-installation/</guid>
      <description>&lt;p&gt;This is more of a social bookmark than a full article. OS X is pretty neat but&#xA;the ever-present philosophy of &amp;ldquo;our way of doing it is the right way&amp;rdquo; can be&#xA;frustrating from time to time. Since I do not really like the trend of&#xA;paraphrasing already written articles I will just dump a bunch of links here&#xA;and say what I used them for.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://phatness.com/2007/08/fix-home-and-end-keys-on-mac-os-x/&#34; title=&#34;Fix Home and End keys behaviour&#34;&gt;Fix Home and End keys behaviour&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Home and End keys should go to the beginning and end of the line you are on&#xA;while editing. In OS X they scroll to the top and the bottom of the current&#xA;document, which is retarded.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/mathiasbynens/dotfiles/blob/master/.osx&#34; title=&#34;A ton of useful hidden settings&#34;&gt;A ton of useful hidden settings&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;I like keyboard repeat. Also I like to be able to copy text from QuickLook.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.macworld.com/article/1131923/qlterminal.html&#34; title=&#34;Use QuickLook from the terminal&#34;&gt;Use QuickLook from the terminal&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;I use this for my side-project of making Midnight Commander actually usable on&#xA;OS X. So far I did not have time to really invest into it.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Best editor for Chinese text on Mac</title>
      <link>https://yozy.net/2012/06/best-editor-for-chinese-text-on-mac/</link>
      <pubDate>Sun, 24 Jun 2012 16:15:27 +0000</pubDate>
      <guid>https://yozy.net/2012/06/best-editor-for-chinese-text-on-mac/</guid>
      <description>&lt;p&gt;I have spent some time (like an hour or so) looking for a good editor for&#xA;Chinese script on Mac OS X. To my surprise most of what I have tried sucked in&#xA;one or more ways.&lt;/p&gt;&#xA;&lt;h2 id=&#34;competitors&#34;&gt;Competitors&lt;/h2&gt;&#xA;&lt;p&gt;Of course, I have started with the editor I use to edit plaintext daily -&#xA;&lt;strong&gt;iA Writer&lt;/strong&gt;. For once, I have said to myself, the humongous font&#xA;this editor uses would be very useful. Sadly, iA Writer uses the default OS X&#xA;font for chinese. This derivate of Heiti is quite broken and many glyphs are&#xA;wrong (this was pointed out to me by a native speaker). Also, line height of&#xA;lines with chinese characters is weird, and it changes depending of the&#xA;presence of non-chinese characters in it (including blank space). I have&#xA;reported the issue to the authors and it was acknowledged so there might be a&#xA;different font used in future versions… we will see.&lt;/p&gt;&#xA;&lt;p&gt;So my first choice did not work out. No worries, there are plenty other editors&#xA;to check. My second choice was &lt;a href=&#34;http://code.google.com/p/macvim/&#34; title=&#34;MacVim&#34;&gt;&lt;strong&gt;MacVim&lt;/strong&gt;&lt;/a&gt;, which is the best&#xA;invention since sliced bread. The experience was very poor. The insert mode&#xA;works well, as expected, however the normal mode hates IMKQIM input method. It&#xA;would seem that Vim was not meant to be used with other than standard input&#xA;methods, which is understandable.&lt;/p&gt;&#xA;&lt;p&gt;Moving on. Since alternative software did not work out I tried the native&#xA;solutions. &lt;strong&gt;TextEdit&lt;/strong&gt; is usually a very good text editor, if you&#xA;do not need any features. When writing immediately (in plain text mode), you&#xA;will run into the same problem as with iA Writer : horrible font. You can&#xA;change the font for plain text mode, of course, but you have to choose the&#xA;right one. STSong is a good choice, with other fonts you might run into&#xA;problems with line heights (as some fonts miss some glyphs).&#xA;&lt;strong&gt;Fraise&lt;/strong&gt; suffers from similar problems.&lt;/p&gt;&#xA;&lt;p&gt;I have also tried &lt;strong&gt;Pages&lt;/strong&gt;, it works really well, with the right fonts. Line&#xA;heights are always OK. But it is not a plain text editor, and it has all the&#xA;downsides of a text processor with hundreds of options.&lt;/p&gt;&#xA;&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;&#xA;&lt;p&gt;Finally, I ended up with yet another editor. I have dug up the rusty&#xA;&lt;a href=&#34;http://gottcode.org/focuswriter/&#34; title=&#34;FocusWriter&#34;&gt;&lt;strong&gt;FocusWriter&lt;/strong&gt;&lt;/a&gt; which I have abandoned previously to&#xA;iA Writer. The possibility to switch themes makes it a good choice for&#xA;different scripts. My choice was the 华文细黑 font.  Best of all FocusWriter is&#xA;available on all platforms, so I just use that on Linux as well.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;em&gt;Edit 2015-10-18&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;iA Writer no longer has the aforementioned problems, at least in OSX 10.11&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Fix the home and end keys in Firefox with Keyconfig and Vimperator</title>
      <link>https://yozy.net/2012/04/fix-the-home-and-end-keys-in-firefox-with-keyconfig-and-vimperator/</link>
      <pubDate>Wed, 25 Apr 2012 11:12:58 +0000</pubDate>
      <guid>https://yozy.net/2012/04/fix-the-home-and-end-keys-in-firefox-with-keyconfig-and-vimperator/</guid>
      <description>&lt;p&gt;Somme funny man thought that it would be good to screw up the behavior of home&#xA;and end keys in firefox on Mac. Nobody knows why and everybody is complaining.&#xA;Also, the same genius have made the &lt;em&gt;⌘→&lt;/em&gt; and &lt;em&gt;⌘←&lt;/em&gt;&#xA;commands navigate in history instead of doing what they do in every other&#xA;application which is &amp;ldquo;move to the end or beginning of the line&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Oh well.. Luckily there IS a solution for this. The extension keyconfig will&#xA;fix half of the problem. &lt;a href=&#34;http://forums.mozillazine.org/viewtopic.php?t=72994&#34; title=&#34;Keyconfig Firefox Extension&#34;&gt;Get the keyconfing extension here&lt;/a&gt; and&#xA;disable the incriminating keys. Many thanks to the author. Now you have working&#xA;command keys. As for the home and end key, I fixed my problem in vimperator,&#xA;since it is an extension I use on all of my firefoxes. Basically the idea is to&#xA;remap home and end (along with +shift variants)) so they fire off the&#xA;command+arrow commands. Here is the code, enjoy :&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;imap &amp;lt;Home&amp;gt; &amp;lt;M-Left&amp;gt;&#xA;imap &amp;lt;End&amp;gt; &amp;lt;M-Right&amp;gt;&#xA;imap &amp;lt;S-End&amp;gt; &amp;lt;M-S-Right&amp;gt;&#xA;imap &amp;lt;S-Home&amp;gt; &amp;lt;M-S-Left&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Either run it in the vimperator command line and do a :mkvimperatorrc! or put&#xA;it directly into your configuration file.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Push irssi away messages to your iPhone</title>
      <link>https://yozy.net/2012/04/push-irssi-away-messages-to-your-iphone/</link>
      <pubDate>Sat, 14 Apr 2012 16:05:12 +0000</pubDate>
      <guid>https://yozy.net/2012/04/push-irssi-away-messages-to-your-iphone/</guid>
      <description>&lt;p&gt;Using irssi for IRC is quite a must. Add some &lt;a href=&#34;http://www.bitlbee.org/main.php/news.r.html&#34;&gt;bitlbee&lt;/a&gt; sweetness&#xA;and you have everything you need for your instant messaging needs. With a handy&#xA;ssh application like iSSH you will get to a cyborg state when you are always&#xA;connected. Small problem arises when compared to other IM applications, like&#xA;IMO, that is that there are no notifications available and you will probably&#xA;miss a lot of conversations. Fear not, however, for there is a solution for&#xA;every problem.&lt;/p&gt;&#xA;&lt;h2 id=&#34;push-notification-application&#34;&gt;Push notification application&lt;/h2&gt;&#xA;&lt;p&gt;First, you will need an application to get any push notification to your phone.&#xA;There are several of them, I would recommend using the &lt;a href=&#34;http://www.appnotifications.com/&#34; title=&#34;Notifications App&#34;&gt;Push4&lt;/a&gt;.&#xA;There is a free version if you want to test it first. Once you have installed&#xA;it and created an account go to your account settings on your website and go to&#xA;My Account -&amp;gt; Settings -&amp;gt; Profile to get your API key. You can also make the&#xA;application send you an e-mail with the key.&lt;/p&gt;&#xA;&lt;h2 id=&#34;some-scripting&#34;&gt;Some scripting&lt;/h2&gt;&#xA;&lt;p&gt;You will need to make two scripts to send the notifications. (You could manage&#xA;with less, of course, but I am too lazy). First one is a bash script which uses&#xA;curl to send a notification to your phone. Here it is :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -d &lt;span class=&#34;s2&#34;&gt;&amp;#34;user_credentials=YOUR_API_KEY&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt; -d &lt;span class=&#34;s2&#34;&gt;&amp;#34;notification[message]=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt; -d &lt;span class=&#34;s2&#34;&gt;&amp;#34;notification[long_message]=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$2&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt; -d &lt;span class=&#34;s2&#34;&gt;&amp;#34;notification[title]=New irssi notification&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt; -d &lt;span class=&#34;s2&#34;&gt;&amp;#34;notification[subtitle]=irssi message&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt; -d &lt;span class=&#34;s2&#34;&gt;&amp;#34;notification[long_message_preview]=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt; -d &lt;span class=&#34;s2&#34;&gt;&amp;#34;notification[message_level]=2&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt; -d &lt;span class=&#34;s2&#34;&gt;&amp;#34;notification[silent]=0&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt; -d &lt;span class=&#34;s2&#34;&gt;&amp;#34;notification[action_loc\_key]=OK&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt; -d &lt;span class=&#34;s2&#34;&gt;&amp;#34;notification[sound]=1&amp;#34;&lt;/span&gt; https://www.appnotifications.com/account/notifications.json&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Do not forget to replace the YOUR_API_KEY by your real API key.&lt;/p&gt;&#xA;&lt;p&gt;You can test the script immediately, although it might not work for a few hours&#xA;just after your Push4 account creation. Basically this script sends you a&#xA;notifications with first parameter as short text preview and second as a long&#xA;text (which can use HTML markup). A second script is needed to parse the&#xA;awaylog and send notifications using the first script.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;ch&#34;&gt;#!/usr/bin/perl -n use HTML::Entities;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;/(\d+:\d+) (?:([#&amp;amp;][^ ]+)+:)?.*?\/.*?\/(.*?).g.8.*?e(YOURNICK: )?(.*)/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$time&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$channel&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$sender&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$message&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$message&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=~&lt;/span&gt; &lt;span class=&#34;sr&#34;&gt;s/\\/:/g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$message&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=~&lt;/span&gt; &lt;span class=&#34;sr&#34;&gt;s/&amp;#34;/\\&amp;#34;/g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$message&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=~&lt;/span&gt; &lt;span class=&#34;sr&#34;&gt;s/[;&amp;amp;]/:/g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`./irssi_notify.sh &amp;#34;$sender : $message at $time&amp;#34; &amp;#34;Message from &amp;lt;b&amp;gt;$sender&amp;lt;/b&amp;gt; (&amp;lt;i&amp;gt;$channel&amp;lt;/i&amp;gt;) at &amp;lt;b&amp;gt;$time&amp;lt;/b&amp;gt; : $message&amp;#34;\n`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now, to clarify things a bit. What this script does is that it takes some&#xA;input, and if it is in some format, &lt;code&gt;/(\d+:\d+) (?:([#&amp;amp;][^ ]+)+:)?.\*?\/.\*?\/(.\*?).g.8.\*?e(YOURNICK: )?(.*)/&lt;/code&gt;, to be precise, it will&#xA;parse it and send it via a notification. Note that this works if you did not&#xA;play with your irssi theme too much, as the awaylog basically copies the format&#xA;of public and highlight messages. The (YOURNICK: )? part is optional, and it&#xA;helps to remove the usual prefix of highlight messages. I can not help you much&#xA;with the regex, you have to find one on your own or you can use this script&#xA;which basically takes anything in awaylog and sends it as it is (it works well&#xA;and everywhere).&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;ch&#34;&gt;#!/usr/bin/perl -n use HTML::Entities;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$message&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;encode_entities&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$message&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=~&lt;/span&gt; &lt;span class=&#34;sr&#34;&gt;s/\\/:/g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$message&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=~&lt;/span&gt; &lt;span class=&#34;sr&#34;&gt;s/&amp;#34;/\\&amp;#34;/g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$message&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=~&lt;/span&gt; &lt;span class=&#34;sr&#34;&gt;s/[;&amp;amp;]/:/g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`./irssi_notify.sh &amp;#34;$message&amp;#34; &amp;#34;$message&amp;#34;\n`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;making-it-all-work&#34;&gt;Making it all work&lt;/h2&gt;&#xA;&lt;p&gt;Let us run the machine now. You will need to start another screen to run this&#xA;(if somebody will help me with making a nohup version of the command I will&#xA;gladly have it). Run a terminal on your shell and run&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;screen bash tailf ~/.irssi/away.log &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; perl irssi_notify.pl&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now detach the screen and you are on the roll.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;em&gt;Edit 2015-10-17&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;The Push4 service is no longer available. I am currently using a solution that&#xA;uses &lt;em&gt;Pushover&lt;/em&gt;. I&amp;rsquo;ll write up an article on how to use that shortly.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Autocopy links of files uploaded to Dropbox public folder with a folder action</title>
      <link>https://yozy.net/2012/02/autocopy-links-of-files-uploaded-to-dropbox-public-folder-with-a-folder-action/</link>
      <pubDate>Sat, 25 Feb 2012 23:54:55 +0000</pubDate>
      <guid>https://yozy.net/2012/02/autocopy-links-of-files-uploaded-to-dropbox-public-folder-with-a-folder-action/</guid>
      <description>&lt;p&gt;This tutorial is largely based on &lt;a href=&#34;http://forums.dropbox.com/topic.php?id=4659&#34;&gt;this post on the Dropbox&#xA;forums&lt;/a&gt;, all credit on the script goes to the original&#xA;author Christian G. My contribution is that this script also invokes a Growl&#xA;message (thus, you will need Growl installed) also, the # character is replaced&#xA;by %23 (because Dropbox does not like it much) Here goes the script :&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-applescripts&#34; data-lang=&#34;applescripts&#34;&gt;on adding folder items to this_folder after receiving added_items&#xA;    try&#xA;        set the item_count to the number of items in the added_items&#xA;        if the item_count is equal to 1 then&#xA;            set theFile to item 1 of added_items&#xA;            set theRawFilename to (&amp;#34;&amp;#34; &amp;amp;amp; theFile)&#xA;&#xA;            set tid to AppleScript&amp;#39;s text item delimiters&#xA;            set AppleScript&amp;#39;s text item delimiters to &amp;#34;:&amp;#34;&#xA;            set theFileName to (text item 6 of theRawFilename) as text&#xA;            set AppleScript&amp;#39;s text item delimiters to tid&#xA;&#xA;            set theWebSafeFileName to switchText from theFileName to &amp;#34;%20&amp;#34; instead of &amp;#34; &amp;#34;&#xA;            set theWebSafeFileName to switchText from theWebSafeFileName to &amp;#34;%23&amp;#34; instead of &amp;#34;#&amp;#34;&#xA;&#xA;            set theURL to &amp;#34;http://dl.dropbox.com/u/YOUR_DROPBOX_ID/&amp;#34; &amp;amp;amp; theWebSafeFileName&#xA;            set the clipboard to theURL as text&#xA;&#xA;            tell application &amp;#34;GrowlHelperApp&amp;#34;&#xA;&#xA;                set the allNotificationsList to ¬&#xA;                    {&amp;#34;Public URL&amp;#34;}&#xA;&#xA;                set the enabledNotificationsList to allNotificationsList&#xA;&#xA;                register as application ¬&#xA;                    &amp;#34;CopyDropboxURL&amp;#34; all notifications allNotificationsList ¬&#xA;                    default notifications enabledNotificationsList ¬&#xA;                    icon of application &amp;#34;Dropbox&amp;#34;&#xA;&#xA;                notify with name ¬&#xA;                    &amp;#34;Public URL&amp;#34; title ¬&#xA;                    &amp;#34;Dropbox Public Folder Updated&amp;#34; description ¬&#xA;                    (theURL &amp;amp;amp; &amp;#34; copied to clipboard.&amp;#34;) application name &amp;#34;CopyDropboxURL&amp;#34;&#xA;&#xA;            end tell&#xA;        end if&#xA;    end try&#xA;end adding folder items to&#xA;&#xA;to switchText from t to r instead of s&#xA;    set d to text item delimiters&#xA;    set text item delimiters to s&#xA;    set t to t&amp;#39;s text items&#xA;    set text item delimiters to r&#xA;    tell t to set t to item 1 &amp;amp;amp; ({&amp;#34;&amp;#34;} &amp;amp;amp; rest)&#xA;    set text item delimiters to d&#xA;    t&#xA;end switchText&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;how-to-use-this&#34;&gt;How to use this&lt;/h2&gt;&#xA;&lt;p&gt;First of allyou have to know your Dropbox user ID and change the&#xA;YOUR_DROPBOX_ID to it. This is the number that appears after /u/ in your&#xA;public Dropbox links. Now open the apple script editor and save this script&#xA;into&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;Macintosh HD/Library/Scripts/Folder Action Scripts&lt;/code&gt; as CopyDropboxURL.scpt.&#xA;Next navigate to your Dropbox public folder in finder, right click (or ⌘-click)&#xA;it. Choose Services→Folder Actions Setup&amp;hellip; from the menu. In the menu that&#xA;opens choose the CopyDropboxURL.scpt.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Enable system volume control for a generic USB device in Snow Leopard</title>
      <link>https://yozy.net/2011/06/enable-system-volume-control-for-a-generic-usb-device-in-snow-leopard/</link>
      <pubDate>Mon, 06 Jun 2011 08:00:56 +0000</pubDate>
      <guid>https://yozy.net/2011/06/enable-system-volume-control-for-a-generic-usb-device-in-snow-leopard/</guid>
      <description>&lt;p&gt;This post is mainly targeted at people who have used an X-Fi USB audio card&#xA;with their PCs on Windows or Linux. Many of us got a bad surprise when we&#xA;plugged it into our shiny new Macs and we couldn&amp;rsquo;t even control the volume of&#xA;the device through the system.&lt;/p&gt;&#xA;&lt;p&gt;This particular problem is due to lack of dedicated drivers made by Creative.&#xA;It seems that they only make OS X drivers for cards specially targeted at Macs.&lt;/p&gt;&#xA;&lt;p&gt;Luckily there is a way to work around this limitation using a piece of software called &lt;a href=&#34;http://cycling74.com/products/soundflower/&#34; title=&#34;Soundflower homepage&#34;&gt;Soundflower&lt;/a&gt;. The procedure is very simple, just follow the four steps here:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Download and install SoundFlower (this might require a restart)&lt;/li&gt;&#xA;&lt;li&gt;Set &lt;strong&gt;Soundflower (2ch)&lt;/strong&gt; as your audio output device (hint: you can option (⌥)-click your volume control icon in the menu)&lt;/li&gt;&#xA;&lt;li&gt;Launch Soundflowerbed (it was installed along with Soundflower)&lt;/li&gt;&#xA;&lt;li&gt;In the 2 channel device output options select your USB card.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;And it is done, you can happily use your volume control buttons once again.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://yozy.net/images/soundflower-volume/soundflower_system_output_settings.png&#34; alt=&#34;system-output&#34; title=&#34;Set system output to Soundflower (2ch)&#34;&gt;&#xA;&lt;img src=&#34;https://yozy.net/images/soundflower-volume/soundflower_driver_settings.png&#34; alt=&#34;soundflower-output&#34; title=&#34;Set Soundflower output to your USB card&#34;&gt;&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Get ID3 tags right on your Cowon S9 with Linux</title>
      <link>https://yozy.net/2011/05/get-id3-tags-right-on-your-cowon-s9-with-linux/</link>
      <pubDate>Sun, 22 May 2011 13:49:31 +0000</pubDate>
      <guid>https://yozy.net/2011/05/get-id3-tags-right-on-your-cowon-s9-with-linux/</guid>
      <description>&lt;p&gt;Those ID3 tags on Cowon can be pesky. Sometimes you do not see the embedded&#xA;images, sometimes you see things like [11] instead of genres and if you are&#xA;really unlucky you will not see any tags at all. So, as a quick hint on how to&#xA;get all of this right:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Use &lt;a href=&#34;http://easytag.sourceforge.net/&#34; title=&#34;EeasyTAG for Linux&#34;&gt;EasyTAG&lt;/a&gt; (can be downloaded using your package manager in most&#xA;distributions)&lt;/li&gt;&#xA;&lt;li&gt;In Settings → Preferences go to the ID3Tag settings and do the following&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Check Automatically convert old ID3v2 tag versions&lt;/li&gt;&#xA;&lt;li&gt;Check Write ID3v2 tag → &lt;strong&gt;Version 2.3&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Uncheck Write ID3v1.x tag&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Edit tags of your files, be sure to re-save all files which appear in red&#xA;in EasyTAG as they have probably different versions of ID3 tags&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://yozy.net/images/EasyTAG-Cowon-settings.png&#34; alt=&#34;easytag-settings&#34; title=&#34;EasyTAG Cowon settings&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;If you want to use images from the tags instead of the per-folder cover.jpg&#xA;files you can use EasyTAG to include them in the tags as well. Bear in mind&#xA;though that only &lt;strong&gt;jpeg&lt;/strong&gt; files will be taken into account and only in mp3&#xA;files (no love for ogg users). Also for best effects use images of 272  x 272&#xA;pixels large.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Quick access to the last public url of a file in Dropbox</title>
      <link>https://yozy.net/2011/05/quick-access-to-the-last-public-url-of-a-file-in-dropbox/</link>
      <pubDate>Sun, 08 May 2011 08:00:14 +0000</pubDate>
      <guid>https://yozy.net/2011/05/quick-access-to-the-last-public-url-of-a-file-in-dropbox/</guid>
      <description>&lt;p&gt;I got bored to search for the url after uploading a file to the Dropbox&amp;rsquo;s&#xA;public folder. So I have hacked a quick shell script that takes the public url&#xA;of the latest file you uploaded to your public Dropbox folder and copies it to&#xA;the clipboard. I thought I could share:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;DROPBOX&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$HOME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/Dropbox&amp;#34;&lt;/span&gt; dropbox puburl &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$DROPBOX&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/Public/\`ls -1 -t &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$DROPBOX&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/Public | head -n 1\`&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; xclip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now, on OS X I have a folder action which does the same thing automatically&#xA;when a new file is uploaded. I will have to tinker with inotify and get it to&#xA;work on Linux as well.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Global keyboard actions in Snow Leopard without third-party software</title>
      <link>https://yozy.net/2011/05/global-keyboard-actions-in-snow-leopard-without-third-party-software/</link>
      <pubDate>Wed, 04 May 2011 08:00:15 +0000</pubDate>
      <guid>https://yozy.net/2011/05/global-keyboard-actions-in-snow-leopard-without-third-party-software/</guid>
      <description>&lt;p&gt;When I first got to use Mac OS X I have wondered whether it is possible to do&#xA;stuff which I was used to do (more or less) easily on Linux. Among others there&#xA;is the possibility to assign keyboard shortcuts to arbitrary actions (and&#xA;especially shell scripts). I found several tutorials on how to do this, but&#xA;they often include third party software like Quicksilver. Since I want to keep&#xA;my system as vanilla as possible I was searching for a way to do it otherwise,&#xA;and found it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;introducing-services&#34;&gt;Introducing Services&lt;/h2&gt;&#xA;&lt;p&gt;Snow Leopard has this great thing called Services, which is a very simple to&#xA;use way of creating very powerful actions in no time. Now, usually these are&#xA;bound to a specific application or context, but they can be global. Since it is&#xA;much easier to explain something on an example, let us use a simple example.&#xA;Following this article on how to pause iTunes for a short period of time.&lt;/p&gt;&#xA;&lt;h3 id=&#34;step-1&#34;&gt;Step 1&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Open up the &lt;strong&gt;Automator&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Create a New Service.&lt;/li&gt;&#xA;&lt;li&gt;In the &amp;lsquo;service receives selected&amp;rsquo; drop-down box select &lt;strong&gt;no input&lt;/strong&gt; in&#xA;&lt;strong&gt;any application&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;li&gt;In the left sidebar find &lt;strong&gt;Run AppleScript&lt;/strong&gt; and drag it into the workflow&lt;/li&gt;&#xA;&lt;li&gt;Paste the code below on the place where it says &lt;em&gt;(&lt;/em&gt; Your script goes here&#xA;&lt;em&gt;)&lt;/em&gt;&lt;/li&gt;&#xA;&lt;li&gt;Save the service as &amp;ldquo;Pause iTunes for 5 minutes&amp;rdquo;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;The script in question follows:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-applescript&#34; data-lang=&#34;applescript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;tell&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;application&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;iTunes&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;pause&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;delay&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;300&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;play&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;end&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;tell&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In the end the whole Automator window should look like this.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://yozy.net/images/global-mac-shortcuts/Automator-service-example.png&#34; alt=&#34;automator-service-example&#34; title=&#34;Automator service example&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;If you go to the current application&amp;rsquo;s menu now you should see your service in&#xA;the Services sub-menu.&lt;/p&gt;&#xA;&lt;h3 id=&#34;step-2&#34;&gt;Step 2&lt;/h3&gt;&#xA;&lt;p&gt;Now the only thing that remains is to add a keyboard shortcut for this service.&#xA;Open up System Preferences → Keyboard → Keyboard Shortcuts. In the left panel&#xA;click on Services and then click on the + button under the right panel. In the&#xA;following dialog choose:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Application : &lt;strong&gt;All Applications&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Menu Title : &lt;strong&gt;Pause iTunes for 5 minutes&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Keyboard Shortcut : &lt;strong&gt;F10&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Following shortcut illustrates the result. Note that it is vital that the Menu&#xA;Title chosen is &lt;strong&gt;exactly the same&lt;/strong&gt; as the name under which you have saved the&#xA;service.&lt;/p&gt;&#xA;&lt;p&gt;[Update] New services will be added to the list automatically. The only&#xA;remaining thing is to add a shortcut key. This might be a feature of Lion or&#xA;Mountain Lion as I do not recall it while using 10.6.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://yozy.net/images/global-mac-shortcuts/Automator-service-example.png&#34; alt=&#34;shortcut-asignment&#34; title=&#34;Snow Leopard keyboard shortcut assignment&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;All done, you can now enjoy launching your script anywhere, anytime by pressing&#xA;F10.&lt;/p&gt;&#xA;</description>
    </item>
  </channel>
</rss>
