serendipity_daniel-lange.com.rss2.xml - sfeed_tests - sfeed tests and RSS and Atom files
 (HTM) git clone git://git.codemadness.org/sfeed_tests
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       serendipity_daniel-lange.com.rss2.xml (168624B)
       ---
            1 <?xml version="1.0" encoding="utf-8" ?>
            2 <rss version="2.0" 
            3    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
            4    xmlns:admin="http://webns.net/mvcb/"
            5    xmlns:dc="http://purl.org/dc/elements/1.1/"
            6    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
            7    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
            8    xmlns:content="http://purl.org/rss/1.0/modules/content/"
            9    >
           10 <channel>
           11     
           12     <title>Daniel Lange's blog</title>
           13     <link>https://daniel-lange.com/</link>
           14     <description>agrep -pB IT /dev/life</description>
           15     <dc:language>en</dc:language>
           16     <generator>Serendipity 2.3.5 - http://www.s9y.org/</generator>
           17     <pubDate>Tue, 13 Apr 2021 10:53:26 GMT</pubDate>
           18 
           19     <image>
           20     <url>//daniel-lange.com/uploads/Avatar_Blog_144_234.png</url>
           21     <title>RSS: Daniel Lange's blog - agrep -pB IT /dev/life</title>
           22     <link>https://daniel-lange.com/</link>
           23     <width>144</width>
           24     <height>234</height>
           25 </image>
           26 
           27 <item>
           28     <title>The Stallman wars</title>
           29     <link>https://daniel-lange.com/archives/171-The-Stallman-wars.html</link>
           30             <category>Open Source</category>
           31     
           32     <comments>https://daniel-lange.com/archives/171-The-Stallman-wars.html#comments</comments>
           33     <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=171</wfw:comment>
           34 
           35     <slash:comments>5</slash:comments>
           36     <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=171</wfw:commentRss>
           37     
           38 
           39     <author>nospam@example.com (Daniel Lange)</author>
           40     <content:encoded>
           41     &lt;p&gt;So, 2021 isn&#039;t bad enough yet, but don&#039;t despair, people are working to fix that:&lt;/p&gt;
           42 
           43 &lt;p style=&quot;margin: 1.2cm; font-weight: bold;&quot;&gt;Welcome to the Stallman wars&lt;/p&gt;
           44 
           45 &lt;p&gt;Team Cancel: &lt;a href=&quot;https://rms-open-letter.github.io/&quot;&gt;https://rms-open-letter.github.io/&lt;/a&gt; (&lt;a href=&quot;https://github.com/rms-open-letter/rms-open-letter.github.io/&quot;&gt;repo&lt;/a&gt;)&lt;/p&gt;
           46 
           47 &lt;p&gt;Team Support: &lt;a href=&quot;https://rms-support-letter.github.io/&quot;&gt;https://rms-support-letter.github.io/&lt;/a&gt; (&lt;a href=&quot;https://github.com/rms-support-letter/rms-support-letter.github.io/&quot;&gt;repo&lt;/a&gt;)&lt;/p&gt;
           48 
           49 &lt;p&gt;Current stats are:&lt;/p&gt;
           50 
           51 &lt;pre&gt;
           52 Team Cancel:  3020 signers from 1414 individual commit authors
           53 Team Support: 6774 signers from 5392 individual commit authors
           54 &lt;/pre&gt;
           55 
           56 &lt;p&gt;Git shortlog (Top 10):&lt;/p&gt;
           57 
           58 &lt;pre&gt;
           59 rms_cancel.git (Last update: 2021-06-21 16:05:07 (UTC))
           60   1230  Neil McGovern
           61    251  Joan Touzet
           62     99  Elana Hashman
           63     73  Molly de Blanc
           64     36  Shauna
           65     19  Juke
           66     18  Stefano Zacchiroli
           67     17  Alexey Mirages
           68     16  Devin Halladay
           69     14  Nader Jafari
           70 
           71 rms_support.git (Last update: 2021-06-28 04:52:17 (UTC))
           72   1815  shenlebantongying
           73   1584  nukeop
           74   1560  Ivanq
           75   1035  Victor
           76    876  Job Bautista
           77    123  nekonee
           78    101  Victor Gridnevsky
           79     41  Patrick Spek
           80     25  Borys Kabakov
           81     17  KIM Taeyeob
           82 &lt;/pre&gt;
           83 
           84 &lt;p&gt;(last updated 2021-06-28 05:05:22 (UTC))&lt;/p&gt;
           85 
           86 &lt;p&gt;Technical info:&lt;br /&gt;
           87 Signers are counted from their &quot;Signed / Individuals&quot; sections. Commits are counted with &lt;code&gt;git shortlog -s&lt;/code&gt;.&lt;br /&gt;
           88 Team Cancel also has organizational signatures with Mozilla, Suse and X.Org being among the notable signatories.
           89 The 16 original signers of the Cancel petition are added in their count.
           90 Neil McGovern, Juke and shenlebantongying need &lt;code&gt;.mailmap&lt;/code&gt; support as they have committed with different names.&lt;/p&gt;
           91 
           92 &lt;p&gt;Further reading:&lt;/p&gt;
           93 
           94 &lt;ul&gt;
           95 &lt;li&gt;An introductory &lt;a href=&quot;https://arstechnica.com/tech-policy/2021/03/free-software-advocates-seek-removal-of-richard-stallman-and-entire-fsf-board/&quot;&gt;Ars Technica article&lt;/a&gt; in case you wonder what this is all about.&lt;/li&gt;
           96 &lt;li&gt;Debian vote mailing-list: &lt;a href=&quot;https://lists.debian.org/debian-vote/2021/03/maillist.html&quot;&gt;March 2021&lt;/a&gt;, &lt;a href=&quot;https://lists.debian.org/debian-vote/2021/04/maillist.html&quot;&gt;April 2021&lt;/a&gt;&lt;/li&gt;
           97 &lt;li&gt;NYT Magazine on the &lt;a href=&quot;https://www.nytimes.com/2020/12/03/t-magazine/cancel-culture-history.html&quot;&gt;history of cancel culture&lt;/a&gt;&lt;/li&gt;
           98 &lt;li&gt;Ed Santos&#039; &lt;a href=&quot;https://edsantos.eu/on-stalman/&quot;&gt;commentary and analysis&lt;/a&gt;&lt;/li&gt;
           99 &lt;/ul&gt;
          100 
          101 &lt;p&gt;12.04.2021 statements from the accused:&lt;/p&gt;
          102 
          103 &lt;ul&gt;
          104 &lt;li&gt;&lt;a href=&quot;https://www.fsf.org/news/statement-of-fsf-board-on-election-of-richard-stallman&quot;&gt;Statement of the FSF board on the election&lt;/a&gt;&lt;/li&gt;
          105 &lt;li&gt;&lt;a href=&quot;https://www.fsf.org/news/rms-addresses-the-free-software-community&quot;&gt;Statement of Richard Stallman&lt;/a&gt;&lt;/li&gt;
          106 &lt;/ul&gt;
          107 
          108 &lt;p&gt;18.04.2021 Debian General Resolution&lt;/p&gt;
          109 
          110 &lt;p&gt;The Debian General Resolution (GR) vote of the developers has concluded to not issue a public statement at all, see
          111 &lt;a href=&quot;https://www.debian.org/vote/2021/vote_002#outcome&quot;&gt;https://www.debian.org/vote/2021/vote_002#outcome&lt;/a&gt; for the results.&lt;/p&gt;
          112 
          113 &lt;blockquote&gt;
          114   &lt;p&gt;It is better to keep quiet and seem ignorant than to speak up and remove all doubt.&lt;/p&gt;
          115 &lt;/blockquote&gt;
          116 
          117 &lt;p&gt;See &lt;a href=&quot;https://quoteinvestigator.com/2010/05/17/remain-silent/&quot;&gt;Quote Investigator&lt;/a&gt; for the many people that rephrased these words over the centuries.
          118 They still need to be recalled more often as too many people in the FLOSS community have forgotten about that wisdom...&lt;/p&gt;
          119  
          120     </content:encoded>
          121 
          122     <pubDate>Fri, 26 Mar 2021 11:05:00 +0100</pubDate>
          123     <guid isPermaLink="false">https://daniel-lange.com/archives/171-guid.html</guid>
          124     <category>fsf</category>
          125 <category>gnu</category>
          126 <category>politics</category>
          127 <category>updated</category>
          128 
          129 </item>
          130 <item>
          131     <title>Compiling and installing the Gentoo Linux kernel on emerge without genkernel (part 2)</title>
          132     <link>https://daniel-lange.com/archives/170-Compiling-and-installing-the-Gentoo-Linux-kernel-on-emerge-without-genkernel-part-2.html</link>
          133             <category>Gentoo</category>
          134     
          135     <comments>https://daniel-lange.com/archives/170-Compiling-and-installing-the-Gentoo-Linux-kernel-on-emerge-without-genkernel-part-2.html#comments</comments>
          136     <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=170</wfw:comment>
          137 
          138     <slash:comments>1</slash:comments>
          139     <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=170</wfw:commentRss>
          140     
          141 
          142     <author>nospam@example.com (Daniel Lange)</author>
          143     <content:encoded>
          144     &lt;p&gt;The first install of a Gentoo kernel needs to be somewhat manual if you want to optimize the kernel for the (virtual) system it boots on.&lt;/p&gt;
          145 
          146 &lt;p&gt;In &lt;a href=&quot;https://daniel-lange.com/archives/169-Compiling-and-installing-the-Gentoo-Linux-kernel-on-emerge-without-genkernel-part-1.html&quot;&gt;part 1&lt;/a&gt; I laid out how to improve the subsequent emerges of &lt;code&gt;sys-kernel/gentoo-sources&lt;/code&gt; with a small drop in script to build the kernel as part of the ebuild.&lt;/p&gt;
          147 
          148 &lt;p&gt;Since end of last year Gentoo also supports &lt;a href=&quot;https://wiki.gentoo.org/wiki/Project:Distribution_Kernel&quot;&gt;a less manual way&lt;/a&gt; of emerging a kernel:&lt;/p&gt;
          149 
          150 &lt;p&gt;The following kernel blends are available:&lt;/p&gt;
          151 
          152 &lt;ul&gt;
          153 &lt;li&gt;sys-kernel/gentoo-kernel (the Gentoo kernel you can configure and compile locally - typically this is what you want if you run Gentoo)&lt;/li&gt;
          154 &lt;li&gt;sys-kernel/gentoo-kernel-bin (a pre-compiled Gentoo kernel similar to what genkernel would get you)&lt;/li&gt;
          155 &lt;li&gt;sys-kernel/vanilla-kernel (the upstream Linux kernel, again configurable and locally compiled)&lt;/li&gt;
          156 &lt;/ul&gt;
          157 
          158 &lt;p&gt;So a quick walk-through for the &lt;code&gt;gentoo-kernel&lt;/code&gt; variant:&lt;/p&gt;
          159 
          160 &lt;h2&gt;1. Set up the correct package USE flags&lt;/h2&gt;
          161 
          162 &lt;p&gt;We do not want an initrd and we want our own config to be re-used so:&lt;/p&gt;
          163 
          164 &lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;sys-kernel/gentoo-kernel -initramfs savedconfig&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;etc&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;portage&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;package.use&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;gentoo-kernel&lt;/div&gt;
          165 
          166 &lt;h2&gt;2. Preseed the saved config&lt;/h2&gt;
          167 
          168 &lt;p&gt;The current kernel config needs to be saved as the initial &lt;code&gt;savedconfig&lt;/code&gt; so it is found and applied for our emerge below:&lt;/p&gt;
          169 
          170 &lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;mkdir&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-p&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;etc&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;portage&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;savedconfig&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;sys-kernel&lt;br /&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;cp&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-n&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;/usr/src/linux-&lt;span style=&quot;color: #007800;&quot;&gt;$(uname -r)&lt;/span&gt;/.config&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;etc&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;portage&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;savedconfig&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;sys-kernel&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;gentoo-kernel&lt;/div&gt;
          171 
          172 &lt;h2&gt;3. Emerge the new kernel&lt;/h2&gt;
          173 
          174 &lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;emerge sys-kernel&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;gentoo-kernel&lt;/div&gt;
          175 
          176 &lt;h2&gt;4. Update grub and reboot&lt;/h2&gt;
          177 
          178 &lt;p&gt;Unfortunately this ebuild does not update grub, so we have to run &lt;code&gt;grub-mkconfig&lt;/code&gt; manually. This can again be automated via a  &lt;code&gt;post_pkg_postinst()&lt;/code&gt; script. See the step 7 below.&lt;/p&gt;
          179 
          180 &lt;p&gt;But for now, let&#039;s do it manually:&lt;/p&gt;
          181 
          182 &lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;grub-mkconfig &lt;span style=&quot;color: #660033;&quot;&gt;-o&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;boot&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;grub&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;grub.cfg&lt;br /&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;# All fine? Time to reboot the machine:&lt;/span&gt;&lt;br /&gt;reboot&lt;/div&gt;
          183 
          184 &lt;h2&gt;5. (Optional) Prepare for the next kernel build&lt;/h2&gt;
          185 
          186 &lt;p&gt;Run &lt;code&gt;etc-update&lt;/code&gt; and merge the new kernel config entries into your &lt;code&gt;savedconfig&lt;/code&gt;.&lt;/p&gt;
          187 
          188 &lt;p&gt;&lt;!-- s9ymdb:674 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;717&quot; height=&quot;380&quot;  src=&quot;https://daniel-lange.com/uploads/entries/gentoo_sys-kernel_etc-update.png&quot;  alt=&quot;Screenshot of etc-update&quot;&gt;&lt;/p&gt;
          189 
          190 &lt;p&gt;The kernel should auto-build once new versions become available via portage.&lt;/p&gt;
          191 
          192 &lt;p&gt;Again the &lt;code&gt;etc-update&lt;/code&gt; can be automated if you feel that is sufficiently safe to do in your environment. See step 7 below for details.&lt;/p&gt;
          193 
          194 &lt;h2&gt;6. (Optional) Remove the old kernel sources&lt;/h2&gt;
          195 
          196 &lt;p&gt;If you want to switch from the method based on &lt;code&gt;gentoo-sources&lt;/code&gt; to the &lt;code&gt;gentoo-kernel&lt;/code&gt; one, you can remove the kernel sources:&lt;/p&gt;
          197 
          198 &lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;emerge &lt;span style=&quot;color: #660033;&quot;&gt;-C&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;=sys-kernel/gentoo-sources-5*&amp;quot;&lt;/span&gt;&lt;/div&gt;
          199 
          200 &lt;p&gt;Be sure to update the &lt;code&gt;/usr/src/linux&lt;/code&gt; symlink to the new kernel sources directory from &lt;code&gt;gentoo-kernel&lt;/code&gt;, e.g.:&lt;/p&gt;
          201 
          202 &lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;rm&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;usr&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;src&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;linux; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;ln&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-s&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;/usr/src/&lt;span style=&quot;color: #007800;&quot;&gt;$(uname -r)&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;usr&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;src&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;linux&lt;/div&gt;
          203 
          204 &lt;p&gt;This may be a good time for a bit more house-keeping: Clean up a bit in &lt;code&gt;/usr/src/&lt;/code&gt; to remove old build artefacts, &lt;code&gt;/boot/&lt;/code&gt; to remove old kernels and &lt;code&gt;/lib/modules/&lt;/code&gt; to get rid of old kernel modules.&lt;/p&gt;
          205 
          206 &lt;h2&gt;7. (Optional) Further automate the ebuild&lt;/h2&gt;
          207 
          208 &lt;p&gt;In &lt;a href=&quot;https://daniel-lange.com/archives/169-Compiling-and-installing-the-Gentoo-Linux-kernel-on-emerge-without-genkernel-part-1.html&quot;&gt;part 1&lt;/a&gt; we automated the kernel compile, install and a bit more via a helper function for &lt;code&gt;post_pkg_postinst()&lt;/code&gt;.&lt;/p&gt;
          209 
          210 &lt;p&gt;We can do the similarly for what is (currently) missing from the &lt;code&gt;gentoo-kernel&lt;/code&gt; ebuilds:&lt;/p&gt;
          211 
          212 &lt;p&gt;Create &lt;code&gt;/etc/portage/env/sys-kernel/gentoo-kernel&lt;/code&gt; with the following:&lt;/p&gt;
          213 
          214 &lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;post_pkg_postinst&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; etc-update &lt;span style=&quot;color: #660033;&quot;&gt;--automode&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-5&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;etc&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;portage&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;savedconfig&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;sys-kernel&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; grub-mkconfig &lt;span style=&quot;color: #660033;&quot;&gt;-o&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;boot&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;grub&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;grub.cfg&lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
          215 
          216 &lt;p&gt;The upside of &lt;code&gt;gentoo-kernel&lt;/code&gt; over &lt;code&gt;gentoo-sources&lt;/code&gt; is that you can put &quot;config override files&quot; in &lt;code&gt;/etc/kernel/config.d/&lt;/code&gt;. That way you theoretically profit from config improvements made by the upstream developers. See the &lt;a href=&quot;https://wiki.gentoo.org/wiki/Project:Distribution_Kernel&quot;&gt;Gentoo distribution kernel documentation&lt;/a&gt; for a sample snippet. I am fine with &lt;code&gt;savedconfig&lt;/code&gt; for now but it is nice that Gentoo provides the flexibility to support both approaches.&lt;/p&gt;
          217  
          218     </content:encoded>
          219 
          220     <pubDate>Wed, 03 Feb 2021 13:52:00 +0100</pubDate>
          221     <guid isPermaLink="false">https://daniel-lange.com/archives/170-guid.html</guid>
          222     <category>emerge</category>
          223 <category>kernel</category>
          224 <category>postinst</category>
          225 
          226 </item>
          227 <item>
          228     <title>Compiling and installing the Gentoo Linux kernel on emerge without genkernel (part 1)</title>
          229     <link>https://daniel-lange.com/archives/169-Compiling-and-installing-the-Gentoo-Linux-kernel-on-emerge-without-genkernel-part-1.html</link>
          230             <category>Gentoo</category>
          231     
          232     <comments>https://daniel-lange.com/archives/169-Compiling-and-installing-the-Gentoo-Linux-kernel-on-emerge-without-genkernel-part-1.html#comments</comments>
          233     <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=169</wfw:comment>
          234 
          235     <slash:comments>1</slash:comments>
          236     <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=169</wfw:commentRss>
          237     
          238 
          239     <author>nospam@example.com (Daniel Lange)</author>
          240     <content:encoded>
          241     &lt;p&gt;Gentoo emerges of &lt;code&gt;sys-kernel/gentoo-sources&lt;/code&gt; will nicely install the current kernel into &lt;code&gt;/usr/src/linux-*&lt;/code&gt; but it will not compile them.&lt;/p&gt;
          242 
          243 &lt;p&gt;The Gentoo wiki kernel documentation has a &lt;a href=&quot;https://wiki.gentoo.org/wiki/Kernel/Upgrade#Automated_build_and_installation&quot;&gt;script snippet&lt;/a&gt; to automate the kernel build with &lt;code&gt;genkernel&lt;/code&gt;.&lt;/p&gt;
          244 
          245 &lt;p&gt;I do not like to use &lt;code&gt;genkernel&lt;/code&gt; as it brings in lots of firmware files to build initrds that are not needed on virtual hardware. It also makes building the kernel slower.&lt;/p&gt;
          246 
          247 &lt;p&gt;So, the plain approach:&lt;/p&gt;
          248 
          249 &lt;p&gt;Make &lt;code&gt;emerge sys-kernel/gentoo-sources&lt;/code&gt; symlink the latest kernel to
          250 &lt;code&gt;/usr/src/linux&lt;/code&gt; so we can find it easily:&lt;/p&gt;
          251 
          252 &lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;echo&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;sys-kernel/gentoo-sources symlink&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;etc&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;portage&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;package.use&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;gentoo-sources&lt;/div&gt;
          253 
          254 &lt;p&gt;Create &lt;code&gt;/etc/portage/env/sys-kernel/gentoo-sources&lt;/code&gt; with the following:&lt;/p&gt;
          255 
          256 &lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;post_pkg_postinst&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #007800;&quot;&gt;CURRENT_KV&lt;/span&gt;=$&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;uname&lt;/span&gt; -r&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;unset&lt;/span&gt; ARCH&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-f&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;&lt;span style=&quot;color: #007800;&quot;&gt;${EROOT:-/}&lt;/span&gt;usr/src/linux-&lt;span style=&quot;color: #007800;&quot;&gt;${CURRENT_KV}&lt;/span&gt;/.config&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; ; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;then&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;cp&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-n&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;&lt;span style=&quot;color: #007800;&quot;&gt;${EROOT:-/}&lt;/span&gt;usr/src/linux-&lt;span style=&quot;color: #007800;&quot;&gt;${CURRENT_KV}&lt;/span&gt;/.config&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;&lt;span style=&quot;color: #007800;&quot;&gt;${EROOT:-/}&lt;/span&gt;usr/src/linux/.config&amp;quot;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;cd&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;&lt;span style=&quot;color: #007800;&quot;&gt;${EROOT:-/}&lt;/span&gt;usr/src/linux/&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; \&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;make&lt;/span&gt; olddefconfig &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; \&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;make&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-j5&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;make&lt;/span&gt; modules_install &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;make&lt;/span&gt; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;install&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; \&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; grub-mkconfig &lt;span style=&quot;color: #660033;&quot;&gt;-o&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;boot&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;grub&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;grub.cfg&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;fi&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
          257 
          258 &lt;p&gt;This will compile the next kernel on the basis of the config of the currently running kernel, install the modules and the kernel bzImage and update grub so it knows about the new kernel for the next reboot.&lt;/p&gt;
          259 
          260 &lt;p&gt;If you forget to unset &lt;code&gt;ARCH&lt;/code&gt; the Linux build system will complain like:&lt;/p&gt;
          261 
          262 &lt;pre&gt;
          263 Makefile:583: arch/amd64/Makefile: No such file or directory
          264 make: *** No rule to make target &#039;arch/amd64/Makefile&#039;.  Stop.
          265 &lt;/pre&gt;
          266 
          267 &lt;p&gt;You can test the new magic by re-emerging the latest kernel, e.g. currently
          268 &lt;code&gt;emerge =sys-kernel/gentoo-sources-5.4.80-r1&lt;/code&gt;:&lt;/p&gt;
          269 
          270 &lt;p&gt;&lt;!-- s9ymdb:673 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;975&quot; height=&quot;1064&quot;  src=&quot;https://daniel-lange.com/uploads/entries/gentoo_kernel_compile_in_emerge.png&quot; title=&quot;Gentoo emerge with embedded kernel compile&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
          271  
          272     </content:encoded>
          273 
          274     <pubDate>Thu, 28 Jan 2021 10:45:00 +0100</pubDate>
          275     <guid isPermaLink="false">https://daniel-lange.com/archives/169-guid.html</guid>
          276     <category>emerge</category>
          277 <category>kernel</category>
          278 <category>postinst</category>
          279 
          280 </item>
          281 <item>
          282     <title>Installing System Rescue (CD) to a flash drive</title>
          283     <link>https://daniel-lange.com/archives/168-Installing-System-Rescue-CD-to-a-flash-drive.html</link>
          284             <category>Linux</category>
          285     
          286     <comments>https://daniel-lange.com/archives/168-Installing-System-Rescue-CD-to-a-flash-drive.html#comments</comments>
          287     <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=168</wfw:comment>
          288 
          289     <slash:comments>0</slash:comments>
          290     <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=168</wfw:commentRss>
          291     
          292 
          293     <author>nospam@example.com (Daniel Lange)</author>
          294     <content:encoded>
          295     &lt;p&gt;&lt;a href=&quot;https://www.system-rescue.org/&quot;&gt;System Rescue&lt;/a&gt;, the project formerly known as &lt;a href=&quot;https://en.wikipedia.org/wiki/SystemRescue&quot;&gt;System Rescue CD&lt;/a&gt;, has moved from being based on Gentoo to being built on Arch Linux packages.&lt;/p&gt;
          296 
          297 &lt;p&gt;With this their ISO layout changed substantially so when updating my trusty recue USB flash drive, I could not just update the kernel, initrd and the root filesystem image as I had typically done every other year before.&lt;/p&gt;
          298 
          299 &lt;p&gt;The &lt;a href=&quot;https://www.system-rescue.org/Installing-SystemRescue-on-a-USB-memory-stick/&quot;&gt;&quot;Installing on a USB memory stick&quot;&lt;/a&gt; documentation is good for Windows (use &lt;a href=&quot;https://rufus.ie/&quot;&gt;Rufus&lt;/a&gt;, it&#039;s nice) but rather useless for Linux. They recommend a &lt;code&gt;dd&lt;/code&gt; or the fancy graphical version of that, called &lt;code&gt;usbimager&lt;/code&gt;.&lt;/p&gt;
          300 
          301 &lt;p&gt;I much prefer to have a flash drive that I can write to over an image of a CD (ISO) written 1:1 onto the flash media.&lt;/p&gt;
          302 
          303 &lt;p&gt;The basic idea is to use the bulk of the System Rescue ISO contents but amend these with your own grub and syslinux so they work as intended over the supplied ones that are bound to the ISO layout a bit too much.&lt;/p&gt;
          304 
          305 &lt;p&gt;I did this on Debian Buster but with some adjustments to paths and what packages to install, any recent Linux distribution should do:&lt;/p&gt;
          306  &lt;a class=&quot;block_level&quot; href=&quot;https://daniel-lange.com/archives/168-Installing-System-Rescue-CD-to-a-flash-drive.html#extended&quot;&gt;Continue reading &quot;Installing System Rescue (CD) to a flash drive&quot;&lt;/a&gt;
          307     </content:encoded>
          308 
          309     <pubDate>Wed, 27 Jan 2021 13:47:00 +0100</pubDate>
          310     <guid isPermaLink="false">https://daniel-lange.com/archives/168-guid.html</guid>
          311     <category>archlinux</category>
          312 <category>boot</category>
          313 <category>flash</category>
          314 <category>gentoo</category>
          315 <category>iso</category>
          316 <category>sysconfig</category>
          317 
          318 </item>
          319 <item>
          320     <title>No CCC Congress this year but rC3 online</title>
          321     <link>https://daniel-lange.com/archives/167-No-CCC-Congress-this-year-but-rC3-online.html</link>
          322             <category>Other</category>
          323     
          324     <comments>https://daniel-lange.com/archives/167-No-CCC-Congress-this-year-but-rC3-online.html#comments</comments>
          325     <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=167</wfw:comment>
          326 
          327     <slash:comments>0</slash:comments>
          328     <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=167</wfw:commentRss>
          329     
          330 
          331     <author>nospam@example.com (Daniel Lange)</author>
          332     <content:encoded>
          333     &lt;p&gt;The virtual version of the annual CCC Congress is underway and feels like a huge playground. Things are bumpy but the participants are still having fun. Of course, we have IRC as a safe heaven. That always works.&lt;/p&gt;
          334 
          335 &lt;p&gt;The virtual world (which is the only thing the sold out tickets are needed for) is really fun. It feels like debugging a DOS game in the 80/90s. Not much works but it is engaging enough to keep poking at things.&lt;/p&gt;
          336 
          337 &lt;p&gt;&lt;!-- s9ymdb:669 --&gt;&lt;img class=&quot;serendipity_image_left&quot; width=&quot;2068&quot; height=&quot;1054&quot;  src=&quot;https://daniel-lange.com/uploads/entries/rc3_world.png&quot;  alt=&quot;&quot;&gt;&lt;/p&gt;
          338 
          339 &lt;p&gt;The data formats are 2020 though, the main &lt;a href=&quot;https://lobby.maps.at.rc3.world/main.json&quot;&gt;&quot;lobby map&quot;&lt;/a&gt; is a 3 MB json file:&lt;/p&gt;
          340 
          341 &lt;pre&gt;
          342 { &quot;compressionlevel&quot;:-1,
          343  &quot;editorsettings&quot;:
          344     {
          345      &quot;export&quot;:
          346         {
          347          &quot;format&quot;:&quot;json&quot;,
          348          &quot;target&quot;:&quot;main.json&quot;
          349         }
          350     },
          351  &quot;height&quot;:80,
          352  &quot;infinite&quot;:false,
          353  &quot;layers&quot;:[
          354         {
          355          &quot;data&quot;:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 9090, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
          356          &quot;height&quot;:80,
          357          &quot;id&quot;:2,
          358          &quot;name&quot;:&quot;start&quot;,
          359          &quot;opacity&quot;:1,
          360          &quot;type&quot;:&quot;tilelayer&quot;,
          361          &quot;visible&quot;:true,
          362          &quot;width&quot;:80,
          363          &quot;x&quot;:0,
          364          &quot;y&quot;:0
          365         }, 
          366 ...
          367 &lt;/pre&gt;
          368 
          369 &lt;p&gt;People that hand-optimized &lt;a href=&quot;https://en.wikipedia.org/wiki/Run-length_encoding&quot;&gt;RLEs&lt;/a&gt; to fit games on &lt;a href=&quot;https://en.wikipedia.org/wiki/Floppy_disk&quot; title=&quot;This link is a courtesy to those born this millennium...&quot;&gt;floppies&lt;/a&gt; cry a little.&lt;/p&gt;
          370 
          371 &lt;p&gt;The streams are free (as in public), so please check &lt;a href=&quot;https://streaming.media.ccc.de/&quot;&gt;https://streaming.media.ccc.de/&lt;/a&gt; and the schedule at &lt;a href=&quot;https://fahrplan.events.ccc.de/rc3/2020/Fahrplan/&quot;&gt;https://fahrplan.events.ccc.de/rc3/2020/Fahrplan/&lt;/a&gt; for some great content to watch live or add to your play list.&lt;/p&gt;
          372  
          373     </content:encoded>
          374 
          375     <pubDate>Mon, 28 Dec 2020 16:30:00 +0100</pubDate>
          376     <guid isPermaLink="false">https://daniel-lange.com/archives/167-guid.html</guid>
          377     <category>conference</category>
          378 <category>json</category>
          379 <category>retro</category>
          380 <category>video</category>
          381 <category>web</category>
          382 
          383 </item>
          384 <item>
          385     <title>No dog food today - the Linux Foundation annual report</title>
          386     <link>https://daniel-lange.com/archives/166-No-dog-food-today-the-Linux-Foundation-annual-report.html</link>
          387             <category>Strategy</category>
          388     
          389     <comments>https://daniel-lange.com/archives/166-No-dog-food-today-the-Linux-Foundation-annual-report.html#comments</comments>
          390     <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=166</wfw:comment>
          391 
          392     <slash:comments>5</slash:comments>
          393     <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=166</wfw:commentRss>
          394     
          395 
          396     <author>nospam@example.com (Daniel Lange)</author>
          397     <content:encoded>
          398     &lt;p&gt;The Linux Foundation has published its &lt;a href=&quot;https://www.linuxfoundation.org/wp-content/uploads/2020/11/2020-Linux-Foundation-Annual-Report_113020.pdf&quot;&gt;annual report&lt;/a&gt; today. LWN &lt;a href=&quot;https://lwn.net/Articles/838871&quot;&gt;calls it glossy&lt;/a&gt; and yeah, boy, it is shiny.&lt;/p&gt;
          399 
          400 &lt;p&gt;So shiny that people that work in the publishing industry immediately see this has been produced with the Adobe toolchain which - unfortunately - is one of the big suites of software not yet available for Linux.&lt;/p&gt;
          401 
          402 &lt;p&gt;Checking the PDF file metadata reveals the keywords &quot;open source, open standards, open hardware, open data&quot;. That is what the Linux Foundation is about. Good stuff.&lt;/p&gt;
          403 
          404 &lt;p&gt;&lt;!-- s9ymdb:667 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;552&quot; height=&quot;676&quot;  src=&quot;https://daniel-lange.com/uploads/entries/Linux-Foundation-Annual-Report-2020-cover.jpg&quot; title=&quot;Mouseovers are for xkcd!&quot; alt=&quot;Linux Foundation annual report 2020 cover&quot;&gt;&lt;/p&gt;
          405 
          406 &lt;p&gt;The PDF producer meta data for the annual report PDF has been set to &quot;Linux kernel 0.12.1 for Workgroups&quot; and the PDF creator meta data element to &quot;Sharp Zaurus XR-5000 (Maemo5) Edition&quot;. Somebody thought to better hide the real data and had some tongue-in-cheek ideas. Kudos.&lt;/p&gt;
          407 
          408 &lt;p&gt;But nicer would have been to use Open Source software to produce the report, not?&lt;/p&gt;
          409 
          410 &lt;p&gt;Running &lt;code&gt;strings 2020-Linux-Foundation-Annual-Report_113020.pdf | grep Adobe | wc -l&lt;/code&gt; gives us 1229 lines and confirms the suspicion of the toolchain.&lt;/p&gt;
          411 
          412 &lt;p&gt;A stale &lt;code&gt;/Title (Annual Report 2020) /Producer (macOS Version 10.15.7 \(Build 19H15\) Quartz PDFContext)&lt;/code&gt; has been forgotten in the document to tell us about the platform.&lt;/p&gt;
          413 
          414 &lt;p&gt;So, ladies and gentlemen, the Linux Foundation 2020 annual report has been produced on a Mac.&lt;/p&gt;
          415 
          416 &lt;p&gt;Running Adobe Creative Cloud on MacOS Catalina 10.15.7.&lt;/p&gt;
          417 
          418 &lt;p&gt;Which is proprietary software. Its kernel (and some userland pieces) are based on BSD. Not Linux.&lt;/p&gt;
          419 
          420 &lt;hr /&gt;
          421 
          422 &lt;p&gt;The image on the front page also struck me as a bit odd ... using a ballpoint pen on the laptop screen?&lt;/p&gt;
          423 
          424 &lt;p&gt;Unbranded laptop.
          425 Unbranded cup in the foreground.&lt;/p&gt;
          426 
          427 &lt;p&gt;Kid in the background &lt;em&gt;not&lt;/em&gt; paying attention to his tablet.&lt;/p&gt;
          428 
          429 &lt;p&gt;All of that cries stock image so loud it hurts.&lt;/p&gt;
          430 
          431 &lt;p&gt;Google currently finds ~560 uses of the picture and any &lt;a href=&quot;https://www.shutterstock.com/support/article/Do-I-need-to-credit-Shutterstock-the-artist-when-I-use-Images-or-Footage&quot;&gt;editorial use&lt;/a&gt; nicely tells us that it is &amp;copy; &lt;a href=&quot;https://www.shutterstock.com/de/g/draganagordic&quot;&gt;Dragana Gordic / Shutterstock&lt;/a&gt;.&lt;/p&gt;
          432 
          433 &lt;p&gt;The image is &quot;Smiling mom working at home with her child on the sofa while writing an email. Young woman working from home, while in quarantine isolation during the Covid-19 health crisis&quot;.&lt;/p&gt;
          434 
          435 &lt;p&gt;See the &lt;a href=&quot;https://www.dailymail.co.uk/news/article-8683629/Staff-working-home-nearly-extra-hour-day-research-shows-send-emails.html&quot;&gt;Daily Mail&lt;/a&gt; for a wonderful example of the working mum in context. I hope, if her laptop had been powered on, it would have run Linux. I mean, what else would still run on an old white MacBook with an Intel &quot;Core 2 Duo&quot; processor from 2008?&lt;/p&gt;
          436 
          437 &lt;p&gt;&lt;!-- s9ymdb:668 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;504&quot; height=&quot;742&quot;  src=&quot;https://daniel-lange.com/uploads/entries/DailyMail-screenshot-stock-image.png&quot; title=&quot;O.k., here you go: Shiny, too!&quot; alt=&quot;Daily Mail screenshot of the same stock image used&quot;&gt;&lt;/p&gt;
          438  &lt;a class=&quot;block_level&quot; href=&quot;https://daniel-lange.com/archives/166-No-dog-food-today-the-Linux-Foundation-annual-report.html#extended&quot;&gt;Continue reading &quot;No dog food today - the Linux Foundation annual report&quot;&lt;/a&gt;
          439     </content:encoded>
          440 
          441     <pubDate>Thu, 03 Dec 2020 23:18:00 +0100</pubDate>
          442     <guid isPermaLink="false">https://daniel-lange.com/archives/166-guid.html</guid>
          443     <category>bsd</category>
          444 <category>dogfood</category>
          445 <category>dtp</category>
          446 <category>linux</category>
          447 <category>mac</category>
          448 <category>macos</category>
          449 
          450 </item>
          451 <item>
          452     <title>Git shared hosting quirk</title>
          453     <link>https://daniel-lange.com/archives/165-Git-shared-hosting-quirk.html</link>
          454             <category>IT</category>
          455     
          456     <comments>https://daniel-lange.com/archives/165-Git-shared-hosting-quirk.html#comments</comments>
          457     <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=165</wfw:comment>
          458 
          459     <slash:comments>0</slash:comments>
          460     <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=165</wfw:commentRss>
          461     
          462 
          463     <author>nospam@example.com (Daniel Lange)</author>
          464     <content:encoded>
          465     &lt;p&gt;Show &lt;a href=&quot;https://github.com/torvalds/linux/blob/b4061a10fc29010a610ff2b5b20160d7335e69bf/drivers/hid/hid-samsung.c#L113-L118&quot;&gt;https://github.com/torvalds/linux/blob/b4061a10fc29010a610ff2b5b20160d7335e69bf/drivers/hid/hid-samsung.c#L113-L118&lt;/a&gt; to a friend.&lt;/p&gt;
          466 
          467 &lt;p&gt;Oops &#039;eh? Yep, Linux has been backdoored.&lt;/p&gt;
          468 
          469 &lt;p&gt;Well, or not.&lt;/p&gt;
          470 
          471 &lt;p&gt;&lt;a href=&quot;https://mricon.com/&quot;&gt;Konstantin Ryabitsev&lt;/a&gt; explains it nicely in a &lt;a href=&quot;https://lists.zx2c4.com/pipermail/cgit/2020-October/004571.html&quot;&gt;cgit mailing list email&lt;/a&gt;:&lt;/p&gt;
          472 
          473 &lt;blockquote&gt;
          474 It is common for git hosting environments to configure all forks of the
          475 same repo to use an &quot;object storage&quot; repository. For example, this is
          476 what allows git.kernel.org&#039;s 600+ forks of linux.git to take up only
          477 10GB on disk as opposed to 800GB.
          478 
          479 One of the side-effects of this setup is that any object in the shared
          480 repository can be accessed from any of the forks, which periodically
          481 confuses people into believing that something terrible has happened.
          482 &lt;/blockquote&gt;
          483 
          484 &lt;p&gt;The hack was &lt;a href=&quot;https://github.com/torvalds/linux/commit/b4061a10fc29010a610ff2b5b20160d7335e69bf#diff-b2b8b8422630002a41cf5901247f9a6af2cc8d000fc792ef7aae9ea1f393f8b4&quot;&gt;discussed on Github in Dec 2018&lt;/a&gt; 
          485 when it was discovered. I forgot about it again but Konstantin&#039;s mail brought the memory back and I think it deserves more attention.&lt;/p&gt;
          486 
          487 &lt;p&gt;I&#039;m sure putting some illegal content into a fork and sending a made up &quot;blob&quot; URL to law enforcement would go quite far.
          488 Good luck explaining the issue. &lt;i&gt;&quot;Yes this is my repo&quot;&lt;/i&gt; but &lt;i&gt;&quot;no, no that&#039;s not my data&quot;&lt;/i&gt; ... &lt;i&gt;&quot;yes, it &lt;u&gt;is&lt;/u&gt; my repo but not my data&quot;&lt;/i&gt; ... &lt;i&gt;&quot;no we don&#039;t want that data either, really&quot;&lt;/i&gt; ... &lt;i&gt;&quot;but, but there is nothing we can do, we host on github...&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&quot;&lt;/i&gt;.&lt;/p&gt;
          489 
          490 &lt;h3&gt;Update&lt;/h3&gt;
          491 
          492 &lt;p&gt;05.11.20 Nate Friedman (CEO of Github) &lt;a href=&quot;https://news.ycombinator.com/item?id=24995121&quot;&gt;promises&lt;/a&gt;&lt;/p&gt;
          493 
          494 &lt;blockquote&gt;[..] we are going to make it much more obvious when you&#039;re viewing an orphaned commit.&lt;/blockquote&gt;
          495 
          496 &lt;p&gt;For context: The source code of Github (the product) had been leaked as a &lt;a href=&quot;https://web.archive.org/web/20201104050026/https://github.com/github/dmca/tree/565ece486c7c1652754d7b6d2b5ed9cb4097f9d5&quot;&gt;commit to Github&#039;s own DMCA repository&lt;/a&gt;. The repository has turned into a &lt;a href=&quot;https://github.com/github/dmca/pull/8148&quot;&gt;playground&lt;/a&gt; since Github took down the hosting for &lt;code&gt;youtube-dl&lt;/code&gt; as the result of a &lt;a href=&quot;https://github.com/github/dmca/blob/18429823a5404ff7d9f6f0418588d8a48b81f671/2020/10/2020-10-23-RIAA.md&quot;&gt;DMCA complaint&lt;/a&gt;.&lt;/p&gt;
          497 
          498 &lt;p&gt;14.11.20 Seems Github now adds a warning to commits that are not in a reachable branch
          499 &lt;!-- s9ymdb:665 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;789&quot; height=&quot;85&quot;  src=&quot;https://daniel-lange.com/uploads/entries/201114_Github_commit_warning_message.png&quot;  alt=&quot;Github commit warning message&quot; style=&quot;border:0px; display: inline;&quot;&gt;&lt;/p&gt;
          500 
          501 &lt;div class=&quot;footnotes&quot;&gt;
          502 &lt;hr /&gt;
          503 &lt;ol&gt;
          504 
          505 &lt;li id=&quot;fn:1&quot;&gt;
          506 &lt;p&gt;Actually there is something you can do. Making a repo private takes it out of the shared &quot;object storage&quot;. You can make it public again afterwards. Seems to work at least for now.&amp;#160;&lt;a href=&quot;#fnref:1&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
          507 &lt;/li&gt;
          508 
          509 &lt;/ol&gt;
          510 &lt;/div&gt;
          511  
          512     </content:encoded>
          513 
          514     <pubDate>Wed, 28 Oct 2020 22:30:00 +0100</pubDate>
          515     <guid isPermaLink="false">https://daniel-lange.com/archives/165-guid.html</guid>
          516     <category>git</category>
          517 <category>github</category>
          518 <category>hacking</category>
          519 <category>linux</category>
          520 <category>updated</category>
          521 
          522 </item>
          523 <item>
          524     <title>Getting rid of the Google cookie consent popup</title>
          525     <link>https://daniel-lange.com/archives/164-Getting-rid-of-the-Google-cookie-consent-popup.html</link>
          526             <category>Internet</category>
          527     
          528     <comments>https://daniel-lange.com/archives/164-Getting-rid-of-the-Google-cookie-consent-popup.html#comments</comments>
          529     <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=164</wfw:comment>
          530 
          531     <slash:comments>38</slash:comments>
          532     <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=164</wfw:commentRss>
          533     
          534 
          535     <author>nospam@example.com (Daniel Lange)</author>
          536     <content:encoded>
          537     &lt;p&gt;If you clear your browser cookies regularly (as you should do), Google will annoy you with a full screen cookie consent overlay these days. And - of course - there is no &quot;no tracking consent, technically required cookies only&quot; button. You may log in to Google to set your preference. Yeah, I&#039;m sure this is totally following the intent of the &lt;a href=&quot;https://eur-lex.europa.eu/eli/dir/2009/136/2009-12-19&quot;&gt;EU Directive 2009/136/EC&lt;/a&gt; (the &quot;cookie law&quot;).&lt;/p&gt;
          538 
          539 &lt;p&gt;&lt;!-- s9ymdb:664 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;1332&quot; height=&quot;1066&quot;  src=&quot;https://daniel-lange.com/uploads/entries/200918_Google_cookie_consent_screen.png&quot;  alt=&quot;Google cookie consent pop-up&quot;&gt;&lt;/p&gt;
          540 
          541 &lt;p&gt;Unfortunately none of the big &quot;anti-annoyances&quot; filter lists seem to have picked that one up yet but the friendly folks from the &lt;a href=&quot;https://www.computerbase.de/forum/threads/google-nervt-bevor-sie-fortfahren.1968809/&quot;&gt;Computerbase Forum&lt;/a&gt; [German] to the rescue. User &quot;Sepp Depp&quot; has created the base of the following filter set that &lt;abbr title=&quot;Works For Me&quot;&gt;WFM&lt;/abbr&gt; (updated since):&lt;/p&gt;
          542 
          543 &lt;p&gt;Add this to your &lt;a href=&quot;https://github.com/gorhill/uBlock&quot;&gt;uBlock Origin&lt;/a&gt; &quot;My filters&quot; tab:&lt;/p&gt;
          544 
          545 &lt;pre&gt;
          546 ! Google - remove cookie-consent-popup and restore scroll functionality
          547 ! Updated 24.04.2021
          548 google.*##.wwYr3.aID8W.bErdLd
          549 google.*##.aID8W.m114nf.t7xA6
          550 google.*##.jw8mI
          551 google.*##.vUd4jb
          552 google.*##div[jsname][jsaction^=&quot;dg_close&quot;]
          553 google.*##html:style(overflow: visible scroll !important;)
          554 google.*##.widget-consent-fullscreen.widget-consent
          555 
          556 ! And for Youtube
          557 ! Updated 13.04.2021
          558 www.youtube.com###dialog
          559 www.youtube.com##ytd-popup-container.ytd-app.style-scope
          560 www.youtube.com##tp-yt-iron-overlay-backdrop
          561 &lt;/pre&gt;
          562  
          563     </content:encoded>
          564 
          565     <pubDate>Fri, 18 Sep 2020 11:15:00 +0200</pubDate>
          566     <guid isPermaLink="false">https://daniel-lange.com/archives/164-guid.html</guid>
          567     <category>annoying</category>
          568 <category>consent</category>
          569 <category>cookies</category>
          570 <category>google</category>
          571 <category>policy</category>
          572 <category>popup</category>
          573 <category>regulation</category>
          574 <category>updated</category>
          575 
          576 </item>
          577 <item>
          578     <title>Upgrading Limesurvey with (near) zero downtime</title>
          579     <link>https://daniel-lange.com/archives/162-Upgrading-Limesurvey-with-near-zero-downtime.html</link>
          580             <category>Open Source</category>
          581     
          582     <comments>https://daniel-lange.com/archives/162-Upgrading-Limesurvey-with-near-zero-downtime.html#comments</comments>
          583     <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=162</wfw:comment>
          584 
          585     <slash:comments>0</slash:comments>
          586     <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=162</wfw:commentRss>
          587     
          588 
          589     <author>nospam@example.com (Daniel Lange)</author>
          590     <content:encoded>
          591     &lt;p&gt;Limesurvey is an online survey tool. It is very powerful and commonly used in academic environments because it is Free Software (GPLv2+), allows for local installations protecting the data of participants and allowing to comply with data protection regulations. This also means there are typically no load-balanced multi-server szenarios with HA databases. But simple VMs where Limesurvey runs and needs upgrading in place.&lt;/p&gt;
          592 
          593 &lt;p&gt;There&#039;s an LTS branch (currently 3.x) and a stable branch (currently 4.x). There&#039;s also a 2.06 LTS branch that is restricted to paying customers. The main developers behind Limesurvey offer many services from template design to custom development to support to hosting (&quot;Cloud&quot;, &quot;Limesurvey Pro&quot;). Unfortunately they also charge for easy updates called &quot;ComfortUpdate&quot; (currently 39€ for three months) and the manual process is made a bit cumbersome to make the &quot;ComfortUpdate&quot; offer more attractive.&lt;/p&gt;
          594 
          595 &lt;p&gt;Due to Limesurvey being an old code base and UI elements not being clearly separated, most serious use cases will end up patching files and symlinking logos around template directories. That conflicts a bit with the opaque &quot;ComfortUpdate&quot; process where you push a button and then magic happens. Or you have downtime and a recovery case while surveys are running.&lt;/p&gt;
          596 
          597 &lt;p&gt;If you do not intend to use the &quot;ComfortUpdate&quot; offering, you can prevent Limesurvey from connecting to &lt;code&gt;http://comfortupdate.limesurvey.org&lt;/code&gt; daily by adding the &lt;code&gt;updatable&lt;/code&gt; stanza as in &lt;strong&gt;line 14&lt;/strong&gt; to &lt;code&gt;limesurvey/application/config/config.php&lt;/code&gt;:&lt;/p&gt;
          598 
          599 &lt;div class=&quot;php geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;&quot;&gt;&lt;span style=&quot;color: #b1b100;&quot;&gt;return&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;&quot;&gt;&amp;#160;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;...&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;// Use the following config variable to set modified optional settings copied from config-defaults.php&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;config&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;// debug: Set this to 1 if you are looking for errors. If you still get no errors after enabling this&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;// then please check your error-logs - either in your hosting provider admin panel or in some /logs directory&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;// on your webspace.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;// LimeSurvey developers: Set this to 2 to additionally display STRICT PHP error messages and get full access to standard templates&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;debug&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;debugsql&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;// Set this to 1 to enanble sql logging, only active when debug = 2&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;// Mysql database engine (INNODB|MYISAM):&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;mysqlEngine&#039;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;MYISAM&#039;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;&quot;&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;// Update default LimeSurvey config here&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;updatable&#039;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #009900; font-weight: bold;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;&quot;&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
          600 
          601 &lt;p&gt;The &lt;strong&gt;comma&lt;/strong&gt; on &lt;strong&gt;line 13&lt;/strong&gt; is placed like that in the current default limesurvey &lt;code&gt;config.php&lt;/code&gt;, don&#039;t let yourself get confused.
          602 Every item in a php array must end with a comma. It can be on the next line.&lt;/p&gt;
          603 
          604 &lt;p&gt;The basic principle of low risk, near-zero downtime, in-place upgrades is:&lt;/p&gt;
          605 
          606 &lt;ol&gt;
          607 &lt;li&gt;Create a diff between the current release and the target release&lt;/li&gt;
          608 &lt;li&gt;Inspect the diff&lt;/li&gt;
          609 &lt;li&gt;Make backups of the application webroot&lt;/li&gt;
          610 &lt;li&gt;Patch a copy of the application in-place&lt;/li&gt;
          611 &lt;li&gt;(optional) stop the web server&lt;/li&gt;
          612 &lt;li&gt;Make a backup of the production database&lt;/li&gt;
          613 &lt;li&gt;Move the patched application to the production webroot&lt;/li&gt;
          614 &lt;li&gt;(if 5) Start the webserver&lt;/li&gt;
          615 &lt;li&gt;Upgrade the database (if needed)&lt;/li&gt;
          616 &lt;li&gt;Check the application&lt;/li&gt;
          617 &lt;/ol&gt;
          618 
          619 &lt;p&gt;So, in detail:&lt;/p&gt;
          620  &lt;a class=&quot;block_level&quot; href=&quot;https://daniel-lange.com/archives/162-Upgrading-Limesurvey-with-near-zero-downtime.html#extended&quot;&gt;Continue reading &quot;Upgrading Limesurvey with (near) zero downtime&quot;&lt;/a&gt;
          621     </content:encoded>
          622 
          623     <pubDate>Sun, 21 Jun 2020 21:38:00 +0200</pubDate>
          624     <guid isPermaLink="false">https://daniel-lange.com/archives/162-guid.html</guid>
          625     <category>apache</category>
          626 <category>diff</category>
          627 <category>limesurvey</category>
          628 <category>patch</category>
          629 <category>production</category>
          630 <category>update</category>
          631 <category>updated</category>
          632 <category>web</category>
          633 
          634 </item>
          635 <item>
          636     <title>I think we need more creativity in statistics</title>
          637     <link>https://daniel-lange.com/archives/161-I-think-we-need-more-creativity-in-statistics.html</link>
          638             <category>Fun</category>
          639     
          640     <comments>https://daniel-lange.com/archives/161-I-think-we-need-more-creativity-in-statistics.html#comments</comments>
          641     <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=161</wfw:comment>
          642 
          643     <slash:comments>0</slash:comments>
          644     <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=161</wfw:commentRss>
          645     
          646 
          647     <author>nospam@example.com (Daniel Lange)</author>
          648     <content:encoded>
          649     &lt;p&gt;&quot; &lt;em&gt;&#039;Boa constrictors swallow their prey whole, without chewing it. After that they are not able to move, and they sleep through the six months that they need for digestion.&#039;&lt;/em&gt;&lt;/p&gt;
          650 
          651 &lt;p&gt;I pondered deeply, then, over the adventures of the jungle. And after some work with a colored pencil I succeeded in making my first drawing.&lt;/p&gt;
          652 
          653 &lt;p&gt;My Drawing Number One.&lt;/p&gt;
          654 
          655 &lt;p&gt;It looked something like this:&lt;/p&gt;
          656 
          657 &lt;p&gt;&lt;!-- s9ymdb:660 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;635&quot; height=&quot;257&quot;  src=&quot;https://daniel-lange.com/uploads/entries/Antoine_de_Saint_Exupery_Boa_1.png&quot;  alt=&quot;Boa Constrictor by Antoine de Saint Exupéry&quot;&gt;&lt;/p&gt;
          658 
          659 &lt;p&gt;I showed my masterpiece to the grown-ups, and asked them whether the drawing frightened them.&lt;/p&gt;
          660 
          661 &lt;p&gt;But they answered: &lt;em&gt;&#039;Frighten? Why should any one be frightened by a hat?&#039;&lt;/em&gt;&lt;/p&gt;
          662 
          663 &lt;p&gt;My drawing was not a picture of a hat. It was a picture of a boa constrictor digesting an elephant. But since the grown-ups were not able to understand it, I made another drawing: I drew the inside of a boa constrictor, so that the grown-ups could see it clearly. They always need to have things explained.&lt;/p&gt;
          664 
          665 &lt;p&gt;My Drawing Number Two looked like this:&lt;/p&gt;
          666 
          667 &lt;p&gt;&lt;!-- s9ymdb:661 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;635&quot; height=&quot;223&quot;  src=&quot;https://daniel-lange.com/uploads/entries/Antoine_de_Saint_Exupery_Boa_2.png&quot;  alt=&quot;Boa Constrictor in sectional drawing by Antoine de Saint Exupéry&quot;&gt;&lt;/p&gt;
          668 
          669 &lt;p&gt;The grown-ups&#039; response, this time, was to advise me to lay aside my drawings of boa constrictors, whether from the inside or the outside, and devote myself instead to geography, history, arithmetic, and grammar.&lt;/p&gt;
          670 
          671 &lt;p&gt;That is why, at the age of six, I gave up what might have been a magnificent career as a painter. I had been disheartened by the failure of my Drawing Number One and my Drawing Number Two.&lt;/p&gt;
          672 
          673 &lt;p&gt;Grown-ups never understand anything by themselves, and it is tiresome for children to be always and forever explaining things to them.&quot;&lt;/p&gt;
          674 
          675 &lt;p&gt;from &lt;em&gt;The Little Prince&lt;/em&gt; by &lt;em&gt;Antoine de Saint Exupéry&lt;/em&gt;&lt;/p&gt;
          676 
          677 &lt;p&gt;&amp;#160;&lt;/p&gt;
          678 
          679 &lt;p&gt;&lt;!-- s9ymdb:662 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;635&quot; height=&quot;354&quot;  src=&quot;https://daniel-lange.com/uploads/entries/Worldometers_Corona_cases_Germany.png&quot;  alt=&quot;Outcome of Cases (Recovery or Death) in Germany by Worldometers&quot;&gt;&lt;/p&gt;
          680 
          681 &lt;p&gt;from the &lt;em&gt;Corona Fun with Statistics department&lt;/em&gt; at &lt;em&gt;Worldometers&lt;/em&gt;
          682 (&lt;a href=&quot;https://www.worldometers.info/coronavirus/country/germany/&quot; title=&quot;Link to source page at Worldometers&quot;&gt;source&lt;/a&gt;, &lt;a href=&quot;https://web.archive.org/web/20200414082232/https://www.worldometers.info/coronavirus/country/germany/&quot; title=&quot;Archive.org capture of the Worldometers page at 14.04.2020&quot;&gt;archive.org link&lt;/a&gt;)&lt;/p&gt;
          683  
          684     </content:encoded>
          685 
          686     <pubDate>Tue, 14 Apr 2020 10:42:00 +0200</pubDate>
          687     <guid isPermaLink="false">https://daniel-lange.com/archives/161-guid.html</guid>
          688     <category>art</category>
          689 <category>fun</category>
          690 <category>literature</category>
          691 <category>math</category>
          692 <category>science</category>
          693 <category>statistics</category>
          694 
          695 </item>
          696 <item>
          697     <title>Fixing the Nextcloud menu to show more than eight application icons</title>
          698     <link>https://daniel-lange.com/archives/160-Fixing-the-Nextcloud-menu-to-show-more-than-eight-application-icons.html</link>
          699             <category>Internet</category>
          700     
          701     <comments>https://daniel-lange.com/archives/160-Fixing-the-Nextcloud-menu-to-show-more-than-eight-application-icons.html#comments</comments>
          702     <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=160</wfw:comment>
          703 
          704     <slash:comments>5</slash:comments>
          705     <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=160</wfw:commentRss>
          706     
          707 
          708     <author>nospam@example.com (Daniel Lange)</author>
          709     <content:encoded>
          710     &lt;p&gt;I have been late to adopt an on-premise cloud solution as the security of Owncloud a few years ago wasn&#039;t so stellar (cf. my comment from 2013 in &lt;a href=&quot;https://daniel-lange.com/archives/83-Encrypting-files-with-gpg-for-synchronization-across-the-Internet.html#fn:1&quot;&gt;Encryption files ... for synchronization across the Internet&lt;/a&gt;). But the follow-up product Nextcloud has matured quite nicely and we use it for collaboration both in the company and in FLOSS related work at multiple nonprofit organizations.&lt;/p&gt;
          711 
          712 &lt;p&gt;There is a very annoying &quot;feature&quot; in Nextcloud though that the designers think menu items for apps at the top need to be limited to eight or less to &lt;a href=&quot;https://github.com/nextcloud/server/issues/13079#issuecomment-486574596&quot;&gt;prevent information overload in the header&lt;/a&gt;. The whole item discussion is worth reading as it it an archetypical example of design prevalence vs. user choice.&lt;/p&gt;
          713 
          714 &lt;p&gt;And of course designers think they are right. That&#039;s a feature of the trade.&lt;br /&gt;
          715 And because they know better there is no user configurable option to extend that 8 items to may be 12 or so which would prevent the annoying overflow menu we are seeing with 10 applications in use:&lt;/p&gt;
          716 
          717 &lt;p&gt;&lt;!-- s9ymdb:658 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;631&quot; height=&quot;252&quot;  src=&quot;https://daniel-lange.com/uploads/entries/200313_Nextcloud_Menu_overflow_items.png&quot; title=&quot;Designers say you get overwhelmed if the additional items were not hidden in the three dot overflow menu...&quot; alt=&quot;Screenshot of stock Nextcloud menu&quot;&gt;&lt;/p&gt;
          718 
          719 &lt;p&gt;Luckily code can be changed and there are many comments floating around the Internet to change &lt;a href=&quot;https://help.nextcloud.com/search?expanded=true&amp;amp;q=minAppsDesktop&quot;&gt;&lt;code&gt;const minAppsDesktop = 8&lt;/code&gt;&lt;/a&gt;. In this case it is slightly complicated by the fact that the javascript code is distributed in compressed form (aka &quot;minified&quot;) as &lt;code&gt;core/js/dist/main.js&lt;/code&gt; and you probably don&#039;t want to build the whole beast locally to change one constant.&lt;/p&gt;
          720 
          721 &lt;p&gt;Basically&lt;/p&gt;
          722 
          723 &lt;div class=&quot;javascript geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;const&lt;/span&gt; breakpoint_mobile_width &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;1024&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;const&lt;/span&gt; resizeMenu &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;const&lt;/span&gt; appList &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;#appmenu li&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;const&lt;/span&gt; rightHeaderWidth &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;.header-right&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;outerWidth&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;const&lt;/span&gt; headerWidth &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;header&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;outerWidth&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;const&lt;/span&gt; usePercentualAppMenuLimit &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;0.33&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;const&lt;/span&gt; minAppsDesktop &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;8&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; let availableWidth &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; headerWidth &lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;#nextcloud&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;outerWidth&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;rightHeaderWidth &lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;210&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;?&lt;/span&gt; rightHeaderWidth &lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;210&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;const&lt;/span&gt; isMobile &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;window&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt; breakpoint_mobile_width&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;!&lt;/span&gt;isMobile&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; availableWidth &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; availableWidth &lt;span style=&quot;color: #339933;&quot;&gt;*&lt;/span&gt; usePercentualAppMenuLimit&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; let appCount &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;&quot;&gt;Math&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;floor&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;availableWidth &lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;appList&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;isMobile &lt;span style=&quot;color: #339933;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; appCount &lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt; minAppsDesktop&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; appCount &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; minAppsDesktop&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;!&lt;/span&gt;isMobile &lt;span style=&quot;color: #339933;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; appCount &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt; minAppsDesktop&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; appCount &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; minAppsDesktop&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// show at least 2 apps in the popover&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;appList.&lt;span style=&quot;color: #660066;&quot;&gt;length&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt; appCount &lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; appCount&lt;span style=&quot;color: #339933;&quot;&gt;--&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160; &amp;#160; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;#more-apps a&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;removeClass&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;active&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; let lastShownApp&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;let k &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt; k &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt; appList.&lt;span style=&quot;color: #660066;&quot;&gt;length&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt; k&lt;span style=&quot;color: #339933;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;const&lt;/span&gt; name &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;appList&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;k&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;id&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;k &lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt; appCount&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;appList&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;k&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;removeClass&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;hidden&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;#apps li[data-id=&#039;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; name &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;]&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;addClass&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;in-header&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; lastShownApp &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; appList&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;k&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;appList&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;k&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;addClass&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;hidden&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;#apps li[data-id=&#039;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; name &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;]&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;removeClass&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;in-header&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// move active app to last position if it is active&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;appCount &lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;appList&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;k&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;children&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;a&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;hasClass&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;active&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;lastShownApp&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;addClass&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;hidden&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;#apps li[data-id=&#039;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;lastShownApp&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;id&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;]&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;removeClass&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;in-header&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;appList&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;k&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;removeClass&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;hidden&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;#apps li[data-id=&#039;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; name &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;]&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;addClass&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;in-header&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// show/hide more apps icon&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;$&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;#apps li:not(.in-header)&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;length&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;===&lt;/span&gt; &lt;span style=&quot;color: #CC0000;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;#more-apps&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;hide&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;#navigation&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;hide&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&#039;#more-apps&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;show&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
          724 
          725 &lt;p&gt;gets compressed during build time to become part of one 15,000+ character line. The relevant portion reads:&lt;/p&gt;
          726 
          727 &lt;div class=&quot;javascript geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;var&lt;/span&gt; f&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;var&lt;/span&gt; e&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;#appmenu li&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;t&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;.header-right&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;outerWidth&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;n&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;header&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;outerWidth&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;#nextcloud&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;outerWidth&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;t&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;210&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;?&lt;/span&gt;t&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;210&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;i&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;window&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;1024&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;i&lt;span style=&quot;color: #339933;&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;n&lt;span style=&quot;color: #339933;&quot;&gt;*=&lt;/span&gt;.33&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;var&lt;/span&gt; r&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;o&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;&quot;&gt;Math&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;floor&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;n&lt;span style=&quot;color: #339933;&quot;&gt;/&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;e&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;i&lt;span style=&quot;color: #339933;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;o&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;o&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,!&lt;/span&gt;i&lt;span style=&quot;color: #339933;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;o&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;o&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;e.&lt;span style=&quot;color: #660066;&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;o&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;=&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;o&lt;span style=&quot;color: #339933;&quot;&gt;--,&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;#more-apps a&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;removeClass&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;active&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;var&lt;/span&gt; a&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;a&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;e.&lt;span style=&quot;color: #660066;&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;a&lt;span style=&quot;color: #339933;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;var&lt;/span&gt; l&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;e&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;a&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;id&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;a&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;o&lt;span style=&quot;color: #339933;&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;e&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;a&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;removeClass&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;hidden&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;#apps li[data-id=&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;l&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;]&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;addClass&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;in-header&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;r&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;e&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;a&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;e&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;a&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;addClass&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;hidden&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;#apps li[data-id=&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;l&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;]&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;removeClass&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;in-header&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;o&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;e&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;a&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;children&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;a&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;hasClass&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;active&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;r&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;addClass&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;hidden&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;#apps li[data-id=&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;r&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;id&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;]&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;removeClass&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;in-header&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;e&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;a&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;removeClass&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;hidden&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;#apps li[data-id=&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;l&lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;]&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;addClass&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;in-header&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #CC0000;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;===&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;#apps li:not(.in-header)&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;#more-apps&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;hide&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;#navigation&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;hide&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;s&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;#more-apps&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;show&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
          728 
          729 &lt;p&gt;Well, we can still patch that, can we?&lt;/p&gt;
          730  &lt;a class=&quot;block_level&quot; href=&quot;https://daniel-lange.com/archives/160-Fixing-the-Nextcloud-menu-to-show-more-than-eight-application-icons.html#extended&quot;&gt;Continue reading &quot;Fixing the Nextcloud menu to show more than eight application icons&quot;&lt;/a&gt;
          731     </content:encoded>
          732 
          733     <pubDate>Fri, 13 Mar 2020 17:00:00 +0100</pubDate>
          734     <guid isPermaLink="false">https://daniel-lange.com/archives/160-guid.html</guid>
          735     <category>badchoices</category>
          736 <category>design</category>
          737 <category>javascript</category>
          738 <category>nextcloud</category>
          739 <category>patch</category>
          740 <category>updated</category>
          741 
          742 </item>
          743 <item>
          744     <title>Cleaning a broken GnuPG (gpg) key</title>
          745     <link>https://daniel-lange.com/archives/159-Cleaning-a-broken-GnuPG-gpg-key.html</link>
          746             <category>IT</category>
          747     
          748     <comments>https://daniel-lange.com/archives/159-Cleaning-a-broken-GnuPG-gpg-key.html#comments</comments>
          749     <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=159</wfw:comment>
          750 
          751     <slash:comments>7</slash:comments>
          752     <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=159</wfw:commentRss>
          753     
          754 
          755     <author>nospam@example.com (Daniel Lange)</author>
          756     <content:encoded>
          757     &lt;p&gt;I&#039;ve long said that the main tools in the Open Source security space, OpenSSL and GnuPG (gpg), &lt;a href=&quot;https://daniel-lange.com/archives/105-Security-is-hard,-open-source-security-unnecessarily-harder.html&quot;&gt;are broken&lt;/a&gt; and only a complete re-write will solve this. And that is still pending as nobody came forward with the funding. It&#039;s not a sexy topic, so it has to get really bad before it&#039;ll get better.&lt;/p&gt;
          758 
          759 &lt;p&gt;Gpg has a UI that is &lt;a href=&quot;https://daniel-lange.com/archives/83-Encrypting-files-with-gpg-for-synchronization-across-the-Internet.html&quot;&gt;close to useless&lt;/a&gt;.
          760 That won&#039;t substantially change with more bolted-on improvements.&lt;/p&gt;
          761 
          762 &lt;p&gt;Now Robert J. Hansen and Daniel Kahn Gillmor had somebody add ~50k signatures (read &lt;a href=&quot;https://gist.github.com/rjhansen/67ab921ffb4084c865b3618d6955275f&quot; title=&quot;Robert J. Hansen: SKS Keyserver Network Under Attack&quot;&gt;1&lt;/a&gt;, &lt;a href=&quot;https://gist.github.com/rjhansen/f716c3ff4a7068b50f2d8896e54e4b7e&quot; title=&quot;Robert J. Hansen: SKS Keyserver Network Attack: Consequences&quot;&gt;2&lt;/a&gt;, &lt;a href=&quot;https://dkg.fifthhorseman.net/blog/openpgp-certificate-flooding.html&quot; title=&quot;Daniel Kahn Gillmor: OpenPGP Certificate Flooding&quot;&gt;3&lt;/a&gt;, &lt;a href=&quot;https://dkg.fifthhorseman.net/blog/community-impact-openpgp-cert-flooding.html&quot; title=&quot;Daniel Kahn Gillmor: Community Impact of OpenPGP Certificate Flooding&quot;&gt;4&lt;/a&gt; for the g{l}ory details) to their keys and - oops - they say that breaks gpg.&lt;/p&gt;
          763 
          764 &lt;p&gt;But does it?&lt;/p&gt;
          765 
          766 &lt;p&gt;I downloaded &lt;a href=&quot;https://sks-keyservers.net/pks/lookup?op=vindex&amp;amp;search=0xCC11BE7CBBED77B120F37B011DCBDC01B44427C7&quot;&gt;Robert J. Hansen&#039;s key off the SKS-Keyserver network&lt;/a&gt;.
          767 It&#039;s a nice 45MB file when de-ascii-armored (&lt;code&gt;gpg --dearmor broken_key.asc ; mv broken_key.asc.gpg broken_key.gpg&lt;/code&gt;).&lt;/p&gt;
          768 
          769 &lt;p&gt;Now a friendly:&lt;/p&gt;
          770 
          771 &lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;$ &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;usr&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;bin&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;time&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-v&lt;/span&gt; gpg &lt;span style=&quot;color: #660033;&quot;&gt;--no-default-keyring&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;--keyring&lt;/span&gt; .&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;broken_key.gpg &lt;span style=&quot;color: #660033;&quot;&gt;--batch&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;--quiet&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;--edit-key&lt;/span&gt; 0x1DCBDC01B44427C7 clean save quit&lt;br /&gt;&lt;br /&gt;pub &amp;#160;rsa3072&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;0x1DCBDC01B44427C7&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;erzeugt: &lt;span style=&quot;color: #000000;&quot;&gt;2015&lt;/span&gt;-07-&lt;span style=&quot;color: #000000;&quot;&gt;16&lt;/span&gt; &amp;#160;verfällt: niemals &amp;#160; &amp;#160; Nutzung: SC &amp;#160;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;Vertrauen: unbekannt &amp;#160; &amp;#160; Gültigkeit: unbekannt&lt;br /&gt;sub &amp;#160;ed25519&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;0xA83CAE94D3DC3873&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;erzeugt: &lt;span style=&quot;color: #000000;&quot;&gt;2017&lt;/span&gt;-04-05 &amp;#160;verfällt: niemals &amp;#160; &amp;#160; Nutzung: S &amp;#160; &lt;br /&gt;sub &amp;#160;cv25519&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;0xAA24CC81B8AED08B&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;erzeugt: &lt;span style=&quot;color: #000000;&quot;&gt;2017&lt;/span&gt;-04-05 &amp;#160;verfällt: niemals &amp;#160; &amp;#160; Nutzung: E &amp;#160; &lt;br /&gt;sub &amp;#160;rsa3072&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;0xDC0F82625FA6AADE&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;erzeugt: &lt;span style=&quot;color: #000000;&quot;&gt;2015&lt;/span&gt;-07-&lt;span style=&quot;color: #000000;&quot;&gt;16&lt;/span&gt; &amp;#160;verfällt: niemals &amp;#160; &amp;#160; Nutzung: E &amp;#160; &lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; unbekannt &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;. Robert J. Hansen &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;&lt;/span&gt;rjh&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;@&lt;/span&gt;sixdemonbag.org&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; unbekannt &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;#160;Robert J. Hansen &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;&lt;/span&gt;rob&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;@&lt;/span&gt;enigmail.net&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; unbekannt &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;#160;Robert J. Hansen &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;&lt;/span&gt;rob&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;@&lt;/span&gt;hansen.engineering&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;User-ID &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;Robert J. Hansen &amp;lt;rjh@sixdemonbag.org&amp;gt;&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;49705&lt;/span&gt; Signaturen entfernt&lt;br /&gt;User-ID &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;Robert J. Hansen &amp;lt;rob@enigmail.net&amp;gt;&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;49704&lt;/span&gt; Signaturen entfernt&lt;br /&gt;User-ID &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;Robert J. Hansen &amp;lt;rob@hansen.engineering&amp;gt;&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;49701&lt;/span&gt; Signaturen entfernt&lt;br /&gt;&lt;br /&gt;pub &amp;#160;rsa3072&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;0x1DCBDC01B44427C7&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;erzeugt: &lt;span style=&quot;color: #000000;&quot;&gt;2015&lt;/span&gt;-07-&lt;span style=&quot;color: #000000;&quot;&gt;16&lt;/span&gt; &amp;#160;verfällt: niemals &amp;#160; &amp;#160; Nutzung: SC &amp;#160;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;Vertrauen: unbekannt &amp;#160; &amp;#160; Gültigkeit: unbekannt&lt;br /&gt;sub &amp;#160;ed25519&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;0xA83CAE94D3DC3873&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;erzeugt: &lt;span style=&quot;color: #000000;&quot;&gt;2017&lt;/span&gt;-04-05 &amp;#160;verfällt: niemals &amp;#160; &amp;#160; Nutzung: S &amp;#160; &lt;br /&gt;sub &amp;#160;cv25519&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;0xAA24CC81B8AED08B&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;erzeugt: &lt;span style=&quot;color: #000000;&quot;&gt;2017&lt;/span&gt;-04-05 &amp;#160;verfällt: niemals &amp;#160; &amp;#160; Nutzung: E &amp;#160; &lt;br /&gt;sub &amp;#160;rsa3072&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;0xDC0F82625FA6AADE&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;erzeugt: &lt;span style=&quot;color: #000000;&quot;&gt;2015&lt;/span&gt;-07-&lt;span style=&quot;color: #000000;&quot;&gt;16&lt;/span&gt; &amp;#160;verfällt: niemals &amp;#160; &amp;#160; Nutzung: E &amp;#160; &lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; unbekannt &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;. Robert J. Hansen &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;&lt;/span&gt;rjh&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;@&lt;/span&gt;sixdemonbag.org&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; unbekannt &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;#160;Robert J. Hansen &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;&lt;/span&gt;rob&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;@&lt;/span&gt;enigmail.net&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; unbekannt &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;#160;Robert J. Hansen &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;&lt;/span&gt;rob&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;@&lt;/span&gt;hansen.engineering&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Command being timed: &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;gpg --no-default-keyring --keyring ./broken_key.gpg --batch --quiet --edit-key 0x1DCBDC01B44427C7 clean save quit&amp;quot;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; User &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;time&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;seconds&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;3911.14&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; System &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;time&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;seconds&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;2442.87&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Percent of CPU this job got: &lt;span style=&quot;color: #000000;&quot;&gt;99&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;%&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Elapsed &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;wall&lt;/span&gt; clock&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;time&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;h:mm:ss or m:ss&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;1&lt;/span&gt;:&lt;span style=&quot;color: #000000;&quot;&gt;45&lt;/span&gt;:&lt;span style=&quot;color: #000000;&quot;&gt;56&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Average shared text &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;size&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;kbytes&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Average unshared data &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;size&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;kbytes&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Average stack &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;size&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;kbytes&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Average total &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;size&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;kbytes&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Maximum resident &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;size&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;kbytes&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;107660&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Average resident &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;size&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;kbytes&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Major &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;requiring I&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;O&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; page faults: &lt;span style=&quot;color: #000000;&quot;&gt;1&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Minor &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;reclaiming a frame&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; page faults: &lt;span style=&quot;color: #000000;&quot;&gt;26630&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Voluntary context switches: &lt;span style=&quot;color: #000000;&quot;&gt;43&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Involuntary context switches: &lt;span style=&quot;color: #000000;&quot;&gt;59439&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Swaps: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; File system inputs: &lt;span style=&quot;color: #000000;&quot;&gt;112&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; File system outputs: &lt;span style=&quot;color: #000000;&quot;&gt;48&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Socket messages sent: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Socket messages received: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Signals delivered: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Page &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;size&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;bytes&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;4096&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Exit status: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;
          772 
          773 &lt;p&gt;And the result is a nicely useable 3835 byte file of the clean public key.
          774 If you supply a keyring instead of &lt;code&gt;--no-default-keyring&lt;/code&gt; it will also keep the non-self signatures that are useful for you (as you apparently know the signing party).&lt;/p&gt;
          775 
          776 &lt;p&gt;So it does not break gpg. It does break things that call gpg at runtime and not asynchronously. I heard Enigmail is affected, quelle surprise.&lt;/p&gt;
          777 
          778 &lt;p&gt;Now the main problem here is the runtime. 1h45min is just ridiculous. As &lt;a href=&quot;https://twitter.com/FiloSottile/status/1145091106138394625&quot; title=&quot;Filippo Valsorda: Twitter message&quot;&gt;Filippo Valsorda puts it:&lt;/a&gt;&lt;/p&gt;
          779 
          780 &lt;blockquote&gt;
          781 Someone added a few thousand entries to a list that lets anyone append to it.
          782 
          783 GnuPG, software supposed to defeat state actors, suddenly takes minutes to process entries.
          784 
          785 How big is that list you ask? 17 MiB. Not GiB, 17 MiB. Like a large picture.
          786 
          787 &lt;a href=&quot;https://dev.gnupg.org/T4592&quot; title=&quot;gpg bug tracker entry: gpg takes &gt; 30s to list the keys from a 17MiB pubring.gpg that contains a single certificate&quot;&gt;https://dev.gnupg.org/T4592&lt;/a&gt;
          788 &lt;/blockquote&gt;
          789 
          790 &lt;p&gt;If I were a gpg / SKS keyserver developer, I&#039;d&lt;/p&gt;
          791 
          792 &lt;ul&gt;
          793 &lt;li&gt;speed this up so the edit-key run above completes in less than 10 s (just getting rid of the lseek/read dance and deferring all time-based decisions should get close)&lt;/li&gt;
          794 &lt;li&gt;(ideally) make the drop-sig import-filter syntax useful (date-ranges, non-reciprocal signatures, ...)&lt;/li&gt;
          795 &lt;li&gt;clean affected keys on the SKS keyservers (needs coordination of sysops, drop servers from unreachable people)&lt;/li&gt;
          796 &lt;li&gt;(ideally) use the opportunity to clean all &lt;a href=&quot;https://github.com/yakamok/keyserver-fs&quot;&gt;keyserver filesystem&lt;/a&gt; and the &lt;a href=&quot;https://www.quaxio.com/message_board_over_pgp_key_servers.html&quot;&gt;message board over pgp key servers&lt;/a&gt; keys, too&lt;/li&gt;
          797 &lt;li&gt;only accept new keys and new signatures on keys extending the strong set (rather small change to the &lt;a href=&quot;https://bitbucket.org/skskeyserver/sks-keyserver/src&quot;&gt;existing codebase&lt;/a&gt;)&lt;/li&gt;
          798 &lt;/ul&gt;
          799 
          800 &lt;p&gt;That way another key can only be added to the keyserver network if it contains at least one signature from a previously known &lt;a href=&quot;https://pgp.cs.uu.nl/plot/&quot; title=&quot;Henk P. Penning: analysis of the strong set in the PGP web of trust&quot;&gt;strong-set&lt;/a&gt; key.
          801 Attacking the keyserver network would become at least non-trivial. And the web-of-trust thing may make sense again.&lt;/p&gt;
          802 
          803 &lt;h2&gt;Updates&lt;/h2&gt;
          804 
          805 &lt;p&gt;09.07.2019&lt;/p&gt;
          806 
          807 &lt;p&gt;GnuPG 2.2.17 has been &lt;a href=&quot;https://lists.gnupg.org/pipermail/gnupg-announce/2019q3/000439.html&quot;&gt;released&lt;/a&gt; with another set of quickly bolted together fixes:&lt;/p&gt;
          808 
          809 &lt;pre&gt;
          810   * gpg: Ignore all key-signatures received from keyservers.  This
          811     change is required to mitigate a DoS due to keys flooded with
          812     faked key-signatures.  The old behaviour can be achieved by adding
          813     keyserver-options no-self-sigs-only,no-import-clean
          814     to your gpg.conf.  [#4607]
          815   * gpg: If an imported keyblocks is too large to be stored in the
          816     keybox (pubring.kbx) do not error out but fallback to an import
          817     using the options &quot;self-sigs-only,import-clean&quot;.  [#4591]
          818   * gpg: New command --locate-external-key which can be used to
          819     refresh keys from the Web Key Directory or via other methods
          820     configured with --auto-key-locate.
          821   * gpg: New import option &quot;self-sigs-only&quot;.
          822   * gpg: In --auto-key-retrieve prefer WKD over keyservers.  [#4595]
          823   * dirmngr: Support the &quot;openpgpkey&quot; subdomain feature from
          824     draft-koch-openpgp-webkey-service-07. [#4590].
          825   * dirmngr: Add an exception for the &quot;openpgpkey&quot; subdomain to the
          826     CSRF protection.  [#4603]
          827   * dirmngr: Fix endless loop due to http errors 503 and 504.  [#4600]
          828   * dirmngr: Fix TLS bug during redirection of HKP requests.  [#4566]
          829   * gpgconf: Fix a race condition when killing components.  [#4577]
          830 &lt;/pre&gt;
          831 
          832 &lt;p&gt;&lt;a href=&quot;https://dev.gnupg.org/T4607&quot; title=&quot;GNUpg bug T4607&quot;&gt;Bug T4607&lt;/a&gt; shows that these changes are all but well thought-out.
          833 They introduce artificial limits, like 64kB for WKD-distributed keys or 5MB for local signature imports (&lt;a href=&quot;https://dev.gnupg.org/T4591&quot;&gt;Bug T4591&lt;/a&gt;) which weaken the web-of-trust further.&lt;/p&gt;
          834 
          835 &lt;p&gt;I recommend to not run gpg 2.2.17 in production environments without extensive testing as these limits and the unverified network traffic may bite you. Do validate your upgrade with valid &lt;u&gt;and&lt;/u&gt; broken keys that have segments (packet groups) surpassing the above mentioned limits. You may be surprised what gpg does. On the upside: you can now refresh keys (sans signatures) via WKD. So if your buddies still believe in limiting their subkey validities, you can more easily update them bypassing the SKS keyserver network. NB: I have not tested that functionality. So test before deploying.&lt;/p&gt;
          836 
          837 &lt;p&gt;10.08.2019&lt;/p&gt;
          838 
          839 &lt;p&gt;Christopher Wellons (skeeto) has released his &lt;a href=&quot;https://github.com/skeeto/pgp-poisoner&quot;&gt;pgp-poisoner tool&lt;/a&gt;. It is a go program that can add thousands of malicious signatures to a GNUpg key per second. He comments &quot;[pgp-poisoner is] proof that such attacks are very easy to pull off. It doesn&#039;t take a nation-state actor to break the PGP ecosystem, just one person and couple evenings studying RFC 4880. This system is not robust.&quot; He also hints at the next likely attack vector, public subkeys can be bound to a primary key of choice.&lt;/p&gt;
          840  
          841     </content:encoded>
          842 
          843     <pubDate>Tue, 02 Jul 2019 10:25:00 +0200</pubDate>
          844     <guid isPermaLink="false">https://daniel-lange.com/archives/159-guid.html</guid>
          845     <category>crypt</category>
          846 <category>gpg</category>
          847 <category>security</category>
          848 <category>updated</category>
          849 
          850 </item>
          851 <item>
          852     <title>Wiping harddisks in 2019</title>
          853     <link>https://daniel-lange.com/archives/157-Wiping-harddisks-in-2019.html</link>
          854             <category>Linux</category>
          855     
          856     <comments>https://daniel-lange.com/archives/157-Wiping-harddisks-in-2019.html#comments</comments>
          857     <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=157</wfw:comment>
          858 
          859     <slash:comments>4</slash:comments>
          860     <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=157</wfw:commentRss>
          861     
          862 
          863     <author>nospam@example.com (Daniel Lange)</author>
          864     <content:encoded>
          865     &lt;p&gt;Wiping hard disks is part of my company&#039;s policy when returning servers. No exceptions.&lt;/p&gt;
          866 
          867 &lt;p&gt;Good providers will wipe what they have received back from a customer, but we don&#039;t trust that as the hosting / cloud business is under constant budget-pressure and cutting corners (&lt;code&gt;wipefs&lt;/code&gt;) is a likely consequence.&lt;/p&gt;
          868 
          869 &lt;p&gt;With modern SSDs there is &quot;security erase&quot; (&lt;code&gt;man hdparm&lt;/code&gt; or see the - as always well maintained - &lt;a href=&quot;https://wiki.archlinux.org/index.php/Solid_state_drive/Memory_cell_clearing&quot;&gt;Arch wiki&lt;/a&gt;) which is useful if the device is encrypt-by-default. These devices basically &quot;forget&quot; the encryption key but it also means trusting the devices&#039; implementation security. Which &lt;a href=&quot;https://www.tomshardware.com/news/crucial-samsung-ssd-encryption-bypassed,38025.html&quot;&gt;doesn&#039;t seem warranted&lt;/a&gt;. Still &lt;em&gt;after&lt;/em&gt; wiping and trimming, a secure erase can&#039;t be a bad idea &lt;img src=&quot;https://daniel-lange.com/plugins/serendipity_event_emoticate/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;.&lt;/p&gt;
          870 
          871 &lt;p&gt;Still there are three things to be aware of when wiping modern hard disks:&lt;/p&gt;
          872 
          873 &lt;ol&gt;
          874 &lt;li&gt;Don&#039;t forget to add &lt;code&gt;bs=4096&lt;/code&gt; (blocksize) to &lt;code&gt;dd&lt;/code&gt; as it will still default to 512 bytes and that makes writing even zeros less than half the maximum possible speed. SSDs may benefit from larger block sizes matched to their flash page structure. These are usually 128kB, 256kB, 512kB, 1MB, 2MB and 4MB these days.&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
          875 &lt;li&gt;All disks can usually be written to in parallel. &lt;code&gt;screen&lt;/code&gt; is your friend.&lt;/li&gt;
          876 &lt;li&gt;The write speed varies greatly by disk region, so use 2 hours per TB and wipe pass as a conservative estimate. This is better than extrapolating what you see initially in the fastest region of a spinning disk.&lt;/li&gt;
          877 &lt;li&gt;The disks have become huge (we run 12TB disks in production now) but the write speed is still somewhere 100 MB/s ... 300 MB/s. So wiping servers on the last day before returning is not possible anymore with disks larger than 4 TB each (and three passes). Or 12 TB and one pass (where e.g. fully encrypted content allows to just do a final zero-wipe).&lt;/li&gt;
          878 &lt;/ol&gt;
          879 
          880 &lt;p&gt;&lt;style&gt;
          881 table.blueTable {
          882   border: 1px solid #1C6EA4;
          883   background-color: #EEEEEE;
          884   text-align: center;
          885   border-collapse: collapse;
          886 }
          887 table.blueTable td, table.blueTable th {
          888   border: 1px solid #AAAAAA;
          889   padding: 3px 2px;
          890 }
          891 table.blueTable tbody td {
          892   font-size: 12px;
          893 }
          894 table.blueTable tr:nth-child(even) {
          895   background: #D0E4F5;
          896 }
          897 table.blueTable thead th {
          898   font-size: 12px;
          899   font-weight: bold;
          900   text-align: center;
          901 }
          902 table.blueTable thead th:first-child {
          903   border-left: none;
          904 }
          905 &lt;/style&gt;&lt;/p&gt;
          906 
          907 &lt;table class=&quot;blueTable&quot;&gt;
          908 &lt;thead&gt;
          909 &lt;tr&gt;
          910 &lt;th&gt;hard disk size&lt;/th&gt;
          911 &lt;th&gt;one pass&lt;/th&gt;
          912 &lt;th&gt;three passes&lt;/th&gt;
          913 &lt;/tr&gt;
          914 &lt;/thead&gt;
          915 &lt;tbody&gt;
          916 &lt;tr&gt;&lt;td&gt;1 TB&lt;/td&gt;&lt;td&gt;2 h&lt;/td&gt;&lt;td&gt;6 h&lt;/td&gt;&lt;/tr&gt;
          917 &lt;tr&gt;&lt;td&gt;2 TB&lt;/td&gt;&lt;td&gt;4 h&lt;/td&gt;&lt;td&gt;12 h&lt;/td&gt;&lt;/tr&gt;
          918 &lt;tr&gt;&lt;td&gt;3 TB&lt;/td&gt;&lt;td&gt;6 h&lt;/td&gt;&lt;td&gt;18 h&lt;/td&gt;&lt;/tr&gt;
          919 &lt;tr&gt;&lt;td&gt;4 TB&lt;/td&gt;&lt;td&gt;8 h&lt;/td&gt;&lt;td&gt;24 h (one day)&lt;/td&gt;&lt;/tr&gt;
          920 &lt;tr&gt;&lt;td&gt;5 TB&lt;/td&gt;&lt;td&gt;10 h&lt;/td&gt;&lt;td&gt;30 h&lt;/td&gt;&lt;/tr&gt;
          921 &lt;tr&gt;&lt;td&gt;6 TB&lt;/td&gt;&lt;td&gt;12 h&lt;/td&gt;&lt;td&gt;36 h&lt;/td&gt;&lt;/tr&gt;
          922 &lt;tr&gt;&lt;td&gt;8 TB&lt;/td&gt;&lt;td&gt;16 h&lt;/td&gt;&lt;td&gt;48 h (two days) &lt;/td&gt;&lt;/tr&gt;
          923 &lt;tr&gt;&lt;td&gt;10 TB&lt;/td&gt;&lt;td&gt;20 h&lt;/td&gt;&lt;td&gt;60 h&lt;/td&gt;&lt;/tr&gt;
          924 &lt;tr&gt;&lt;td&gt;12 TB&lt;/td&gt;&lt;td&gt;24 h&lt;/td&gt;&lt;td&gt;72 h (three days)&lt;/td&gt;&lt;/tr&gt;
          925 &lt;tr&gt;&lt;td&gt;14 TB&lt;/td&gt;&lt;td&gt;28 h&lt;/td&gt;&lt;td&gt;84 h&lt;/td&gt;&lt;/tr&gt;
          926 &lt;tr&gt;&lt;td&gt;16 TB&lt;/td&gt;&lt;td&gt;32 h&lt;/td&gt;&lt;td&gt;96 h (four days)&lt;/td&gt;&lt;/tr&gt;
          927 &lt;tr&gt;&lt;td&gt;18 TB&lt;/td&gt;&lt;td&gt;36 h&lt;/td&gt;&lt;td&gt;108 h&lt;/td&gt;&lt;/tr&gt;
          928 &lt;tr&gt;&lt;td&gt;20 TB&lt;/td&gt;&lt;td&gt;40 h&lt;/td&gt;&lt;td&gt;120 h (five days)&lt;/td&gt;&lt;/tr&gt;
          929 
          930 &lt;/tbody&gt;
          931 &lt;/tr&gt;
          932 &lt;/table&gt;
          933 
          934 &lt;p&gt;&lt;img class=&quot;serendipity_image_left&quot; width=&quot;811&quot; height=&quot;154&quot;  src=&quot;https://daniel-lange.com/uploads/entries/harddisk_wipe.gif&quot; title=&quot;Hard disk wipe&quot; alt=&quot;Hard disk wipe animation&quot;&gt;&lt;/p&gt;
          935 
          936 &lt;div style=&quot;clear:both&quot;&gt;&lt;/div&gt;
          937 
          938 &lt;div class=&quot;footnotes&quot;&gt;
          939 &lt;hr /&gt;
          940 &lt;ol&gt;
          941 
          942 &lt;li id=&quot;fn:1&quot;&gt;
          943 &lt;p&gt;As Douglas pointed out correctly in the comment below, these are &lt;strong&gt;IT&lt;/strong&gt; Kilobytes and Megabytes, so 2&lt;sup&gt;10&lt;/sup&gt; Bytes and 2&lt;sup&gt;20&lt;/sup&gt; Bytes. So &lt;a href=&quot;https://en.wikipedia.org/wiki/Kibibyte&quot; title=&quot;Saying Kibibyte makes me cringe every time. So I don&#039;t.&quot;&gt;Kibibytes&lt;/a&gt; and Mebibytes for those firmly in SI territory.&amp;#160;&lt;a href=&quot;#fnref:1&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
          944 &lt;/li&gt;
          945 
          946 &lt;/ol&gt;
          947 &lt;/div&gt;
          948  
          949     </content:encoded>
          950 
          951     <pubDate>Tue, 12 Mar 2019 09:55:00 +0100</pubDate>
          952     <guid isPermaLink="false">https://daniel-lange.com/archives/157-guid.html</guid>
          953     <category>data</category>
          954 <category>erase</category>
          955 <category>harddisk</category>
          956 <category>security</category>
          957 <category>ssd</category>
          958 <category>wipe</category>
          959 
          960 </item>
          961 <item>
          962     <title>Apple Time Machine backups on Debian 9 (Stretch)</title>
          963     <link>https://daniel-lange.com/archives/156-Apple-Time-Machine-backups-on-Debian-9-Stretch.html</link>
          964             <category>Debian</category>
          965     
          966     <comments>https://daniel-lange.com/archives/156-Apple-Time-Machine-backups-on-Debian-9-Stretch.html#comments</comments>
          967     <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=156</wfw:comment>
          968 
          969     <slash:comments>1</slash:comments>
          970     <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=156</wfw:commentRss>
          971     
          972 
          973     <author>nospam@example.com (Daniel Lange)</author>
          974     <content:encoded>
          975     &lt;p&gt;Netatalk 3.1.12 has been released which fixes an 18 year old &lt;abbr title=&quot;(Unauthorized) Remote Code Execution&quot;&gt;RCE&lt;/abbr&gt; bug. The &lt;a href=&quot;https://medium.com/tenable-techblog/exploiting-an-18-year-old-bug-b47afe54172&quot; title=&quot;Medium post detailing the exploit vector&quot;&gt;Medium write up&lt;/a&gt;  on &lt;a href=&quot;https://www.tenable.com/security/research/tra-2018-48&quot;&gt;CVE-2018-1160&lt;/a&gt; by Jacob Baines is quite an entertaining read.&lt;/p&gt;
          976 
          977 &lt;p&gt;The full &lt;a href=&quot;http://netatalk.sourceforge.net/3.1/ReleaseNotes3.1.12.html&quot; title=&quot;Release Notes / Changelog for Netatalk 3.1.12&quot;&gt;release notes for 3.1.12&lt;/a&gt; are unfortunately not even half as interesting.&lt;/p&gt;
          978 
          979 &lt;table&gt;
          980 &lt;tr&gt;&lt;td&gt;
          981 &lt;img class=&quot;serendipity_image_noborder&quot; width=&quot;48&quot; height=&quot;48&quot; hspace=&quot;20&quot; src=&quot;https://daniel-lange.com/uploads/icons/markup/important.png&quot; title=&quot;Warning: Read the original blog post before installing for the first time.&quot; alt=&quot;Warning: Read the original blog post before installing for the first time.&quot; /&gt;
          982 &lt;/td&gt;
          983 &lt;td&gt;
          984 Be sure to read the &lt;a href=&quot;https://daniel-lange.com/archives/102-Apple-Timemachine-backups-on-Debian-8-Jessie.html&quot; title=&quot;Blog entry: Apple Timemachine backups on Debian 8 Jessie&quot;&gt;original blog post&lt;/a&gt; if you are new to Netatalk3 on Debian Jessie or Stretch!&lt;br /&gt;
          985 You&#039;ll get nowhere if you install the .debs below and don&#039;t know about the upgrade path from 2.2.x which is still in the Debian archive. So &lt;abbr title=&quot;Read The Fine Article&quot;&gt;RTFA&lt;/abbr&gt;.
          986 &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
          987 
          988 &lt;p&gt;For Debian Buster (Debian 10) we&#039;ll have Samba 4.9 which has learnt (from Samba 4.8.0 onwards) how to emulate a SMB time machine share. I&#039;ll make a write up how to install this once Buster stabilizes. This luckily means there will be no need to continue supporting Netatalk in normal production environments. So I guess &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=690227&quot;&gt;bug #690227&lt;/a&gt; won&#039;t see a proper fix anymore. Waiting out problems helps at times, too :/.&lt;/p&gt;
          989 
          990 &lt;p&gt;Update instructions and downloads:&lt;/p&gt;
          991  &lt;a class=&quot;block_level&quot; href=&quot;https://daniel-lange.com/archives/156-Apple-Time-Machine-backups-on-Debian-9-Stretch.html#extended&quot;&gt;Continue reading &quot;Apple Time Machine backups on Debian 9 (Stretch)&quot;&lt;/a&gt;
          992     </content:encoded>
          993 
          994     <pubDate>Mon, 07 Jan 2019 14:59:00 +0100</pubDate>
          995     <guid isPermaLink="false">https://daniel-lange.com/archives/156-guid.html</guid>
          996     <category>apple</category>
          997 <category>backup</category>
          998 <category>debian</category>
          999 <category>netatalk</category>
         1000 <category>stretch</category>
         1001 <category>timemachine</category>
         1002 <category>updated</category>
         1003 
         1004 </item>
         1005 <item>
         1006     <title>Xfce 4.12 not suspending on laptop-lid close</title>
         1007     <link>https://daniel-lange.com/archives/154-Xfce-4.12-not-suspending-on-laptop-lid-close.html</link>
         1008             <category>Linux</category>
         1009     
         1010     <comments>https://daniel-lange.com/archives/154-Xfce-4.12-not-suspending-on-laptop-lid-close.html#comments</comments>
         1011     <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=154</wfw:comment>
         1012 
         1013     <slash:comments>1</slash:comments>
         1014     <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=154</wfw:commentRss>
         1015     
         1016 
         1017     <author>nospam@example.com (Daniel Lange)</author>
         1018     <content:encoded>
         1019     &lt;p&gt;Xfce 4.12 as default in Ubuntu/Xubuntu 18.04 LTS did not suspend a laptop after closing the lid. In fact running
         1020 &lt;code&gt;xfce4-power-manager --quit ; xfce4-power-manager --no-daemon --debug&lt;/code&gt; showed that xfce4 wasn&#039;t seeing a laptop lid close event at all.&lt;/p&gt;
         1021 
         1022 &lt;p&gt;To the contrary &lt;code&gt;acpi_listen&lt;/code&gt; nicely finds &lt;code&gt;button/lid LID close&lt;/code&gt; and &lt;code&gt;button/lid LID open&lt;/code&gt; events when folding the screen and opening it up again.&lt;/p&gt;
         1023 
         1024 &lt;p&gt;As so often the wonderful docs / community of Arch Linux to the rescue. This &lt;a href=&quot;https://bbs.archlinux.org/viewtopic.php?id=206840&quot;&gt;forum thread&lt;/a&gt; from 2015 received the correct answer in 2017:&lt;/p&gt;
         1025 
         1026 &lt;p&gt;Xfce4 basically recognizes systemd and thus disables its built-in power-management options for handling these &quot;button events&quot; (but doesn&#039;t tell you so in the config UI for power-manager). Systemd is configured to handle these events by default (&lt;code&gt;/etc/systemd/logind.conf&lt;/code&gt; has &lt;code&gt;HandleLidSwitch=suspend&lt;/code&gt; but for unknown reasons decides not to honor that).&lt;/p&gt;
         1027 
         1028 &lt;p&gt;So best is to teach Xfce4 to handle the events again as in pre-systemd times:&lt;/p&gt;
         1029 
         1030 &lt;p&gt;&lt;code&gt;xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/logind-handle-lid-switch -s false&lt;/code&gt;&lt;/p&gt;
         1031 
         1032 &lt;p&gt;Now the UI options will work again as intended and the laptop suspends on lid close and resumes on lid open.&lt;/p&gt;
         1033 
         1034 &lt;h3&gt;Update:&lt;/h3&gt;
         1035 
         1036 &lt;p&gt;07.01.19: Changed XFCE -&gt; Xfce as per Corsac&#039;s suggestion in the comments below. Thank you!&lt;/p&gt;
         1037 
         1038 &lt;p&gt;Background info:&lt;/p&gt;
         1039 
         1040 &lt;blockquote&gt;
         1041 The name &quot;XFCE&quot; was originally an acronym for &quot;XForms Common Environment&quot;, but since that time it has been rewritten twice and no longer uses the XForms toolkit. The name survived, but it is no longer capitalized as &quot;XFCE&quot;, but rather as &quot;Xfce&quot;. The developers&#039; current stance is that the initialism no longer stands for anything specific. After noting this, the FAQ on the Xfce Wiki comments &quot;(suggestion: X Freakin&#039; Cool Environment)&quot;.
         1042 &lt;/blockquote&gt;
         1043 
         1044 &lt;p&gt;(quoted from &lt;a href=&quot;https://en.wikipedia.org/wiki/Xfce#History&quot;&gt;Wikipedia&#039;s Xfce article&lt;/a&gt; also found in the &lt;a href=&quot;https://docs.xfce.org/faq&quot;&gt;Xfce docs FAQ&lt;/a&gt;).&lt;/p&gt;
         1045  
         1046     </content:encoded>
         1047 
         1048     <pubDate>Sat, 05 Jan 2019 16:15:00 +0100</pubDate>
         1049     <guid isPermaLink="false">https://daniel-lange.com/archives/154-guid.html</guid>
         1050     <category>config</category>
         1051 <category>hibernate</category>
         1052 <category>suspend</category>
         1053 <category>systemd</category>
         1054 <category>ubuntu</category>
         1055 <category>updated</category>
         1056 <category>xfce</category>
         1057 
         1058 </item>
         1059 
         1060 </channel>
         1061 </rss>