<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<atom:link href="https://momi.ca/feed.xml" rel="self" type="application/rss+xml" />
<title>Anjan Momi Homepage</title>
<description>Anjandev Momi's Homepage</description>
<link>https://momi.ca/</link>
<managingEditor>anjan@momi.ca (Anjandev Momi)</managingEditor>
<lastBuildDate>Mon, 02 Jan 2023 01:23:01 -0800</lastBuildDate>

<item>
<guid>https://momi.ca/posts/2022-09-07-mainline.html</guid>
<link>https://momi.ca/posts/2022-09-07-mainline.html</link>
<pubDate>Wed, 07 Sep 2022 00:00:00 -0700</pubDate>
<title>The Pinephone Pro, PostmarketOS, and Why Mainlining Phones is Important</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">The Pinephone Pro, PostmarketOS, and Why Mainlining Phones is Important</h1>
<p class="date">Published 2022-09-07 on <a href="https://momi.ca/">Anjan's Homepage</a></p>
<p>
In <code>#sxmo</code> on OFTC, users often ask why the pinephone pro is less functional on postmarketOS than other distros.
PostmarketOS uses a mainline pinephone pro kernel <sup><a id="fnr.1" class="footref" href="https://momi.ca/#fn.1" role="doc-backlink">1</a></sup>.
There exists a heavily patched fork of the linux kernel called the megi kernel with broader support for the functionality of the pinephone pro <sup><a id="fnr.2" class="footref" href="https://momi.ca/#fn.2" role="doc-backlink">2</a></sup>.
In this blog post, I will explain why postmarketOS has mainline-first approach.
</p>

<blockquote>
<p>
Carrying around forks of the kernel is not sustainable as it becomes impossible to provide security patches after a short time. The only way to truly fix this for a device is mainlining it.
</p>
</blockquote>
<ul class="org-ul">
<li>Source: postmarketOS wiki <a href="https://wiki.postmarketos.org/wiki/The_Mainline_Kernel">https://wiki.postmarketos.org/wiki/The_Mainline_Kernel</a></li>
</ul>

<p>
Moreover, I have ran into stability issues when using heavily forked kernels with postmarketOS.
Recall that postmarketOS is aiming for a 10 year lifecycle for smartphones.
Forked kernels are a hurdle we must overcome to achieve this goal.
</p>

<p>
It is often suggested that we use the megi forked kernel for the pinephone pro in the postmarketOS distro as a temporary solution.
However, it is easy to underestimate how permanent a temporary solution can be - the heavily forked megi kernel for the original pinephone is used in postmarketOS and has not been upstreamed <sup><a id="fnr.3" class="footref" href="https://momi.ca/#fn.3" role="doc-backlink">3</a></sup>.
PostmarketOS cannot change from the megi kernel to the upstream kernel for the original pinephone without losing functionality.
Indeed, postmarketOS is trying to change the status quo where phones are a throwaway insecure mess cause the code is so heavily patched.
Only shipping the mainline kernel creates pressure for someone to mainline the megi kernel patches.
</p>

<div id="outline-container-org8195b41" class="outline-2">
<h2 id="org8195b41">Options</h2>
<div class="outline-text-2" id="text-org8195b41">
<p>
PostmarketOS is the only linux distro I have used on my pinephone, pinephone pro, and android phones because of how well the distro is maintained.
Indeed, the mainline-first approach encourages the community to enact best practices.
If you are convinced of the importance of mainlining and postmarketOS&rsquo;s approach, here is how you can help:
</p>
</div>

<div id="outline-container-orga020a80" class="outline-3">
<h3 id="orga020a80">Help mainline the pinephone pro kernel</h3>
<div class="outline-text-3" id="text-orga020a80">
<p>
The megi kernel is not as bad as a typical downstream kernel.
For example, megi&rsquo;s kernel has a ~500k line diff and OnePlus 6&rsquo;s downstream kernel has a ~5000k line diff <sup><a id="fnr.4" class="footref" href="https://momi.ca/#fn.4" role="doc-backlink">4</a></sup>.
However, we should still work towards mainlining the megi kernel.
Megi expressed in the past that he is not interested in mainlining because rebasing to the latest Linux release is less work for him.
Megi&rsquo;s work is valuable and a good start.
I am thankful he is doing this work but we need to work as a community to make sure his work lives on forever.
</p>

<p>
There has been progress on mainlining the pinephone pro kernel!
The pinephone pro device tree has been merged into the upstream linux kernel <sup><a id="fnr.5" class="footref" href="https://momi.ca/#fn.5" role="doc-backlink">5</a></sup>.
If you want to help, please checkout the <code>#cross-distro-kernel</code> channel on the libera.chat irc network and the gitlab <sup><a id="fnr.6" class="footref" href="https://momi.ca/#fn.6" role="doc-backlink">6</a></sup>.
There are lots of people in <code>#postmarketos-mainline</code> channel on the oftc irc network to help you learn how to mainline.
Maybe you can mainline other Android phones?
</p>
</div>
</div>

<div id="outline-container-org847d5cb" class="outline-3">
<h3 id="org847d5cb">Buy functional mainlined devices</h3>
<div class="outline-text-3" id="text-org847d5cb">
<p>
I have been daily driving the poco f1 with Sxmo for a couple months and it&rsquo;s the perfect phone <sup><a id="fnr.7" class="footref" href="https://momi.ca/#fn.7" role="doc-backlink">7</a></sup>.
You can also use the OnePlus 6/6T for similar support.
These devices have proper mainline support in postmarketOS and can be obtained in Canada for 150 Canadian dollars.
Optionally, you can donate the money saved from buying <a href="https://wiki.postmarketos.org/wiki/Qualcomm_Snapdragon_845_(SDM845)">SDM845 devices</a> to the developers making sure we have lots of mainline devices to use <sup><a id="fnr.8" class="footref" href="https://momi.ca/#fn.8" role="doc-backlink">8</a></sup>.
</p>
</div>
</div>
</div>

<div id="outline-container-org4690a19" class="outline-2">
<h2 id="org4690a19">Conclusion</h2>
<div class="outline-text-2" id="text-org4690a19">
<p>
I appreciate megi&rsquo;s work as a start but we need to mainline devices to have a polished experience long term.
If postmarketOS merged heavily forked kernels for devices, a lot of work would need to be done to maintain those devices.
More likely, we wouldn&rsquo;t bother and have severely insecure devices after a couple years.
The large initial investment of mainlining is worth it.
</p>
</div>
</div>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">

<div class="footdef"><sup><a id="fn.1" class="footnum" href="https://momi.ca/#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://gitlab.com/pine64-org/linux">https://gitlab.com/pine64-org/linux</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.2" class="footnum" href="https://momi.ca/#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://megous.com/git/linux">https://megous.com/git/linux</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.3" class="footnum" href="https://momi.ca/#fnr.3" role="doc-backlink">3</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://gitlab.com/postmarketOS/pmaports/-/blob/master/device/main/linux-postmarketos-allwinner/APKBUILD#L38">https://gitlab.com/postmarketOS/pmaports/-/blob/master/device/main/linux-postmarketos-allwinner/APKBUILD#L38</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.4" class="footnum" href="https://momi.ca/#fnr.4" role="doc-backlink">4</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
See: <a href="https://mainline.space/">https://mainline.space/</a> <a href="https://not.mainline.space/">https://not.mainline.space/</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.5" class="footnum" href="https://momi.ca/#fnr.5" role="doc-backlink">5</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://lore.kernel.org/all/166231195330.2423948.5394487959576836993.b4-ty@sntech.de/">https://lore.kernel.org/all/166231195330.2423948.5394487959576836993.b4-ty@sntech.de/</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.6" class="footnum" href="https://momi.ca/#fnr.6" role="doc-backlink">6</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://gitlab.com/pine64-org/linux">https://gitlab.com/pine64-org/linux</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.7" class="footnum" href="https://momi.ca/#fnr.7" role="doc-backlink">7</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
Read my blog post: <a href="https://momi.ca/posts/2022-04-19-sxmopocof1.html">Sxmo on the poco f1</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.8" class="footnum" href="https://momi.ca/#fnr.8" role="doc-backlink">8</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://www.patreon.com/calebccff">https://www.patreon.com/calebccff</a>
</p></div></div>


</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2022-05-01-freeNetwork.html</guid>
<link>https://momi.ca/posts/2022-05-01-freeNetwork.html</link>
<pubDate>Sun, 01 May 2022 00:00:00 -0700</pubDate>
<title>Why we must insist on Free Network Services</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Why we must insist on Free Network Services</h1>
<p class="date">Published 2022-04-30 on <a href="https://momi.ca/">Anjan's Homepage</a></p>
<p>
There has been renewed interest in the fediverse <sup><a id="fnr.1" class="footref" href="https://momi.ca/#fn.1" role="doc-backlink">1</a></sup>.
That is websites that you can install on your own hardware, come up with your own rules, and talk to people on other websites with social media like features.
Imagine being able to comment on Youtube with your Facebook account and vice versa or post to your Instagram and have it appear on everyone on Twitter - that is what the fediverse is!
Beyond these technical benefits, all this software is Free software - that is it respects your freedoms to community and rights to inspect what it&rsquo;s doing.
Lets go over some of the other benefits of using Free software network services.
</p>

<p>
I hope my personal experience encourages you to at least post on Free network services in parallel to proprietary social media.
</p>


<div id="outline-container-orgc046eb3" class="outline-2">
<h2 id="orgc046eb3">Shouldn&rsquo;t I Go Where the Eyeballs are?</h2>
<div class="outline-text-2" id="text-orgc046eb3">
<p>
All of the important content I create on the internet goes on federated, free network services.
Listing these free network services (and their proprietary &ldquo;equivalents&rdquo;): peertube (youtube), pleroma (twitter), and sourcehut (github).
People seem to look at the number of people on a social media site and assume the one with the most users are the only ones worth having.
If the site is proprietary, you have no control over the algorithm and it&rsquo;s unlikely that the algorithm will prioritize your content over content that benefits the corporate interests.
If people could &ldquo;organically&rdquo; grow on these proprietary network services, what incentive would there be to buy ads and pay them?
The proprietary network services&rsquo; business model works against the incentives of organic growth.
</p>

<p>
In contrast, on Free network services, my content has seen a tremendous amount of organic growth.
When Sxmo was a very young project, Drew Devault (creator of Sourcehut) made Sxmo a featured project on Sourcehut and posted in on his Mastodon (federated Twitter) account.
The popularity of Sxmo is partly a consequence of how much it embraces free network services to communicate and promote itself.
Administrators and users of Free network services are usually thrilled to have your content and help you in promoting it!
</p>

<p>
Moreover, the design of the Free services encourages organic growth - without payment!
When joining Mastodon, you must choose an instance which controls the rules and interests the instance is targetting <sup><a id="fnr.2" class="footref" href="https://momi.ca/#fn.2" role="doc-backlink">2</a></sup>.
Since Mastodon follows the fediverse structure - you can talk to people on other instances and they can talk to you.
However, the &ldquo;local timeline&rdquo; shows people on your instance and posts on the local timeline will likely be things your instance finds interesting.
So art instances have art and technology instances have cool projects people are working on.
Rather than being another drop in the firehose that is the twitter timeline, the local timeline connects you to the people most likely to have the same interests as you.
The consequences of these design decisions are profound.
I regularly get interactions, suggestions, ideas, and contributions from a diverse group of people.
Moreover, the content I get to see on Free network services is more interesting because it&rsquo;s not constant culture war and brand posting <sup><a id="fnr.3" class="footref" href="https://momi.ca/#fn.3" role="doc-backlink">3</a></sup>.
</p>
</div>
</div>

<div id="outline-container-org10aa04f" class="outline-2">
<h2 id="org10aa04f">Can Free Software handle the load?</h2>
<div class="outline-text-2" id="text-org10aa04f">
<p>
People will see news stories about the massive load big tech&rsquo;s network service have on the planet <sup><a id="fnr.4" class="footref" href="https://momi.ca/#fn.4" role="doc-backlink">4</a></sup> and assume that this is the cost of storing their pictures of brunch.
Indeed, Google has requested aquifer water to cool their datacenters from water famished regions of the United States <sup><a id="fnr.5" class="footref" href="https://momi.ca/#fn.5" role="doc-backlink">5</a></sup>.
Most of these data center&rsquo;s resources are dedicated to serve targetted advertisement.
That is, a social media that has no targetted advertisements and mechanisms to prevent advertisements - ie. free software and federation, will be more eco-friendly.
</p>

<p>
Furthermore, often users will conclude the operational costs of Google and Facebook are how much it costs to run a social media company.
Again, this is misleading cause most of the operational costs are spent on advertising the network, UX/UI research to manipulate people into acting against their own self interests, lobbying for exploiting the environment, and analysis of user behavior.
Without the need for mass surveillance, targetting, and advertising - Social media can and is run by everyday people using Free software network services.
</p>
</div>
</div>


<div id="outline-container-orga8e599f" class="outline-2">
<h2 id="orga8e599f">How is the moderation?</h2>
<div class="outline-text-2" id="text-orga8e599f">
<p>
Moderation is difficult because one person&rsquo;s rightful ban is another person&rsquo;s censorship.
Luckily, the federated and instance driven nature of the Fediverse allows for nuance in the &ldquo;free speech&rdquo; debate.
Recall on the fediverse, a core feature is the ability to talk to people on other servers and even other social media platforms.
Suppose a fediverse program or instance admin introduces ads or does moderation in a way you dont approve of <b><b>but all your friends dont want to migrate</b></b>.
You dont have to choose between supporting bad moderation or losing all your friends, you can change instances and still talk to friends on your old instance.
The ease of migration makes the whole network much more likely to follow the user&rsquo;s wishes.
</p>

<p>
Since each instance has a moderator team and instances are usually small, I have found the moderation on the fediverse to be much better.
You can talk to the <b><b>people</b></b> doing the moderation and often the administrator will contact you directly regarding their decisions.
</p>
</div>
</div>


<div id="outline-container-org20508c1" class="outline-2">
<h2 id="org20508c1">Conclusion</h2>
<div class="outline-text-2" id="text-org20508c1">
<p>
The fediverse is how social media on the internet should have happened.
It encourages free association with moderation managed communally - join <a href="https://debian.social">Debian&rsquo;s instances</a>, your <a href="https://mastodon.mit.edu">university&rsquo;s instance</a>, or run your own!
Lets support the fediverse and ourselves by joining!
</p>
</div>

<div id="outline-container-org5652513" class="outline-3">
<h3 id="org5652513">How to join</h3>
<div class="outline-text-3" id="text-org5652513">
<ul class="org-ul">
<li>Mastodon (twitter): <a href="https://joinmastodon.org/communities">https://joinmastodon.org/communities</a></li>
<li>peertube (youtube): I recommend <a href="https://diode.zone">https://diode.zone</a> instance</li>
<li>writefreely (medium): <a href="https://writefreely.org/">https://writefreely.org/</a></li>
<li>sourcehut (github): <a href="https://sourcehut.org">https://sourcehut.org</a></li>
</ul>
</div>
</div>
</div>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">

<div class="footdef"><sup><a id="fn.1" class="footnum" href="https://momi.ca/#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://mastodon.social/users/Gargron/statuses/108205005223077798">https://mastodon.social/users/Gargron/statuses/108205005223077798</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.2" class="footnum" href="https://momi.ca/#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://joinmastodon.org/communities">https://joinmastodon.org/communities</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.3" class="footnum" href="https://momi.ca/#fnr.3" role="doc-backlink">3</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
The culture war<sup>tm</sup> keeps people engaged<sup>tm</sup> so they can keep seeing the brand posting
</p></div></div>

<div class="footdef"><sup><a id="fn.4" class="footnum" href="https://momi.ca/#fnr.4" role="doc-backlink">4</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://www.nytimes.com/2012/09/23/technology/data-centers-waste-vast-amounts-of-energy-belying-industry-image.html">https://www.nytimes.com/2012/09/23/technology/data-centers-waste-vast-amounts-of-energy-belying-industry-image.html</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.5" class="footnum" href="https://momi.ca/#fnr.5" role="doc-backlink">5</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://www.datacenterdynamics.com/en/news/googles-plan-to-use-aquifer-for-cooling-in-south-carolina-raises-concerns/">https://www.datacenterdynamics.com/en/news/googles-plan-to-use-aquifer-for-cooling-in-south-carolina-raises-concerns/</a>
</p></div></div>


</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2022-04-19-sxmopocof1.html</guid>
<link>https://momi.ca/posts/2022-04-19-sxmopocof1.html</link>
<pubDate>Tue, 19 Apr 2022 00:00:00 -0700</pubDate>
<title>Sxmo on the poco f1</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Sxmo on the poco f1</h1>
<p class="date">Published 2022-04-19 on <a href="https://momi.ca/">Anjan's Homepage</a></p>
<p>
Recently, I tried to upgrade the modem firmware on my pinephone and failed.
As far as I know, the modem on my pinephone is broken.
I have a developer edition of the pinephone pro but the mainline kernel doesnt even have reliable charging working <sup><a id="fnr.1" class="footref" href="https://momi.ca/#fn.1" role="doc-backlink">1</a></sup>.
</p>

<p>
On the look out for a replacement device, I saw <a href="https://twitter.com/joelselvaraj95/status/1478971761127350275">the poco f1 and oneplus 6 have gained support for calling in postmarketOS</a>.
Since I am tired of dealing with pine64 hardware and the Librem 5 is too expensive, I decided to pick up a poco f1 for 150 Canadian dollars.
So how is the experience?
Overall very good and I have been using it as my daily driver for 2 weeks.
</p>

<p>
Here are the details:
</p>

<div id="outline-container-orgcdee3ac" class="outline-2">
<h2 id="orgcdee3ac">Unlocking the bootloader</h2>
<div class="outline-text-2" id="text-orgcdee3ac">
<p>
Going through the process of unlocking the bootloader, I am reminded why I was so excited for the pinephone and Librem 5.
To unlock the bootloader: you must insert your sim card into your poco f1, make a Xiaomi account with your phone number, and beg Xiaomi to unlock your device via the proprietary windows only application <sup><a id="fnr.2" class="footref" href="https://momi.ca/#fn.2" role="doc-backlink">2</a></sup>.
Xiaomi&rsquo;s unlocking application did not detect that my poco f1 was connected and I had to install the &ldquo;Mi PC Suite&rdquo;.
I downloaed Mi PC Suite from <a href="http://pcsuite.mi.com/">here</a> but <b>be advised that the website is not served over https and overall kind of suspect</b>.
I used this program because I could not find a reliable source for the USB drivers for this device after searching for hours.
Unlocking the bootloader took me 4 hours in total and it was a painful experience.
I will probably have to reinstall windows on my burner laptop.
</p>

<p>
I was told that Xiaomi sometimes makes people wait a couple of weeks to unlock their phone and during that time, they must use the phone with the simcard installed.
In other words, an even bigger privacy nightmare than what I went through.
Luckily, I didn&rsquo;t have to deal with Xiaomi denying my unlock request.
</p>

<p>
Consulting the postmarketOS wiki for the <a href="https://wiki.postmarketos.org/wiki/OnePlus_6T_(oneplus-fajita)#Fastboot_Mode">Oneplus 6/6T</a>, Im not sure if the bootloader unlocking experience is better on the Oneplus 6.
</p>

<p>
<a href="https://twrp.me/xiaomi/xiaomipocophonef1.html">Flashing TWRP</a> to my phone via adb was trivial.
</p>
</div>
</div>

<div id="outline-container-orgfe3e73f" class="outline-2">
<h2 id="orgfe3e73f">Installing PostmarketOS</h2>
<div class="outline-text-2" id="text-orgfe3e73f">
<p>
PostmarketOS gained <a href="https://postmarketos.org/blog/2022/04/18/v21.12.4-release/">support for calling in the stable branch after I got my poco f1</a> and the distro <a href="https://postmarketos.org/download/">has prebuilt images for the poco f1</a>.
However, I like customizing my install via pmbootstrap and <a href="https://wiki.postmarketos.org/wiki/Xiaomi_Poco_F1_(xiaomi-beryllium)">followed the wiki</a> to find out which panel my device had and made sure pmbootstrap installed the right image.
Overall, installing postmarketOS+Sxmo with full disk encryption was no issue.
</p>
</div>
</div>

<div id="outline-container-org43a4eb7" class="outline-2">
<h2 id="org43a4eb7">Initial Setup</h2>
<div class="outline-text-2" id="text-org43a4eb7">
<p>
I used <code>rsync</code> to copy my <code>$HOME</code> directory and <code>/etc/apk/world</code> from my pinephone to the poco f1.
The notch was a bit annoying but Vitali64 told me I can add <code>bar { gaps 42 0 }</code> to my sway config to make sure the notch doesnt cover up UI elements.
Ideally, we will have gap support preconfigured for users in Sxmo via our deviceprofiles <sup><a id="fnr.3" class="footref" href="https://momi.ca/#fn.3" role="doc-backlink">3</a></sup>.
</p>


<div id="orge9c146c" class="figure">
<p><img src="../images/sxmopoco.jpg" alt="sxmopoco.jpg" />
</p>
<p><span class="figure-number">Figure 1: </span>Sxmo on the poco f1. Note the notch does not obstruct the UI.</p>
</div>

<p>
Calling support for devices other than the pinephone is supported in the git head of sxmo-utils when callaudiod and pipewire is installed.
I installed the git head of sxmo-utils and ran <code>apk add callaudiod pipewire</code>.
</p>
</div>
</div>

<div id="outline-container-org1972571" class="outline-2">
<h2 id="org1972571">What do I do on my phone</h2>
<div class="outline-text-2" id="text-org1972571">
<p>
I use my phone for the following things:
</p>
<ol class="org-ol">
<li>Calling and texting</li>
<li>Firefox: reading rss via <a href="https://miniflux.app/">miniflux</a>, watching videos via invidious/sxmo&rsquo;s youtube script, and reading fediverse posts</li>
<li>Dino: messaging friends and family on XMPP</li>
<li>Neomutt: reading emails</li>
<li>mpv: listening to music with my bluetooth headphones</li>
</ol>
</div>
</div>


<div id="outline-container-orgcd5313a" class="outline-2">
<h2 id="orgcd5313a">The Experience</h2>
<div class="outline-text-2" id="text-orgcd5313a">
</div>
<div id="outline-container-org3dd90e6" class="outline-3">
<h3 id="org3dd90e6">Calling/Texting</h3>
<div class="outline-text-3" id="text-org3dd90e6">
<p>
Calling does work with a caveat - sending DTMF tones doesnt work.
As such, you cannot interact with robocall systems.
This has been reported to upstream <sup><a id="fnr.4" class="footref" href="https://momi.ca/#fn.4" role="doc-backlink">4</a></sup> and someone in the SDM845 mainlining postmarketOS chat said they will eventually fix it.
</p>

<p>
Sometimes received texts appear multiple times in the text log but this might be a bug in Sxmo.
</p>
</div>
</div>

<div id="outline-container-orgb15bf3f" class="outline-3">
<h3 id="orgb15bf3f">Suspend</h3>
<div class="outline-text-3" id="text-orgb15bf3f">
<p>
Closely related to calling and texting is how the phone behaves when suspended.
The phone will not wake from suspend when you receive a call or a text.
As far as I can tell, the phone will not silently drop received calls or texts while it&rsquo;s in suspend.
Overall, the battery life on the poco f1 with Sxmo lasts me all day and the phone works well in suspend.
The phone connects to wifi very quickly when coming out of suspend.
In contrast, on the pinephone, I would wait forever for the radio to connect to wifi.
</p>
</div>
</div>

<div id="outline-container-org6f57e27" class="outline-3">
<h3 id="org6f57e27">Web Browsing</h3>
<div class="outline-text-3" id="text-org6f57e27">
<p>
The web browsing experience on the poco f1 with Sxmo is very smooth.
On the pinephone, the performance was so bad that I stopped using my phone.
This was very healthy for me but when I was out at a restaurant, I would often have to use my friend&rsquo;s phone to read the menu.
No more with the poco f1!
I can use firefox with all the privacy friendly addons I love and still have a very smooth experience.
No matter the benefits of the pinephone, I cannot give up the superior web browsing experience on the poco f1.
</p>
</div>
</div>

<div id="outline-container-org18416b4" class="outline-3">
<h3 id="org18416b4">Bluetooth</h3>
<div class="outline-text-3" id="text-org18416b4">
<p>
The Bluetooth devices connect quicker and the audio quality is better on the poco f1.
</p>
</div>
</div>

<div id="outline-container-org861c554" class="outline-3">
<h3 id="org861c554">Audio Speakers</h3>
<div class="outline-text-3" id="text-org861c554">
<p>
Aside from the slight echo the caller on the other side will hear, call audio is perfect on the poco f1 and much better than the pinephone.
However, the audio on the speakers is too low when playing media from firefox/mpv.
I am not sure whether this is cause of a bad configuration on my part and I will have to try out phosh to test.
</p>
</div>
</div>

<div id="outline-container-org2193b83" class="outline-3">
<h3 id="org2193b83">Dino/Neomutt/Everything Else</h3>
<div class="outline-text-3" id="text-org2193b83">
<p>
I would often run out of ram and cpu on the pinephone.
It&rsquo;s nice that postmarketOS uses musl which aims to have safety under resource exhaustion <sup><a id="fnr.5" class="footref" href="https://momi.ca/#fn.5" role="doc-backlink">5</a></sup>.
However, I had to close firefox/dino on the pinephone if I wanted to play gnome-chess or open some other app even on a lightweight UI like Sxmo.
With the poco f1&rsquo;s octacore cpu and 6 gb of ram, I no longer have issues with opening heavy webpages or opening multiple apps <sup><a id="fnr.6" class="footref" href="https://momi.ca/#fn.6" role="doc-backlink">6</a></sup>.
</p>
</div>
</div>

<div id="outline-container-org0253dfb" class="outline-3">
<h3 id="org0253dfb">Video playback</h3>
<div class="outline-text-3" id="text-org0253dfb">
<p>
I can finally watch 1080p videos in mpv smoothly without issues.
</p>
</div>
</div>
</div>

<div id="outline-container-org442ad8e" class="outline-2">
<h2 id="org442ad8e">Conclusion</h2>
<div class="outline-text-2" id="text-org442ad8e">
<p>
I will be daily driving my poco f1 while I wait for the pinephone pro to gain mainline support in postmarketOS <sup><a id="fnr.7" class="footref" href="https://momi.ca/#fn.7" role="doc-backlink">7</a></sup>.
Other than the robocall issue, I don&rsquo;t find any of the issues to be &ldquo;show stoppers&rdquo;.
It would be nice to have the camera working and gps working on the poco f1 but the experience is impressive so far.
The main issue I face day to day is the DTMF tones.
Sxmo users can expect better support for poco f1 and other devices as a result of me having a non pinephone device to test.
</p>

<p>
If you want to help support the SDM845 mainlining effort, see the postmarketOS wiki page <a href="https://wiki.postmarketos.org/wiki/Qualcomm_Snapdragon_845_(SDM845)">https://wiki.postmarketos.org/wiki/Qualcomm_Snapdragon_845_(SDM845)</a>.
We are very close to the days when we can buy cheap phones like we do cheap Thinkpads off ebay and install a privacy respecting OS.
</p>
</div>
</div>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">

<div class="footdef"><sup><a id="fn.1" class="footnum" href="https://momi.ca/#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
The whole point of having a &ldquo;Linux phone&rdquo; is to have a mainline kernel that can be support forever. I really don&rsquo;t want to use a heavily patched kernel.
</p></div></div>

<div class="footdef"><sup><a id="fn.2" class="footnum" href="https://momi.ca/#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://lineageosroms.com/beryllium/#unlocking-the-bootloader">https://lineageosroms.com/beryllium/#unlocking-the-bootloader</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.3" class="footnum" href="https://momi.ca/#fnr.3" role="doc-backlink">3</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://todo.sr.ht/~mil/sxmo-tickets/494">https://todo.sr.ht/~mil/sxmo-tickets/494</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.4" class="footnum" href="https://momi.ca/#fnr.4" role="doc-backlink">4</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/543">https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/543</a>
<a href="https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/542">https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/542</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.5" class="footnum" href="https://momi.ca/#fnr.5" role="doc-backlink">5</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="http://musl.libc.org/about.html">http://musl.libc.org/about.html</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.6" class="footnum" href="https://momi.ca/#fnr.6" role="doc-backlink">6</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
According to the postmarketOS wiki, some versions of the poco f1 have 8 gb of ram. I have the 6 gb version and it works great for me.
</p></div></div>

<div class="footdef"><sup><a id="fn.7" class="footnum" href="https://momi.ca/#fnr.7" role="doc-backlink">7</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
And probably after pinephone pro has mainline support in postmarketOS since the poco f1 is faster than the pinephone pro.
</p></div></div>


</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2022-03-31-sxmolibreplanet.html</guid>
<link>https://momi.ca/posts/2022-03-31-sxmolibreplanet.html</link>
<pubDate>Thu, 31 Mar 2022 00:00:00 -0700</pubDate>
<title>Sxmo Libreplanet 2022 Presentation</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Sxmo Libreplanet 2022 Presentation</h1>
<p class="date">Published 2022-03-31 on <a href="https://momi.ca/">Anjan's Homepage</a></p>
<p>
I recently gave a talk about <a href="https://sxmo.org">Sxmo</a> at the <a href="https://www.fsf.org/">Free Software Foundation</a>&rsquo;s <a href="https://libreplanet.org/2022/">Libreplanet</a> conference.
Sxmo is a collection of simple programs and scripts used together to create a fully functional mobile UI adhering to the Unix philosophy for phones that run <a href="https://postmarketos.org">postmarketOS</a> (a Linux distribution).
It&rsquo;s incredible how far Sxmo has come since <a href="https:momi.ca/posts/2021-05-18-sxmo.html">our presentation at last year&rsquo;s Alpineconf</a>.
Thanks to everyone who contributed to Sxmo and the FSF for having me!
</p>

<p>
The presentation covers recent developments and future goals with a Q&amp;A at the end.
You can watch the presentation of our project here:
</p>
<iframe title="Sxmo: Freedom on mobile devices through simplicity and hackability" src="https://framatube.org/videos/embed/66fcff64-d8f9-49c1-8deb-011b115786de" allowfullscreen="" sandbox="allow-same-origin allow-scripts allow-popups" width="560" height="315" frameborder="0"></iframe>

<p>
This video was editted using <a href="https://kdenlive.org/en/">Kdenlive</a> on my Alpine Linux desktop.
Lots of thanks to Kdenlive!
</p>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2022-02-04-sxmo-migrate.html</guid>
<link>https://momi.ca/posts/2022-02-04-sxmo-migrate.html</link>
<pubDate>Fri, 04 Feb 2022 00:00:00 -0800</pubDate>
<title>Sxmo Project Goals and the sxmo_migrate.sh on Upgrades Flaw</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Sxmo Project Goals and the sxmo_migrate.sh on Upgrades Flaw</h1>
<p class="date">Published 2022-02-04 on <a href="https://momi.ca/">Anjan's Homepage</a></p>
<p>
In every release of Sxmo, we have a message in the release notes stating the following:
</p>

<blockquote>
<p>
This release brings a lot of changes to sxmo configuration files and
hooks. Leaving your old configs can cause many issues so we recommend
you run <code>sxmo_migrate.sh</code> as soon as you upgrade.
</p>
</blockquote>

<p>
Users often do not read the release notes and join the irc channel to ask why their installs broke.
Exploring this issue should explain Sxmo project goals to new users while providing context for Sxmo requiring this annoying manual intervention from the user.
Moreover, in the upcoming postmarketOS stable release, we have a major improvement to this issue.
</p>

<p>
So lets begin with the first contribution I made to the Sxmo project.
I asked Miles Alan (the maintainer at the time) whether he would accept patches that automatically set defaults that would make firefox work better on mobile <sup><a id="fnr.1" class="footref" href="https://momi.ca/#fn.1" role="doc-backlink">1</a></sup>.
He said it&rsquo;s a good idea and that&rsquo;s where the trouble began - we defined Sxmo to be a distribution of minimal tools (dwm/dunst/st, sway/mako/foot/swaybar) that come with sane defaults for mobile but are infinitely extensible by the user.
The tension in our goals is between providing sane defaults for a set of tools that are developed independently of each other and still allowing for user extensibility.
For example, the statusbar would be annoying to configure for the user in these minimal tools but users often want the same things (modem states 4G/3G/etc., wifi status, battery, etc.).
On Sxmo, we have icons and everything just works by default.
However, we still allow users to customize and add whatever statuses they want to the status bar or remove things they don&rsquo;t care about.
The problem arises when the maintainers want to push a new default they think is good and users must merge these changes to their customized changes.
This problem happens across the Sxmo stack - we have a custom Sway config that enables hardware buttons, sets sway up to communicate with other tools in the stack, etc.
If an update in an upstream project is pushed, Sxmo must change to make sure the default config works and provide a mechanism to send this change to user&rsquo;s customized configurations.
</p>

<p>
So, what&rsquo;s the solution?
The value proposition of Sxmo is a system with sane defaults that&rsquo;s infinitely extensible.
If the user wanted a truly minimal solution with customizability - they can install the sway postmarketos ui metapackage and spend time customizing.
They can mix and match the Sxmo utilities as most of them are usable outside of Sxmo and available as packages in Alpine Linux <sup><a id="fnr.2" class="footref" href="https://momi.ca/#fn.2" role="doc-backlink">2</a></sup>.
The goal of Sxmo is a distribution of minimal tools that creates a complete mobile environment so we looked into helping users apply the new defaults that maintainers had pushed.
</p>


<p>
To help in migration, it was suggested we automatically edit user config files to migrate them.
This is not tenable because of how infinitely customizable Sxmo is and we would have a massive file made of sed commands that would override user&rsquo;s files - most Sxmo users would not like this including me.
In the other direction, it was suggested to make the configs more minimal and remove the default commands from the hooks for core functionality (ie. statusbar).
The best part about Sxmo is the community sourced defaults are amazing - I installed Sxmo on my pinephone pro and pretty much everything worked out of the box except for some minor issues.
This is before any of the Sxmo maintainers had a pinephone pro.
Moreover, I am consistently impressed by the improvements to usability caused by new recommended defaults.
</p>


<p>
Here is the solution we eventually came up with:
We created <code>sxmo_migrate.sh</code> which iterates through configs in the Sxmo stack and alerts users about the diffs between the default configuration and the config in their home directory.
Again, sometime these default config changes a critical so that programs in the stack can communicate with each other and work together with the new version of the scripts.
Many users would forget to run <code>sxmo_migrate.sh</code> and end up with installs that didn&rsquo;t have stuff working thinking it was a bug in Sxmo.
</p>

<p>
So for the 1.8.1 release that will be in postmarketOS stable, we have modified <code>sxmo_migrate.sh</code> to save users that don&rsquo;t read the release notes.
We now put a <code># configversion:</code> in each config and if the default configuration gets changed, the configversion in the default config will get incremented by the maintainers.
If the user&rsquo;s configversion is different than the configversion in the latest default config, we will use the default configuration for that program until the user runs <code>sxmo_migrate.sh</code>.
Only files with configversion incremented are shown and this prevents the firehose of config changes that users had to experience before.
After all, it is unlikely that your custom dunst config when Sxmo hasn&rsquo;t changed the dunst config will break anything.
The user can run <code>sxmo_migrate.sh all</code> to compare diffs of all the configurations and <code>sxmo_migrate.sh reset</code> to removes all user hooks and revert to default configurations.
The default start hook has been updated to alert the user when we have moved files in favor of defaults and how to migrate their configs.
Users should always upgrade Sxmo if and only if they have time to fix potential issues with their hooks and configs.
You can look at the whole patch and documentation of this feature here:
</p>

<dl class="org-dl">
<dt>Patch</dt><dd><a href="https://git.sr.ht/~mil/sxmo-utils/commit/1c07327fd84597f8702c3e6df2f5c9e155617e98#configs/default_hooks/start">https://git.sr.ht/~mil/sxmo-utils/commit/1c07327fd84597f8702c3e6df2f5c9e155617e98#configs/default_hooks/start</a></dd>
<dt>Documenation</dt><dd><a href="https://man.sr.ht/~anjan/sxmo-docs-next/USERGUIDE.md#strongupdate-migrationsstrong">https://man.sr.ht/~anjan/sxmo-docs-next/USERGUIDE.md#strongupdate-migrationsstrong</a></dd>
</dl>


<p>
I was very hesitant to put 1.8.0 release into postmarketOS stable because of this issue but Im happy we finally found a dare I say, okay solution.
PostmarketOS will soon allow for upgrading between stable releases so we could not postphone this issue for a major release.
The <a href="https://www.pine64.org/2022/01/31/pinephone-community-poll-results/">pine64 survey</a> showed a large number of people daily driving Sxmo on postmarketOS.
I am so happy that many people find Sxmo useful and I think this popularity is because we provide sane defaults to show off how easy Linux Mobile can be while allowing for extensibility that users could never get on an Android or Iphone.
Moreover the minimal stack runs well on phones with few resources.
Sxmo will still get out of your way if you write a custom hook but it will now be more insistent that you check the defaults on upgrades so you don&rsquo;t run into unnecessary bugs.
I remember when I first started using Sxmo and if I ran into issues, I could not ask anyone for help.
I don&rsquo;t want Sxmo to be a practice in obscurantism because more users means more modem testing, better upstream projects, more code contributions, and better help when I run into issues - I am somewhat selfish afterall.
At the same time, I don&rsquo;t want Sxmo lose its appeal among the most technical users that will help improve mobile Linux.
Nowadays, we have over 100 people in the irc channel and it&rsquo;s a helpful and wholesome community for learning and working together.
</p>

<p>
Thanks for reading to this post!
I hope this explains the <code>sxmo_migrate.sh</code> inconvenience when using Sxmo and I hope you continue to find Sxmo useful!
</p>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">

<div class="footdef"><sup><a id="fn.1" class="footnum" href="https://momi.ca/#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
The mail on the mailing list if you want to read it:
</p>

<ul class="org-ul">
<li><a href="https://lists.sr.ht/~mil/sxmo-devel/%3C87y2pcwo18.fsf%40momi.ca%3E">https://lists.sr.ht/~mil/sxmo-devel/%3C87y2pcwo18.fsf%40momi.ca%3E</a></li>
<li><a href="https://lists.sr.ht/~mil/sxmo-devel/%3C20200530093519.10967-1-anjan%40momi.ca%3E#%3Cd7f9a6fe-83a3-4a15-b5eb-9d236db33e74@www.fastmail.com%3E">https://lists.sr.ht/~mil/sxmo-devel/%3C20200530093519.10967-1-anjan%40momi.ca%3E#%3Cd7f9a6fe-83a3-4a15-b5eb-9d236db33e74@www.fastmail.com%3E</a></li>
</ul></div></div>

<div class="footdef"><sup><a id="fn.2" class="footnum" href="https://momi.ca/#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://sxmo.org/source/">https://sxmo.org/source/</a>
</p></div></div>


</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2022-01-11-goodFirstIssue.html</guid>
<link>https://momi.ca/posts/2022-01-11-goodFirstIssue.html</link>
<pubDate>Tue, 11 Jan 2022 00:00:00 -0800</pubDate>
<title>Onboarding New Contributors: Good First Issue Label</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Onboarding New Contributors: Good First Issue Label</h1>
<p class="date">Published 2022-01-11 on <a href="https://momi.ca/">Anjan's Homepage</a></p>
<p>
People sometimes ask me &ldquo;how do I get into contributing to Free software&rdquo;.
Contributing to Free software can be as difficult as starting a new job - you don&rsquo;t know where to start, the abbreviations everyone uses are foreign to you, and you&rsquo;re worried about embarrassing yourself <sup><a id="fnr.1" class="footref" href="https://momi.ca/#fn.1" role="doc-backlink">1</a></sup>.
Your motivation might vary but I got into Free software to learn and because it is fun!
Here is how I started contributing to Free software and maybe this post can provide Free software maintainers info on how to have a more welcoming project for newcomers:
</p>

<div id="outline-container-org4ddada4" class="outline-2">
<h2 id="org4ddada4">For New Contributors</h2>
<div class="outline-text-2" id="text-org4ddada4">
<ol class="org-ol">
<li><p>
Use Free software
</p>

<p>
This should be self explanatory but you should start by using as much Free software as you can.
Maybe the <a href="http://postmarketos.org/">phone operating system</a> that is easy to develop for and Free software cannot make phone calls.
All software starts off with missing crucial features!
If the software already worked and had everything you wanted, there would be nothing to add <sup><a id="fnr.2" class="footref" href="https://momi.ca/#fn.2" role="doc-backlink">2</a></sup>.
So look at Free software with an open mind and think of creative ways to use Free software that isn&rsquo;t really working.
</p>

<p>
For example, with postmarketOS, alot of phones have wifi working but dont have calls working.
As such, you can use an old phone that is just gathering dust in your drawer as a <a href="https://jellyfin.org/">media server</a>.
While you use the software, you will find stuff you want to fix, add, and by using the software you will learn how it&rsquo;s put together.
</p></li>

<li><p>
Join the irc/matrix/xmpp chatroom
</p>

<p>
This is where you can get real time help about what your working on.
Most Free software projects use irc and it&rsquo;s kind of hard to get into so I will cover it here:
As long as you follow <a href="https://man.sr.ht/chat.sr.ht/etiquette.md">irc etiquette</a>, no one will get upset with you.
To use irc, I can recommend <a href="https://chat.sr.ht">chat.sr.ht</a>, simply navigate to that site and login with your sourcehut account <sup><a id="fnr.3" class="footref" href="https://momi.ca/#fn.3" role="doc-backlink">3</a></sup>.
You can get a sourcehut account for free if you dont have one.
</p>

<p>
The irc chatroom is helpful if you need help with sending your changes, implementing your fix, or getting the code to compile.
</p></li>

<li><p>
Look at the issue tracker and stuff tagged as &ldquo;good first issues&rdquo;
</p>

<p>
The &ldquo;good first issue&rdquo; tag is very important.
Often, when I come across a fascinating new project and I want to poke around in the code, I check the issue tracker for &ldquo;good first issues&rdquo;.
In the project description or comments, there might be a maintainer that explains how this problem should be solved.
If you want your code to be merged into the main branch, you should follow these steps.
Going into the code and trying to solve these issues encourages me to read the code critically rather than just skimming.
Reading other people&rsquo;s code is a crucial skill and a great way to learn how to become a better programmer <sup><a id="fnr.4" class="footref" href="https://momi.ca/#fn.4" role="doc-backlink">4</a></sup>.
Additionally, you get a hit of dopamine when your change gets merged.
</p>

<p>
The important thing to recognize here is to just get something mostly working and ask intelligent questions if you&rsquo;re stuck <sup><a id="fnr.1.100" class="footref" href="https://momi.ca/#fn.1" role="doc-backlink">1</a></sup>.
The goal is to not write perfect code on the first try alone.
The goal is to write code that is good enough that others can build off.
I have posted alot of patches that didnt work so I added a &ldquo;WIP&rdquo; with what doesnt work and a couple weeks later, someone managed to salvage my code into something work <sup><a id="fnr.5" class="footref" href="https://momi.ca/#fn.5" role="doc-backlink">5</a></sup>.
</p></li>
</ol>


<p>
By doing enough good first issues (1-3), you get a good understanding of the codebase and are able to implement that feature you always wanted!
In this case, the maintainers and people in the irc channel will be happy to help you since they know you are a determined hacker.
</p>
</div>
</div>

<div id="outline-container-org4535363" class="outline-2">
<h2 id="org4535363">For Maintainers</h2>
<div class="outline-text-2" id="text-org4535363">
<p>
These are the steps I usually take when finding a new project to contribute to.
The main call to action for maintainers here is two-fold:
</p>

<ol class="org-ol">
<li><p>
Make sure your community is welcoming
</p>

<p>
The community you have will follow the leadership.
Although Free software is the most egalitarian form of computing, a lot of people in the community will still consider the behavior of the maintainer as what is acceptable.
So set a good example: warn people who don&rsquo;t follow the rules, and ensure people who violate your rules repeatedly are banned from your chatroom/issue tracker/etc.
New contributors are hard to come by so treat them well!
</p></li>

<li><p>
Document your issue tracker properly
</p>

<p>
The goal of the issue tracker is not to have 0 issues.
So if an issue is 7 years old, with documentation of workarounds and it&rsquo;s still a problem, leave it open!
Moreover, if you see an issue that would help on board a new contributor, set the &ldquo;good first issue&rdquo; label and write a description/comment on how it should be fixed.
If you have an issue that is not for a first time contributor but you don&rsquo;t have time to fix - set a &ldquo;help wanted&rdquo; label and write a description/comment on how it should be fixed.
</p>

<p>
A good example of an issue tracker that does this well is the <a href="https://gitlab.com/postmarketOS/pmbootstrap/-/issues">pmboostrap issue tracker</a>.
</p></li>
</ol>
</div>
</div>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">

<div class="footdef"><sup><a id="fn.1" class="footnum" href="https://momi.ca/#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
Sometimes you have to risk embarrassment to grow. Additionally, as someone who has sent a lot of embarrassing patches and read other bad patches, I can assure you, no one remembers your embarrassing moments. Moreover, sometimes a bad patch/attempt can spark an idea in someone else so even bad patches are appreciated.
</p></div></div>

<div class="footdef"><sup><a id="fn.2" class="footnum" href="https://momi.ca/#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
And no fame to claim!
</p></div></div>

<div class="footdef"><sup><a id="fn.3" class="footnum" href="https://momi.ca/#fnr.3" role="doc-backlink">3</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
If you want to use a desktop client, see: <a href="https://man.sr.ht/chat.sr.ht/quickstart.md">quickstart</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.4" class="footnum" href="https://momi.ca/#fnr.4" role="doc-backlink">4</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
grep, git-bisect (for regressions), and git-blame (for finding who to email and commit history) are your best friends when looking for how to fix an issue
</p></div></div>

<div class="footdef"><sup><a id="fn.5" class="footnum" href="https://momi.ca/#fnr.5" role="doc-backlink">5</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
Even if you dont think it&rsquo;s salvagable, it probably is. So send it! Someone can learn what has been tried.
</p></div></div>


</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2022-01-09-mpvscripts.html</guid>
<link>https://momi.ca/posts/2022-01-09-mpvscripts.html</link>
<pubDate>Sun, 09 Jan 2022 00:00:00 -0800</pubDate>
<title>Ditch plex/jellyfin/kodi (or worse Netflix)! My favorite mpv scripts</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Ditch plex/jellyfin/kodi (or worse Netflix)! My favorite mpv scripts</h1>
<p class="date">Published 2022-01-09 on <a href="https://momi.ca/">Anjan's Homepage</a></p>
<p>
<a href="https://mpv.io/">mpv</a> is my favorite video player.
It has <a href="https://github.com/mpv-player/mpv/wiki/User-Scripts">a lot of user scripts</a> written in a variety of programming languages.
Many people install jellyfin, plex, or kodi to emulate a netflix-like experience.
Here&rsquo;s how I am able to emulate a netflix-like experience with mpv using user scripts:
</p>

<div id="outline-container-org23feabd" class="outline-2">
<h2 id="org23feabd">skiptofade.lua</h2>
<div class="outline-text-2" id="text-org23feabd">
<p>
<a href="https://gist.github.com/bossen/3cfe86a6cdd61452dbb96865128fb327">skiptofade.lua</a> skips til a black screen appears.
This allows you to skip intros to shows very easily by pressing a keybinding.
The default keybinding to run this macro is <code>b</code>.
</p>
</div>
</div>

<div id="outline-container-org34b18e8" class="outline-2">
<h2 id="org34b18e8">nextfile.lua</h2>
<div class="outline-text-2" id="text-org34b18e8">
<p>
<a href="https://github.com/jonniek/mpv-nextfile">nextfile.lua</a> allows you to open the next or previous file from the directory the video currently open.
As such, when an episode finishes, you can press <code>shift+RIGHT</code> to go to the next episode.
</p>
</div>
</div>

<div id="outline-container-org8bf8f79" class="outline-2">
<h2 id="org8bf8f79">history-bookmark.lua</h2>
<div class="outline-text-2" id="text-org8bf8f79">
<p>
When you close a video, <a href="https://github.com/yuukidach/mpv-scripts#history-bookmarklua">history-bookmark.lua</a> will save a <code>.mpv.history</code> file in the directory from which the video is located.
Next time you open any file in that directory with mpv, history-bookmark.lua will prompt you to continue the last episode you watched from that directory.
Pressing <code>ENTER</code> will jump to the last episode you watched in that directory, pressing <code>n</code> or doing nothing will resume the episode you originally opened.
After adding <code>save-position-on-quit</code> to your mpv.conf and setting up a nfs share to share your media directory, you are able to sync your media watching history across devices.
</p>
</div>
</div>

<div id="outline-container-org2298fbd" class="outline-2">
<h2 id="org2298fbd">webm.lua</h2>
<div class="outline-text-2" id="text-org2298fbd">
<p>
<a href="https://github.com/ekisu/mpv-webm">webm.lua</a> allows you to easily make webms using clips of stuff you are viewing via mpv.
Press <code>Shift+w</code> to open up the onscreen instructions and activate the script&rsquo;s keybindings.
This script allows you to easily share funny clips of shows you are watching with your friends.
webm.lua is the easiest webm generator I have used.
</p>
</div>
</div>

<div id="outline-container-orgc434296" class="outline-2">
<h2 id="orgc434296">autosave.lua</h2>
<div class="outline-text-2" id="text-orgc434296">
<p>
Putting <code>save-position-on-quit</code> in your mpv.conf only updates your &ldquo;watch later&rdquo; data when mpv closes.
<a href="https://gist.github.com/Hakkin/5489e511bd6c8068a0fc09304c9c5a82">autosave.lua</a> is a simple script that periodically updates your &ldquo;watch later&rdquo; data.
It&rsquo;s very useful in case mpv crashes, Xorg/wayland crashes, etc.
</p>
</div>
</div>


<div id="outline-container-orgd964008" class="outline-2">
<h2 id="orgd964008">Firefox: openwith</h2>
<div class="outline-text-2" id="text-orgd964008">
<p>
mpv is the best video player and I always want to use it to watch videos.
I use <a href="https://github.com/iv-org/invidious">invidious</a> to look browse videos without youtube&rsquo;s bloated and privacy invading ui <sup><a id="fnr.1" class="footref" href="https://momi.ca/#fn.1" role="doc-backlink">1</a></sup>.
The Firefox plugin: <a href="https://addons.mozilla.org/en-US/firefox/addon/open-with/">Open with</a> allows you to easily open links with another browser.
I have add &ldquo;mpv&rdquo; as an application I want to open links with so that I can take advantage of all the scripts above whenever I&rsquo;m watching a video on the internet.
</p>

<p>
Opening videos with mpv is even <a href="https://qutebrowser.org/FAQ.html">easier in qutebrowser</a>.
</p>

<p>
Remember to install <a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a>, the successor to youtube-dl so that you can use mpv with most websites that serve video.
</p>

<p>
What are your favorite mpv scripts?
Feel free to leave a comment in my public inbox!
</p>
</div>
</div>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">

<div class="footdef"><sup><a id="fn.1" class="footnum" href="https://momi.ca/#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
You can setup links from youtube to automatically redirect to invidious using <a href="https://github.com/SimonBrazell/privacy-redirect">this plugin</a> for Firefox or modifying <a href="https://gitlab.com/jgkamat/dotfiles/-/blob/master/qutebrowser/.config/qutebrowser/pyconfig/redirectors.py">this script</a> for qutebrowser.
If you are using the qutebrowser script, remember to load <code>redirectors.py</code> in your <code>config.py</code> using according to the logic <a href="https://gitlab.com/jgkamat/dotfiles/-/blob/master/qutebrowser/.config/qutebrowser/config.py">here</a>.
</p></div></div>


</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2021-11-07-luksgrub.html</guid>
<link>https://momi.ca/posts/2021-11-07-luksgrub.html</link>
<pubDate>Sun, 07 Nov 2021 00:00:00 -0700</pubDate>
<title>Stuck on grub menu after Luks Full Disk Encryption (coreboot)</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Stuck on grub menu after Luks Full Disk Encryption (coreboot)</h1>
<p class="date">Published 2021-11-07 on <a href="https://momi.ca/">Anjan's Homepage</a></p>
<p>
I used <a href="https://1vyra.in/">ivyra1n</a> to install <a href="https://github.com/merge/skulls">skulls with seabios</a> payload on my x230.
However, after installing coreboot, I could not boot into a lot of distros after installing with their full disk encryption <sup><a id="fnr.1" class="footref" href="https://momi.ca/#fn.1" role="doc-backlink">1</a></sup> .
Here is fix and a potential workaround.
</p>

<p>
So I recently decided to try out <a href="https://www.devuan.org/">Devuan</a> because I don&rsquo;t like systemd on Debian.
I followed devuan&rsquo;s <a href="https://www.devuan.org/os/documentation/install-guides/beowulf/full-disk-encryption">Full Disk Ecryption guide</a>.
The install went fine, I booted and pressed enter on &ldquo;Devuan GNU/Linux&rdquo; in the grub menu.
After which, my computer display froze like this:
</p>


<div id="org8ecf1ea" class="figure">
<p><img src="../images/grub.jpg" alt="grub.jpg" />
</p>
<p><span class="figure-number">Figure 1: </span>Grub stuck on &ldquo;Loading Linux XX.XX; Loading initial ramdisk &#x2026;&rdquo; after I pressing enter on Devuan GNU/Linux</p>
</div>


<p>
I thought my computer froze but this is not the case <sup><a id="fnr.2" class="footref" href="https://momi.ca/#fn.2" role="doc-backlink">2</a></sup>.
If I type in my luks password and press enter, the computer boots fine.
In fact, I am writing this blog post booted into X11 on that laptop.
It seems that the computer is still active and just waiting for my luks password even though the display didnt update.
</p>

<p>
Before hopping to Devuan, I tried out <a href="https://guix.gnu.org/">gnu guix</a> <sup><a id="fnr.3" class="footref" href="https://momi.ca/#fn.3" role="doc-backlink">3</a></sup> .
Using gnu guix, I had the same issue in grub boot after install and someone in irc recommended I just type in my luks password.
However, someone else on irc had a solution to remove this issue forever for other users:
</p>


<p>
<a href="https://issues.guix.gnu.org/51619">https://issues.guix.gnu.org/51619</a>
</p>

<p>
Apparently the gnu guix kernel config was missing the coreboot framebuffer drivers.
I havent tested this patch but I plan to check if this fixes the issue on Devuan since it&rsquo;s the same problem. 
I decided to post this for people looking for a temporary workaround on distros that may have a similar issue.
</p>

<p>
Cheers!
</p>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">

<div class="footdef"><sup><a id="fn.1" class="footnum" href="https://momi.ca/#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
Gentoo, Void, and Debian (with calamares installer) worked fine. If I recall correctly, Debian with netinstall would freeze on grub.
</p></div></div>

<div class="footdef"><sup><a id="fn.2" class="footnum" href="https://momi.ca/#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
The reason the grub menu only takes up the top left screen is because I havent changed my grub menu according to <a href="https://github.com/merge/skulls/tree/master/x230#updating">the hint on the skulls readme</a>.
The computer boots fine and uses the entire screen.
</p></div></div>

<div class="footdef"><sup><a id="fn.3" class="footnum" href="https://momi.ca/#fnr.3" role="doc-backlink">3</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
I hopped off guix cause I had a really hard time learning guile and I needed this laptop to work. Maybe Ill try guix again in a virtual machine.
Some handy things about guix. To get dwm and st working, see <a href="https://gitlab.com/tkiat/guix-channel">tkiat&rsquo;s guix-channel</a> and customize it to your needs.
If you use startx and install it as user, make sure your xinitrc is setup like <a href="https://lists.gnu.org/archive/html/help-guix/2018-07/msg00080.html">Alex Kost&rsquo;s</a> recommendations on the mailing list.
My user wasn&rsquo;t added to the input group and that was required for X11 to detect my input devices (keyboard and mouse).
</p></div></div>


</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2021-10-29-multipleSourcehutMan.html</guid>
<link>https://momi.ca/posts/2021-10-29-multipleSourcehutMan.html</link>
<pubDate>Fri, 29 Oct 2021 00:00:00 -0700</pubDate>
<title>Sourcehut multiple documentation versions</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Sourcehut multiple documentation versions</h1>
<p class="date">Published 2021-10-29 on <a href="https://momi.ca/">Anjan's Homepage</a></p>
<p>
When using man.sr.ht for Sxmo&rsquo;s documentation we wanted to have three versions:
</p>

<ol class="org-ol">
<li>Documentation for the latest tagged stable release of the code in edge</li>
<li>Documentation for the latest git HEAD version of the code</li>
<li>Documentation for the latest tagged stable release in postmarketOS stable</li>
</ol>

<p>
Having three versions allows us to document features as we add them to the git HEAD or postmarketOS edge.
Additionally, we want to serve up an HTML version of both versions so that users of the git HEAD can read how the new features work and users of the stable releases don&rsquo;t get information about features that don&rsquo;t exist.
</p>

<p>
Ideally, man.sr.ht would have a drop down menu to select different git branches/tags of the git repo you feed it.
I opened an issue about this:
</p>

<p>
<a href="https://todo.sr.ht/~sircmpwn/man.sr.ht/53">https://todo.sr.ht/~sircmpwn/man.sr.ht/53</a>
</p>

<p>
For now, I had to find a workaround.
So I opened two man.sr.ht wikis and two git repos: sxmo-docs and sxmo-docs-next.
In sourcehut, each man.sr.ht wiki must point to a branch.
The sxmo-docs wiki points to the <code>master</code> branch on the sxmo-docs git repo and the sxmo-docs-next wiki points to the <code>develop</code> branch on the sxmo-docs-next git repo.
Here are the webpages for the man.sr.ht wikis and git.sr.ht git repos.
</p>

<div id="outline-container-orgc530fe6" class="outline-2">
<h2 id="orgc530fe6">man.sr.ht</h2>
<div class="outline-text-2" id="text-orgc530fe6">
<ul class="org-ul">
<li><a href="https://man.sr.ht/~anjan/sxmo-docs">https://man.sr.ht/~anjan/sxmo-docs</a></li>
<li><a href="https://man.sr.ht/~anjan/sxmo-docs-next">https://man.sr.ht/~anjan/sxmo-docs-next</a></li>
<li><a href="https://man.sr.ht/~anjan/sxmo-docs-stable">https://man.sr.ht/~anjan/sxmo-docs-stable</a></li>
</ul>
</div>
</div>


<div id="outline-container-org4392c36" class="outline-2">
<h2 id="org4392c36">git.sr.ht</h2>
<div class="outline-text-2" id="text-org4392c36">
<ul class="org-ul">
<li><a href="https://git.sr.ht/~anjan/sxmo-docs">https://git.sr.ht/~anjan/sxmo-docs</a></li>
<li><a href="https://git.sr.ht/~anjan/sxmo-docs-next">https://git.sr.ht/~anjan/sxmo-docs-next</a></li>
<li><a href="https://git.sr.ht/~anjan/sxmo-docs-stable">https://git.sr.ht/~anjan/sxmo-docs-stable</a></li>
</ul>

<p>
You might be wondering why I did this.
Often, I will fix the documentation in the stable version of the wiki (sxmo-docs) but since the git HEAD version of the code has that change too, I want to be able to rebase sxmo-docs-next on top of my commits to sxmo-docs.
Clearly this is a case where I would use git rebase.
Setting up the wiki and git repos like this, I am able to have one local repo on my machine with two branches and update both wikis with <code>git-rebase</code> <code>git-push</code>.
</p>

<p>
So locally, I have setup my remotes like this:
</p>

<div class="org-src-container">
<pre class="src src-sh">$ <span style="color: #ECBE7B;">git</span> remote -v
devel   <span style="color: #ECBE7B;">git</span>@git.sr.ht:~anjan/sxmo-docs-next <span style="color: #51afef;">(</span>fetch<span style="color: #51afef;">)</span>
devel   <span style="color: #ECBE7B;">git</span>@git.sr.ht:~anjan/sxmo-docs-next <span style="color: #51afef;">(</span>push<span style="color: #51afef;">)</span>
origin  <span style="color: #ECBE7B;">git</span>@git.sr.ht:~anjan/sxmo-docs <span style="color: #51afef;">(</span>fetch<span style="color: #51afef;">)</span>
origin  <span style="color: #ECBE7B;">git</span>@git.sr.ht:~anjan/sxmo-docs <span style="color: #51afef;">(</span>push<span style="color: #51afef;">)</span>
stable  <span style="color: #ECBE7B;">git</span>@git.sr.ht:~anjan/sxmo-docs-stable <span style="color: #51afef;">(</span>fetch<span style="color: #51afef;">)</span>
stable  <span style="color: #ECBE7B;">git</span>@git.sr.ht:~anjan/sxmo-docs-stable <span style="color: #51afef;">(</span>push<span style="color: #51afef;">)</span>
</pre>
</div>

<p>
And my branches are setup like this:
</p>

<div class="org-src-container">
<pre class="src src-sh">$ <span style="color: #ECBE7B;">git</span> branch
* develop
   master
   stable
</pre>
</div>


<p>
I can add commits to the master branch and use <code>git push origin master</code> to update the edge docs.
To update the development docs, I checkout the <code>develop</code> branch and use <code>git push develop develop</code> to update the develop docs.
To update the docs in postmarketOS stable, I checkout the <code>stable</code> branch and use <code>git push stable stable</code> to update the postmarketOS stable docs.
I can always rebase the <code>develop</code> branch on top of changes to the <code>master</code> branch.
</p>
</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2021-10-11-startxdebian.html</guid>
<link>https://momi.ca/posts/2021-10-11-startxdebian.html</link>
<pubDate>Mon, 11 Oct 2021 00:00:00 -0700</pubDate>
<title>Setup xinitrc (startx) and connect to DBUS (set DBUS_SESSION_BUS_ADDRESS) on Debian 11</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Setup xinitrc (startx) and connect to DBUS (set DBUS_SESSION_BUS_ADDRESS) on Debian 11</h1>
<p class="date">Published 2021-10-11 on <a href="https://momi.ca/">Anjan's Homepage</a></p>
<p>
I recently installed Debian 11 on a workstation and the <code>.xinitrc</code> I usually use on Gentoo (with openrc) and Alpine (also openrc) did not properly setup dbus (<code>$DBUS_SESSION_BUS_ADDRESS</code> env variable was empty).
I tried putting <code>export $(dbus-launch)</code> in my <code>.xinitrc</code> as stackexchange recommended but this did not fix the dbus environmental variables being unset.
<code>$DBUS_SESSION_BUS_ADDRESS</code> not being set is problematic as pinentry-gnome3 will not launch.
</p>

<p>
The fix comes from examining the example <code>xinitrc</code> with <code>cat /etc/X11/xinit/xinitrc</code> on Debian:
</p>

<div class="org-src-container">
<pre class="src src-shell"><span style="color: #5B6268;">#</span><span style="color: #5B6268;">!/bin/</span><span style="color: #51afef;">sh</span>

<span style="color: #5B6268;"># </span><span style="color: #5B6268;">/etc/X11/xinit/xinitrc</span>
<span style="color: #5B6268;">#</span>
<span style="color: #5B6268;"># </span><span style="color: #5B6268;">global xinitrc file, used by all X sessions started by xinit (startx)</span>

<span style="color: #5B6268;"># </span><span style="color: #5B6268;">invoke global X session script</span>
. /etc/X11/Xsession
</pre>
</div>

<p>
The global X session script runs a number of scripts located in <code>/etc/X11/Xsession.d/</code>.
Notably, to set the dbus environmental variables, <code>/etc/X11/Xsession</code> runs <code>/etc/X11/Xsession.d/20dbus_xdg-runtime</code>:
</p>

<div class="org-src-container">
<pre class="src src-shell"><span style="color: #5B6268;"># </span><span style="color: #5B6268;">vim:set ft=sh sw=2 sts=2 et:</span>

<span style="color: #51afef;">if</span> <span style="color: #51afef;">[</span> -z <span style="color: #98be65;">"</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">DBUS_SESSION_BUS_ADDRESS</span><span style="color: #98be65;">"</span> <span style="color: #51afef;">]</span> &amp;&amp; <span style="color: #51afef;">[</span> -n <span style="color: #98be65;">"</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">XDG_RUNTIME_DIR</span><span style="color: #98be65;">"</span> <span style="color: #51afef;">]</span> &amp;&amp; <span style="color: #98be65;">\</span>
    <span style="color: #51afef;">[</span> <span style="color: #98be65;">"</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">XDG_RUNTIME_DIR</span><span style="color: #98be65;">"</span> = <span style="color: #98be65;">"/run/user/</span><span style="color: #51afef; font-weight: bold;">`id -u`</span><span style="color: #98be65;">"</span> <span style="color: #51afef;">]</span> &amp;&amp; <span style="color: #98be65;">\</span>
    <span style="color: #51afef;">[</span> -S <span style="color: #98be65;">"</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">XDG_RUNTIME_DIR</span><span style="color: #98be65;">/bus"</span> <span style="color: #51afef;">]</span>; <span style="color: #51afef;">then</span>
  <span style="color: #5B6268;"># </span><span style="color: #5B6268;">We are under systemd-logind or something remarkably similar, and</span>
  <span style="color: #5B6268;"># </span><span style="color: #5B6268;">a user-session socket has already been set up.</span>
  <span style="color: #5B6268;">#</span>
  <span style="color: #5B6268;"># </span><span style="color: #5B6268;">Be nice to non-libdbus, non-sd-bus implementations by using</span>
  <span style="color: #5B6268;"># </span><span style="color: #5B6268;">that as the session bus address in the environment. The check for</span>
  <span style="color: #5B6268;"># </span><span style="color: #5B6268;">XDG_RUNTIME_DIR = "/run/user/`id -u`" is because we know that</span>
  <span style="color: #5B6268;"># </span><span style="color: #5B6268;">form of the address, from systemd-logind, doesn't need escaping,</span>
  <span style="color: #5B6268;"># </span><span style="color: #5B6268;">whereas arbitrary addresses might.</span>
  <span style="color: #dcaeea;">DBUS_SESSION_BUS_ADDRESS</span>=<span style="color: #98be65;">"unix:path=</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">XDG_RUNTIME_DIR</span><span style="color: #98be65;">/bus"</span>
  <span style="color: #c678dd;">export</span> DBUS_SESSION_BUS_ADDRESS
<span style="color: #51afef;">fi</span>

<span style="color: #51afef;">if</span> <span style="color: #51afef;">[</span> -x <span style="color: #98be65;">"/usr/bin/dbus-update-activation-environment"</span> <span style="color: #51afef;">]</span>; <span style="color: #51afef;">then</span>
  <span style="color: #5B6268;"># </span><span style="color: #5B6268;">tell dbus-daemon --session (and systemd --user, if running)</span>
  <span style="color: #5B6268;"># </span><span style="color: #5B6268;">to put a minimal subset of the Xsession's environment in activated</span>
  <span style="color: #5B6268;"># </span><span style="color: #5B6268;">services' environments</span>
  dbus-update-activation-environment --verbose --systemd <span style="color: #98be65;">\</span>
    DBUS_SESSION_BUS_ADDRESS DISPLAY XAUTHORITY
<span style="color: #51afef;">fi</span>
</pre>
</div>

<p>
dbus-update-activation-environment uses systemd to set the environmental variables:
</p>

<blockquote>
<p>
&#x2013;systemd
    Set environment variables for systemd user services as well as for traditional D-Bus session services.
</p>
</blockquote>

<p>
Source: dbus-update-activation-environment manpage
</p>

<p>
To recap, if you dont have a display manager and want to use startx, you should use the example xinitrc (<code>/etc/X11/xinit/xinitrc</code>) that will setup a lot of stuff that you probably need in a Xorg session.
But, you likely have some custom programs that you need to launch before your window manager.
The default Xsession script allows for user defined script to ran (<code>grep XSESSION /etc/X11/Xsession</code>):
</p>

<div class="org-src-container">
<pre class="src src-shell"><span style="color: #dcaeea;">USERXSESSION</span>=$<span style="color: #dcaeea;">HOME</span>/.xsession
<span style="color: #dcaeea;">USERXSESSIONRC</span>=$<span style="color: #dcaeea;">HOME</span>/.xsessionrc
<span style="color: #dcaeea;">ALTUSERXSESSION</span>=$<span style="color: #dcaeea;">HOME</span>/.Xsession
</pre>
</div>


<div id="outline-container-org350b60c" class="outline-2">
<h2 id="org350b60c">Summary of Fix</h2>
<div class="outline-text-2" id="text-org350b60c">
<p>
As such, we can move our old xinitrc that launches programs (dwm, sxhkd, redshift, mpd, etc) to <code>$HOME/.xsession</code> and <code>startx</code> will run <code>/etc/X11/xinit/xinitrc</code>
It is recommended to use <code>.xsession</code> over <code>.xsessionrc</code> <sup><a id="fnr.1" class="footref" href="https://momi.ca/#fn.1" role="doc-backlink">1</a></sup> <sup>, </sup><sup><a id="fnr.2" class="footref" href="https://momi.ca/#fn.2" role="doc-backlink">2</a></sup>.
</p>

<div class="org-src-container">
<pre class="src src-shell"><span style="color: #ECBE7B;">mv</span> $<span style="color: #dcaeea;">HOME</span>/.xinitrc $<span style="color: #dcaeea;">HOME</span>/.xsession
</pre>
</div>

<p>
Note: the file <code>$HOME/.xinitrc</code> should not exist so that <code>/etc/X11/xinit/xinitrc</code> is ran.
</p>

<p>
Finally!
We have dwm working with dbus.
More importantly, as the distro maintainers determine other boilerplate commands that need to be run in xinitrc, your setup will automatically load those commands.
</p>
</div>
</div>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">

<div class="footdef"><sup><a id="fn.1" class="footnum" href="https://momi.ca/#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://unix.stackexchange.com/questions/281858/difference-between-xinitrc-xsession-and-xsessionrc">https://unix.stackexchange.com/questions/281858/difference-between-xinitrc-xsession-and-xsessionrc</a> 
</p></div></div>

<div class="footdef"><sup><a id="fn.2" class="footnum" href="https://momi.ca/#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<code>.xsessionrc</code> is read before debian&rsquo;s default Xsession and <code>.xsession</code> will be read after. If you have conflicting settings, yours could get overridden. <a href="https://wiki.debian.org/Xsession">https://wiki.debian.org/Xsession</a>
</p></div></div>


</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2021-09-02-costbenifitsurveillence.html</guid>
<link>https://momi.ca/posts/2021-09-02-costbenifitsurveillence.html</link>
<pubDate>Thu, 02 Sep 2021 00:00:00 -0700</pubDate>
<title>How and Why the Benefits of Mass Surveillence are Overestimated While the Costs are Undermined</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">How and Why the Benefits of Mass Surveillence are Overestimated While the Costs are Undermined</h1>
<p class="date">Published 2020-09-02 on <a href="https://momi.ca/">Anjan's Homepage</a></p>

<div id="outline-container-orgd4b396c" class="outline-2">
<h2 id="orgd4b396c">How much surveillance till we are safe?</h2>
<div class="outline-text-2" id="text-orgd4b396c">
<p>
Proponents of the current mass surveillance state are quick to point out that there is a trade off between security and privacy.
The argument is - we live in such a dangerous world, we need to trade all if not most of our privacy for some sense of security.
However, in this &ldquo;trade off&rdquo;, there is no criterion for when the surveillance state has failed.
Recall in January 2021, thousands of Trump supporters raided the capitol hill building.
No one in the mainstream media has suggested that the world&rsquo;s most well funded and well equiped mass surveillance state had <b>failed</b> at preventing this insurrection.
Quite the opposite, every single national threat is treated as an advertisement for further privacy violations even though previous privacy violations have not delivered on their promises of security.
There must be discussion of a criterion for when the surveillance state has overstepped and criterion for ending the surveillance program in order to properly address this trade off.
When politicians bring up security without this criterion, it is a method of sandbagging and fearmongering to prevent further discussion.
</p>
</div>
</div>

<div id="outline-container-org766a72a" class="outline-2">
<h2 id="org766a72a">Not placing bounds on surveillance is preventing us from addressing social issues</h2>
<div class="outline-text-2" id="text-org766a72a">
<p>
After the capitol hill insurrection, many people drew a contrast between how black lives matter was treated by the police state in the Summer of 2020 versus the insurrectionists on capitol hill.
Even though the vast majority of black lives matter protests were peaceful, they were treated unjustly by the police state in many cases
This was partly because of racial prejudice that exists in the justice system but also because black lives matter protestors  were actively calling for the defunding of police.
To protect their massively inflated budgets, the police state unfairly targeted black lives matter.
It&rsquo;s not the danger these events presented that called for the amount of force used in each event but their political ambitions.
In many cases, the FBI would use facial recognition to find people participating in the black lives matter protests that had not paid bail.
It&rsquo;s likely that the fear of surveillance caused the same communities most effected by the police state, unable to exercise their rights for change.
Self-censorship as a result of intimidation by the surveillance state is scarier than any state censorship because self-censorship is largely invisible.
When the state censors a book, it makes the library&rsquo;s &ldquo;National Banned Books&rdquo; list and it often causes the material to be more popular than before <sup><a id="fnr.1" class="footref" href="https://momi.ca/#fn.1" role="doc-backlink">1</a></sup>.
However, the self-censor is more brutal than any censor could ever be - state that the library will provide police with records of which patrons take out which books and watch as the most controversial books are left unread <sup><a id="fnr.2" class="footref" href="https://momi.ca/#fn.2" role="doc-backlink">2</a></sup>.
</p>

<blockquote>
<p>
Self-censorship means reading your own text with the eyes of another person, a situation where you become your own judge, stricter and more suspicious than anyone else.
You the author know what no outside censor could ever discover: your most secret, unspoken thoughts which nonetheless you feel must be obvious to others “between the lines”&#x2026;
Therefore, you attribute to this imaginary censor faculties which you yourself do not possess, and to the text a significance which it actually does not have.
For your alter ego pursues your thoughts ad absurdum, until the dizzy end where everything is subversive, where to tread is dangerous and condemnable.
</p>
</blockquote>

<p>
Source: <a href="https://edwardsnowden.substack.com/p/on-censorship-pt-1">The Most Dangerous Censorship</a> - Edward Snowden
</p>

<p>
This self censorship is more pervasive and should scare anyone that values democracy.
One cannot state that citizens have a right to protest and right to read (among other rights) if the intimidation presented by mass surveillence is so great that citizens are afraid to exercise those rights.
</p>

<p>
In a Canadian context, the CSIS (Canadian spy agency) often spends it&rsquo;s valuable resources intimidating climate change activists and first nations communities <sup><a id="fnr.3" class="footref" href="https://momi.ca/#fn.3" role="doc-backlink">3</a></sup>.
Climate change is a national security threat and will cause massive social unrest.
However, with society&rsquo;s psychology surrounding the causes of social unrest, it is likely that this will be blamed on people having too much privacy rather than our inability to discuss the root cause of these issues.
In the pursuit of peace with justice, we must acknowledge mass surveillance for what it is - a tool to preserve the status quo and silence movements for change that address the root cause of issues.
</p>
</div>
</div>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">

<div class="footdef"><sup><a id="fn.1" class="footnum" href="https://momi.ca/#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
See the Streisand effect: <a href="https://en.wikipedia.org/wiki/Streisand_effect">https://en.wikipedia.org/wiki/Streisand_effect</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.2" class="footnum" href="https://momi.ca/#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
Librarians understand the threat mass surveillance presents to academic freedom and actively work to improve their technology around emerging privacy threats: <a href="https://www.washingtonpost.com/news/the-switch/wp/2014/10/03/librarians-wont-stay-quiet-about-government-surveillance/">https://www.washingtonpost.com/news/the-switch/wp/2014/10/03/librarians-wont-stay-quiet-about-government-surveillance/</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.3" class="footnum" href="https://momi.ca/#fnr.3" role="doc-backlink">3</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
BCCLA: Protest Papers: <a href="https://bccla.org/secret-spy-hearings/">https://bccla.org/secret-spy-hearings/</a>
Toronto Star: <a href="https://www.thestar.com/vancouver/2019/07/09/protest-papers-reveal-extent-canadian-democracy-is-captured-by-foreign-oil-companies-says-critic.html">‘Protest Papers’ reveal extent Canadian democracy is ‘captured’ by foreign oil companies, says former Alberta MLA</a> 
</p></div></div>


</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2021-06-03-fsw-freetools.html</guid>
<link>https://momi.ca/posts/2021-06-03-fsw-freetools.html</link>
<pubDate>Thu, 03 Jun 2021 00:00:00 -0700</pubDate>
<title>Recommended Watch/Read: Free Software Needs Free Tools</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Recommended Watch/Read: Free Software Needs Free Tools</h1>
<p class="date">Published 2020-06-03 on <a href="https://momi.ca/">Anjan's Homepage</a></p>
<p>
Signal boosting the excellent <a href="https://mako.cc/writing/hill-free_tools.html">blog post</a> and talk &ldquo;Free Software Needs Free Tools&rdquo; by <a href="https://mako.cc/">Benjamin Mako Hill</a> in which he gives the story of how git was created.
</p>

<iframe width="560" height="315" sandbox="allow-same-origin allow-scripts allow-popups" src="https://diode.zone/videos/embed/2ac71859-4ded-44e9-81fc-b4a9c1af4536" frameborder="0" allowfullscreen></iframe>

<p>
I agree with most if not all his recommendations following the story.
Personally, I have been paying for a <a href="https://sourcehut.org/">sourcehut</a> membership for a while now and this story is the reason I continuously renew my paid account (aside from the fact sourcehut is amazing to develop on).
</p>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2021-05-18-sxmo.html</guid>
<link>https://momi.ca/posts/2021-05-18-sxmo.html</link>
<pubDate>Tue, 18 May 2021 00:00:00 -0700</pubDate>
<title>Sxmo Alpineconf 2021 Presentation</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Sxmo Alpineconf 2021 Presentation</h1>
<p class="date">Published 2021-05-18 on <a href="https://momi.ca/">Anjan's Homepage</a></p>
<p>
I recently gave a talk about <a href="https://sr.ht/~mil/Sxmo/">Sxmo</a> at Alpineconf.
Sxmo is a collection of simple and suckless X programs and scripts used together to create a fully functional mobile UI adhering to the Unix philosophy for the Pinephone.
I have been co-maintaining and contributing the project for a year now and it was fun to share our progress with the community.
</p>


<p>
You can watch a presentation of our project here:
</p>
<iframe width="560" height="315" sandbox="allow-same-origin allow-scripts allow-popups" src="https://diode.zone/videos/embed/3f0948cf-47df-437e-b1ea-76fec58479c2" frameborder="0" allowfullscreen></iframe>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2020-08-28-sendxmpp.html</guid>
<link>https://momi.ca/posts/2020-08-28-sendxmpp.html</link>
<pubDate>Fri, 28 Aug 2020 00:00:00 -0700</pubDate>
<title>sendxmpp as a replacement for mail(1)</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">sendxmpp as a replacement for mail(1)</h1>
<p class="date">Published 2020-08-28 on <a href="https://momi.ca/">Anjan's Homepage</a></p>
<p>
Tools like cron use mail(1) to notify the server admin of failing services.
It is trivial to <a href="http://www.postfix.org/STANDARD_CONFIGURATION_README.html#null_client">configure postfix to only send mail</a>.
However, moving to my new server, the mail port (port 25) is blocked by my internet service provider and I cannot send email from my network.
I could use something like <a href="https://marlam.de/msmtp/">msmtp</a> to have my email service provider (migadu, gmail, etc.) send my emails for me but I would be using up my daily outgoing message quota.
To avoid running into this limit, I looked to employ a different protocol - xmpp.
</p>

<div id="outline-container-org9f584f0" class="outline-2">
<h2 id="org9f584f0">go-sendxmpp</h2>
<div class="outline-text-2" id="text-org9f584f0">
<p>
<a href="https://salsa.debian.org/mdosch/go-sendxmpp">go-sendxmpp</a> is a command line replacement for mail command on linux.
It allows reading in from stdin and sending xmpp messages to anyone on the xmpp network including multi user chatrooms.
The <a href="https://sendxmpp.hostname.sk/">original program</a> was written in perl but I could not package it for alpine linux.
I prefer the go implementation because it compiles into a single binary that I can copy to all my machines.
Go&rsquo;s binaries are statically linked by default so if most of my system is falling apart, it&rsquo;s more likely I will get a message that my system is falling apart.
</p>

<p>
The program&rsquo;s documentation is great for installing and setting up go-sendxmpp.
However, there is one mistake in the documentation as it says the config file must contain:
</p>

<pre class="example">
username: &lt;your_jid&gt;
jserver: &lt;jabber_server&gt;
port: &lt;jabber_port&gt;
password: &lt;your_jabber_password&gt;
</pre>

<p>
My xmpp server uses default settings so I was able to get go-sendxmpp working with:
</p>

<pre class="example">
username: &lt;your_jid&gt;
password: &lt;your_jabber_password&gt;
</pre>

<p>
Since this file will stored unencrypted <sup><a id="fnr.1" class="footref" href="https://momi.ca/#fn.1" role="doc-backlink">1</a></sup> on multiple possibly insecure computers, it is wise to make a new jabber account to send yourself notifications.
</p>
</div>
</div>

<div id="outline-container-org33e8bce" class="outline-2">
<h2 id="org33e8bce">Server</h2>
<div class="outline-text-2" id="text-org33e8bce">
</div>
<div id="outline-container-org21fb5c7" class="outline-3">
<h3 id="org21fb5c7">Message on ssh login</h3>
<div class="outline-text-3" id="text-org21fb5c7">
<blockquote>
<p>
When changing the sshd config, make sure you leave the terminal from which you are editing the config open and login from a new terminal window.
It is very easy to lock yourself out of your own computer when configuring sshd.
</p>
</blockquote>

<p>
The first thing I setup upon discovering go-sendxmpp was a message on ssh login.
</p>

<p>
On alpinelinux, I installed the following packages:
</p>

<div class="org-src-container">
<pre class="src src-sh"> doas apk add openssh-server-pam linux-pam
</pre>
</div>

<p>
Then, I opened <code>/etc/ssh/sshd_config</code> and set:
</p>

<pre class="example">
 UsePAM yes
</pre>

<p>
Finally, I made a script to send messages on login <sup><a id="fnr.2" class="footref" href="https://momi.ca/#fn.2" role="doc-backlink">2</a></sup>:
</p>

<div class="org-src-container">
<pre class="src src-sh"> server:~$ doas <span style="color: #ECBE7B;">cat</span> /etc/ssh/login-notify.sh
 <span style="color: #5B6268;">#</span><span style="color: #5B6268;">!/bin/sh</span>

 <span style="color: #5B6268;"># </span><span style="color: #5B6268;">Change these two lines:</span>
 <span style="color: #dcaeea;">SENDXMPP_CONFIG</span>=<span style="color: #98be65;">"/home/anjan/.sendxmpprc"</span>
 <span style="color: #dcaeea;">RECIPIENT</span>=<span style="color: #98be65;">"anjan -at- momi.ca"</span>

 <span style="color: #51afef;">if</span> <span style="color: #51afef;">[</span> <span style="color: #98be65;">"</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">PAM_TYPE</span><span style="color: #98be65;">"</span> != <span style="color: #98be65;">"close_session"</span> <span style="color: #51afef;">]</span>; <span style="color: #51afef;">then</span>
         <span style="color: #dcaeea;">host</span>=<span style="color: #98be65;">"</span><span style="color: #51afef; font-weight: bold;">`hostname`</span><span style="color: #98be65;">"</span>

         <span style="color: #5B6268;"># </span><span style="color: #5B6268;">do not send message if Im sshing from a known ip address</span>
         <span style="color: #51afef;">[</span> <span style="color: #98be65;">"</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">PAM_RHOST</span><span style="color: #98be65;">"</span> = <span style="color: #98be65;">"192.168.1.1"</span> <span style="color: #51afef;">]</span> &amp;&amp; <span style="color: #51afef;">exit</span> <span style="color: #da8548; font-weight: bold;">0</span> 
         <span style="color: #dcaeea;">subject</span>=<span style="color: #98be65;">"SSH Login: </span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">PAM_USER</span><span style="color: #98be65;"> from </span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">PAM_RHOST</span><span style="color: #98be65;"> on </span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">host</span><span style="color: #98be65;">"</span>
         <span style="color: #5B6268;"># </span><span style="color: #5B6268;">Message to send, e.g. the current environment variables.</span>
         <span style="color: #dcaeea;">message</span>=<span style="color: #98be65;">"</span><span style="color: #51afef; font-weight: bold;">`env`</span><span style="color: #98be65;">"</span>
         <span style="color: #ECBE7B;">echo</span> <span style="color: #98be65;">"</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">message</span><span style="color: #98be65;">"</span> | /home/anjan/go/bin/go-sendxmpp -f <span style="color: #98be65;">"</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">SENDXMPP_CONFIG</span><span style="color: #98be65;">"</span>  <span style="color: #98be65;">"</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">RECIPIENT</span><span style="color: #98be65;">"</span>
 <span style="color: #51afef;">fi</span>
</pre>
</div>

<p>
Finally, I enabled my login script by adding the following line to <code>/etc/pam.d/sshd</code>:
</p>

<pre class="example">
 session optional pam_exec.so seteuid /etc/ssh/login-notify.sh
</pre>

<p>
Make sure you restart the sshd service.
</p>

<p>
Now, when I log onto my server from an external IP address, I get an xmpp message.
</p>
</div>
</div>

<div id="outline-container-orgb8e299e" class="outline-3">
<h3 id="orgb8e299e">Cron</h3>
<div class="outline-text-3" id="text-orgb8e299e">
<p>
go-sendxmpp is trivial to use in a cronjob.
For example, to check every 20 minutes if my server was running out of system resources, I put the following commands in my crontab:
</p>

<pre class="example">
#min    hour    day     month   weekday cmd
*/20    *       *       *       *       [ `df -h | grep sda3 | awk '{ print $5 }' | sed 's/%//'` -gt 20 ] &amp;&amp; echo "server: space taken up on /" | ~/go/bin/go-sendxmpp anjan -at- momi.ca
*/20    *       *       *       *       cat /proc/loadavg | awk '{print $1}' | awk '{ if($1 &gt; 0.50) printf("server: Current CPU Utilization is: %.2f%\n"), $0;}' | ~/go/bin/go-sendxmpp anjan -at- momi.ca
*/20    *       *       *       *       free | grep Mem | awk '{print $3/$2 * 100.0}' | awk '{ if($1 &gt; 50) printf("server: Current Ram Utilization is: %.2f%\n"), $0;}' | ~/go/bin/go-sendxmpp anjan -at- momi.ca
</pre>

<p>
Alpine also has an <a href="https://pkgs.alpinelinux.org/package/edge/testing/x86/apk-autoupdate">autoupdate program</a> you can set up as a cronjob.
I like running updates manually but if I was running updates automatically, I would send the output of the auto update cronjob to go-sendxmpp.
</p>
</div>
</div>
</div>

<div id="outline-container-orga9a2a1f" class="outline-2">
<h2 id="orga9a2a1f">Pinephone</h2>
<div class="outline-text-2" id="text-orga9a2a1f">
<p>
I am using <a href="https://sr.ht/~mil/Sxmo/">sxmo</a> on my pinephone which allows the user to define commands to run when the phone receives a call or text.
Most people use this feature to setup a script to switch to the speaker sink, set volume to 100%, and tell mpv to play a ringing sound.
My android phone required constant babysitting where I would have to consider when I cannot have my phone ring (sleeping, before meetings, etc.) and I needed to remember to put my phone on silent.
Keeping my phone on silent all the time caused me miss calls and texts because I wouldn&rsquo;t pay attention to it.
</p>

<p>
Introducing go-sendxmpp - no babysitting required, I will never miss a call/text, and my phone will never ring at an inopportune times.
</p>
</div>

<div id="outline-container-org840ebac" class="outline-3">
<h3 id="org840ebac">xmpp message on new text or call</h3>
<div class="outline-text-3" id="text-org840ebac">
<p>
For sms messages, enter the following into <code>$XDG_CONFIG_HOME/sxmo/hooks/sms</code>:
</p>

<div class="org-src-container">
<pre class="src src-sh"><span style="color: #dcaeea;">INCOMING_NUMBER</span>=<span style="color: #98be65;">"</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">1</span><span style="color: #98be65;">"</span>
<span style="color: #ECBE7B;">echo</span> <span style="color: #98be65;">"Pinephone text from: </span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">INCOMING_NUMBER</span><span style="color: #98be65;">"</span> | go-sendxmpp anjan -at- momi.ca
</pre>
</div>

<p>
For call messages, enter the following into <code>$XDG_CONFIG_HOME/sxmo/hooks/ring</code>:
</p>

<div class="org-src-container">
<pre class="src src-sh"><span style="color: #dcaeea;">INCOMING_NUMBER</span>=<span style="color: #98be65;">"</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">1</span><span style="color: #98be65;">"</span>
<span style="color: #ECBE7B;">echo</span> <span style="color: #98be65;">"Pinephone Call from: </span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">INCOMING_NUMBER</span><span style="color: #98be65;">"</span> | go-sendxmpp anjan -at- momi.ca
</pre>
</div>

<p>
Replace &ldquo;anjan -at- momi.ca&rdquo; with your own jabberid and set the run permissions on the <code>ring</code> and <code>sms</code> files.
</p>
</div>
</div>

<div id="outline-container-orgfbeb602" class="outline-3">
<h3 id="orgfbeb602">notification on low battery</h3>
<div class="outline-text-3" id="text-orgfbeb602">
<p>
I added the following line to my cronjob:
</p>

<div class="org-src-container">
<pre class="src src-sh">*/10    *       *       *       *       <span style="color: #51afef;">[</span> <span style="color: #51afef; font-weight: bold;">`</span><span style="color: #51afef; font-weight: bold;">cat</span><span style="color: #51afef; font-weight: bold;"> /sys/class/power_supply/axp20x-battery/capacity`</span> -le <span style="color: #da8548; font-weight: bold;">30</span> <span style="color: #51afef;">]</span> &amp;&amp; <span style="color: #51afef;">[</span> <span style="color: #51afef; font-weight: bold;">`</span><span style="color: #51afef; font-weight: bold;">cat</span><span style="color: #51afef; font-weight: bold;"> /sys/class/power_supply/axp20x-battery/status`</span> = <span style="color: #98be65;">"Discharging"</span> <span style="color: #51afef;">]</span> &amp;&amp; <span style="color: #ECBE7B;">echo</span> <span style="color: #98be65;">"pinephone low battery"</span> | ~/.config/go/bin/go-sendxmpp anjan -at- momi.ca
</pre>
</div>

<p>
I never forget to charge my phone now.
</p>
</div>
</div>
</div>

<div id="outline-container-orgc4e7ce3" class="outline-2">
<h2 id="orgc4e7ce3">Conclusion</h2>
<div class="outline-text-2" id="text-orgc4e7ce3">
<p>
go-sendxmpp allows for a universal, easy to setup notification system for all your *nix devices.
Furthermore, it shows the advantages of using a unix-like operating system for things that are commonly not tradition unix boxes (ie. your phone).
</p>

<p>
Try out go-sendxmpp.
Can you think of other uses for a service like this?
If so, feel free to send an email to my public-inbox.
</p>
</div>
</div>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">

<div class="footdef"><sup><a id="fn.1" class="footnum" href="https://momi.ca/#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
You can use <a href="https://www.passwordstore.org/">pass</a> to encrypt your password. However, I am going to be using sendxmpp on a server and automating unlocking the private key will be as insecure as saving the password in plaintext.
</p></div></div>

<div class="footdef"><sup><a id="fn.2" class="footnum" href="https://momi.ca/#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
Taken from StackExchange user Fritz See: <a href="https://askubuntu.com/posts/448602/revisions">https://askubuntu.com/posts/448602/revisions</a>
</p></div></div>


</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2020-08-23-analytics.html</guid>
<link>https://momi.ca/posts/2020-08-23-analytics.html</link>
<pubDate>Sun, 23 Aug 2020 00:00:00 -0700</pubDate>
<title>GoAccess - You do not need proprietary javascript to get analytics</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">GoAccess - You do not need proprietary javascript to get analytics</h1>
<p class="date">Published 2020-08-23 on <a href="https://momi.ca/">Anjan's Homepage</a></p>
<p>
I run <a href="https://noscript.net/">noscript</a> in my web browser to block javascript by default.
I often come across blogs that are fully functional with javascript disabled but ask to run some javascript.
The javascript the blog asks to run is usually used to provide the webmaster with analytics about the users.
The automatic loading of proprietary javascript is especially problematic if the javascript is served by a third party domain.
Since you cannot control the security or personal ethics of the third party domain, you are putting your users at risk of downloading malware.
The loading and execution of javascript also increases the load times of your website.
</p>

<div id="outline-container-orgabec0f3" class="outline-2">
<h2 id="orgabec0f3">The problem and alternative solution</h2>
<div class="outline-text-2" id="text-orgabec0f3">
<p>
For a long time, I just didn&rsquo;t do any analytics because I thought running proprietary javascript (google analytics) was the only way.
Not running any analytics has a number of disadvantages:
</p>

<ol class="org-ol">
<li>You are not able to debug which pages might be down or not working</li>
<li>You don&rsquo;t have insight into which pages are the biggest burden to serve</li>
<li>You don&rsquo;t know what content attracts visitors</li>
<li>You don&rsquo;t get a hit of dopamine by observing the growth of your blog</li>
</ol>

<p>
I found a solution that gives me insight into my website but preserves user freedom.
&ldquo;<a href="https://goaccess.io/">GoAccess</a>, is an open source real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or through your browser&rdquo;.
Basically, goaccess reads in nginx or apache log files and outputs various analytics about your site.
</p>

<p>
On my server, I run the following command to analyze my nginx logs:
</p>
<div class="org-src-container">
<pre class="src src-sh">zcat -f /var/log/nginx/access.log*.gz | <span style="color: #ECBE7B;">cat</span> /var/log/nginx/access.log -  | <span style="color: #ECBE7B;">grep</span> -v 192.168.1.0 | goaccess -f -
</pre>
</div>

<p>
nginx compresses older access logs into <code>access.log*.gz</code> so I used zcat to decompress and concatenate all the archives.
The ip address: <code>192.168.1.0</code> represents http requests from my LAN.
I only want to analyze traffic on WAN so I excluded 192.168.1.0 by running <code>grep -v 192.168.1.0</code> where the -v flag &ldquo;selects non-matching lines&rdquo;.
</p>

<p>
When goaccess opens, I select &ldquo;NCSA Combined Log Format&rdquo; and press Enter.
Finally, I get the following output:
</p>

<img src="https://momi.ca/images/goaccess-dashboard.png">

<p>
I prefer cli output but you can also get an html webpage to view.
</p>
</div>
</div>

<div id="outline-container-orgd5ba1b4" class="outline-2">
<h2 id="orgd5ba1b4">My privacy policy</h2>
<div class="outline-text-2" id="text-orgd5ba1b4">
<p>
Since IP addresses can be used to track users, I obfuscate ip addresses with <a href="https://www.supertechcrew.com/anonymizing-logs-nginx-apache/">nginx</a>.
I left &ldquo;log full ip address on hack / access denied attempts&rdquo; on as the tutorial suggests.
Logging IPs on error allows me to use tools like <a href="https://www.fail2ban.org/wiki/index.php/Main_Page">fail2ban</a> to ban ip addresses that are trying to bruteforce my server.
I also setup log rotation to delete my nginx logs older than 7 days.
The log data stays on my server and is not exported to any other third party.
</p>

<p>
Hopefully goaccess gives you more motivation to write!
</p>
</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2020-08-21-latexnewline.html</guid>
<link>https://momi.ca/posts/2020-08-21-latexnewline.html</link>
<pubDate>Fri, 21 Aug 2020 00:00:00 -0700</pubDate>
<title>Latex New Line</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Latex New Line</h1>
<p class="date">Published 2020-08-21 on <a href="https://momi.ca/">Anjan's Homepage</a></p>
<p>
In latex, a sentence will only be added to a new paragraph if it is double spaced from the line before.
</p>

<p>
For example, the following latex code:
</p>

<p>
Will result in:
</p>

<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</p>

<p>
When you put every sentence on a new line in the latex code, you are able to quickly spot flow mistakes such as:
</p>

<ol class="org-ol">
<li>Multiple consecutive sentences starting with the same word/phrase</li>
<li>Too many long or short sentences together</li>
</ol>

<p>
In latex code, paragraphs where every sentence is on a single line should be avoided so that you can easily spot these style errors.
Additionally, the output of <code>git diff</code> is a lot more useful when your document is formatted this way.
The code to compile pipeline in latex is a feature to make you a better writer.
</p>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2020-07-27-politicaltech.html</guid>
<link>https://momi.ca/posts/2020-07-27-politicaltech.html</link>
<pubDate>Mon, 27 Jul 2020 00:00:00 -0700</pubDate>
<title>Technology is Political and the Political Ramifications of Free Culture</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Technology is Political and the Political Ramifications of Free Culture</h1>
<p class="date">Published 2020-07-27 on <a href="https://momi.ca/">Anjan's Homepage</a></p>

<p>
The digital computer is a decentralized tool for the manipulation and copying of information.
The traditional technology that facilitated the transfer of information was the printing press.
As the history commonly taught in western highschools goes - the printing press was one of the causes of downfall of the catholic church in many countries.
In fact, many will mention that the protestant reformation would not have been possible without the printing press.
</p>

<blockquote>
<p>
In Renaissance Europe, the arrival of mechanical movable type printing introduced the era of mass communication which permanently altered the structure of society. 
The relatively unrestricted circulation of information—including revolutionary ideas—transcended borders, captured the masses in the Reformation and threatened the power of political and religious authorities; the sharp increase in literacy broke the monopoly of the literate elite on education and learning and bolstered the emerging middle class. 
Across Europe, the increasing cultural self-awareness of its people led to the rise of proto-nationalism, accelerated by the flowering of the European vernacular languages to the detriment of Latin&rsquo;s status as lingua franca.
</p>
</blockquote>

<p>
Source: Wikipedia <a href="https://en.wikipedia.org/wiki/Johannes_Gutenberg">https://en.wikipedia.org/wiki/Johannes_Gutenberg</a> CC-BY-SA-3.0
</p>

<p>
Printing presses do not hold these political opinions.
But to argue that technology isn&rsquo;t political causes one to stop from reflecting on one of the most important forces in society.
As such, the following important questions alongside many others are avoided:
</p>
<ul class="org-ul">
<li>Is this technology good for me?</li>
<li>How does this technology allow new ways of organization?</li>
<li>How can I use this technology to assist me in my work to improve society?</li>
</ul>

<p>
The printing press most notably enabled mass production of books and easier distribution of ideas.
However, if you only needed one copy of a book, it was still more cost-effective to make the copy by hand rather than paying for the tooling required for a printing press.
The digital computer, like its great grandfather the printing press facilitates the spreading of ideas.
However, the digital computer makes the cost for producing 1 million copies equal to producing 2 copies.
The consequence of this decentralized copying is that it <a href="file:///posts/2019-08-15-socialmediaregret.html">potentially</a> allows every ordinary citizen to become their own mass publishing company without masters.
</p>

<p>
Computers and their capability for decentralized copying can do a great amount of social good.
In 1983, Ben Bagdikian published a book called &ldquo;The Media Monopoly&rdquo; in which he predicted a doomsday scenario in which a few corporations owned all the media.
It is widely used in journalism classes next to Noam Chomsky&rsquo;s Manufacturing Consent <sup><a id="fnr.1" class="footref" href="https://momi.ca/#fn.1" role="doc-backlink">1</a></sup>.
In the first version of the Media Monopoly, Ben mentioned that 50 corporations currently controlled most of the media that Americans consumed.
By 2017, 5 corporate giants controlled 90% of the media Americans read, watch or listen to <sup><a id="fnr.2" class="footref" href="https://momi.ca/#fn.2" role="doc-backlink">2</a></sup>.
Canada has the worst media consolidation issue out of all g8 members:
</p>
<blockquote>
<p>
For example, in 1990, 17.3% of daily newspapers were independently owned; whereas in 2005, 1% were.
</p>
</blockquote>
<p>
Source: <a href="https://canadiandimension.com/articles/view/web-exclusive-media-guilty-in-g-20">https://canadiandimension.com/articles/view/web-exclusive-media-guilty-in-g-20</a>
</p>

<p>
<a href="https://www.businessinsider.com/these-6-corporations-control-90-of-the-media-in-america-2012-6?IR=T">Click here to view an visual infographic with more statistics!</a>
</p>

<p>
Freedom of the press assumes that there will be numerous <b>popular</b> sources of information.
However, the dynamics of the old media market<sup><a id="fnr.3" class="footref" href="https://momi.ca/#fn.3" role="doc-backlink">3</a></sup> causes consolidation such that most people effectively get their news from a few sources.
The press may be free on paper but in practice, the viewpoints presented in mass media are from a small opinion molding class and are always vetted by the five filters of editorial bias as noted by Noam Chomsky.
</p>
<blockquote>
<p>
This gives each of the five corporations and their leaders more communications power than was exercised by any despot or dictatorship in history <sup><a id="fnr.4" class="footref" href="https://momi.ca/#fn.4" role="doc-backlink">4</a></sup>.
</p>
</blockquote>
<p>
How likely is it that you will be presented an idea that is against the media monopoly&rsquo;s interests?
Theoretically, the fewer prominent top-level companies there are - the narrower the window of ideas presented.
</p>

<p>
The notion of even a single social idea being censored due to it not conforming to the parent company&rsquo;s interests is reason to seek better distribution platforms.
Free Culture is a movement that grapples with the current state of media and its ramifications for democracy.
The movement attempts to create legal/creative organizations that promote <a href="https://www.fsf.org/">free software (Free Software Foundation)</a>, and <a href="https://creativecommons.org/">free media (Creative Commons)</a> to confront the problem of the media monopoly.
Free Culture realizes the new abilities of the immaterial digital age for social benefit.
</p>

<p>
We need to promote platforms for organization that protect our freedom to learn about controversial ideas.
Drawing on the ideas of decentralization and user control, the organizational ideas of <a href="https://www.gnu.org/philosophy/free-sw.html">software freedom</a> are important here.
A computer obeys the instructions given by the software.
As such, <b>whoever controls the software controls the computer</b>.
The ability of computers to replicate and distribute information can be leveraged to conduct mass peer-review of software, ensuring users are not being abused by developers.
Without the ability of users to collectively study, modify, change, and improve the software that runs on their computer, they must accept whatever the proprietor wishes to program onto their computer.
Proprietary software gives you zero security from malicious features from the proprietor (<a href="https://www.gnu.org/proprietary/">Click to see over 500 <b>known</b> malicious features in popular proprietary programs with sources</a>).
Furthermore, consider how apple regularly censors apps associated with political movements from its app stores <sup><a id="fnr.5" class="footref" href="https://momi.ca/#fn.5" role="doc-backlink">5</a></sup>.
Apple&rsquo;s users have no freedom to remove this malware and must tolerate it.
In the free world, users working collectively are free to remove features that are malicious. 
We do not need to beg and grovel for the proprietor to be better or have the classification of right and wrong made for us.
</p>

<p>
The decentralized copying of information (federation) allows for social networking in which users can freely associate with digital organizations that share their values.
Decentralized social media is only now economically possible thanks to the widespread availability of computers which can copy and forward information at practically no cost.
Running a computer server is cheap (about $5 CAD per month). 
If you are technically inclined and willing to learn, you can easily expand the Free Culture movement by hosting socially responsible services for your social circle. 
</p>

<p>
If you are nontechnical, your actions will determine if society realizes the social benefits of the digital computer.
Encouraging participation in public forum hosted on federated free software instead of one of the major media companies is a political act.
Even if they are resistant in the beginning, pushing them to participate may be the only way to show them that what you are presenting is not merely a utopian dream but a practical solution for our current problems.
Your primary form of communication for organizing political action or personal life should be controlled by you or someone you know in real life. 
As such, you are minimizing the organizations standing between you and your audience.
</p>

<p>
An alternative solution endorsed by progressive Democrats and popular media is known as &ldquo;breaking up the media&rdquo; <sup><a id="fnr.6" class="footref" href="https://momi.ca/#fn.6" role="doc-backlink">6</a></sup>.
However, when one considers the old media market&rsquo;s<sup><a id="fnr.3.100" class="footref" href="https://momi.ca/#fn.3" role="doc-backlink">3</a></sup> dynamics and the historical record, this would only be a temporary solution.
Consider that AT&amp;T was broken up in an antitrust suit by the United States in 1982 <sup><a id="fnr.7" class="footref" href="https://momi.ca/#fn.7" role="doc-backlink">7</a></sup>.
Free culture must be involved in the solution to create a longstanding solution to the issue of the media monopoly.
</p>

<p>
<b>How likely is it that you will be presented an idea that is against the media monopoly&rsquo;s interests?</b>
</p>

<p>
It is worth noting that the media monopoly is dismissive of Free Culture on the surface. 
Media companies see the Free Culture Movement as a serious competitor and constantly work to undermine its ideas.
See: <a href="https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish">https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish</a>
</p>

<p>
TL;DR: Technology is political.
It is up to you to realize the new allowances that technology gives you.
</p>

<p>
This post is inspired by Bradley Kuhn&rsquo;s talk &ldquo;FSCONS 2017 - Bradley Kuhn - The Crumbling Intellectual Infrastructure of Free Software&rdquo;
</p>

<p>
Watch: <a href="https://yewtu.be/watch?v=PZ1I9ArhHDs">https://yewtu.be/watch?v=PZ1I9ArhHDs</a>
</p>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">

<div class="footdef"><sup><a id="fn.1" class="footnum" href="https://momi.ca/#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://en.wikipedia.org/wiki/Manufacturing_Consent">Book Summary</a> To get some encouragement to read the full text, watch the: <a href="https://archive.org/details/manufacturing_consent">Manufacturing Consent Documentary</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.2" class="footnum" href="https://momi.ca/#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://en.wikipedia.org/wiki/Concentration_of_media_ownership#Recent_media_mergers_in_the_United_States">https://en.wikipedia.org/wiki/Concentration_of_media_ownership#Recent_media_mergers_in_the_United_States</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.3" class="footnum" href="https://momi.ca/#fnr.3" role="doc-backlink">3</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
Old media market means a market without the widespread use of digital computers or a society with widespread digital computers but the citizens do not participate in free culture on a mass scale.
</p></div></div>

<div class="footdef"><sup><a id="fn.4" class="footnum" href="https://momi.ca/#fnr.4" role="doc-backlink">4</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
Ben H. Bagdikian, &ldquo;The Media Monopoly&rdquo;
</p></div></div>

<div class="footdef"><sup><a id="fn.5" class="footnum" href="https://momi.ca/#fnr.5" role="doc-backlink">5</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
Erin Hale, “Hong Kong protests: Apple pulls tracking app after China criticism” The Gaurdian. [Online]. Available: <a href="https://www.eff.org/deeplinks/2017/10/iranian-hardliners-want-isolated-internet">https://www.eff.org/deeplinks/2017/10/iranian-hardliners-want-isolated-internet</a>. [Accessed: 2020-07-24].
</p>

<ol class="org-ol">
<li>O&rsquo;Brien and L. Oliver, &ldquo;Iranian Hardliners Want An Isolated Internet — US Politicians and Companies Shouldn&rsquo;t Help&rdquo; Electronic Frontier Foundation. [Online]. Available: <a href="https://www.eff.org/deeplinks/2017/10/iranian-hardliners-want-isolated-internet">https://www.eff.org/deeplinks/2017/10/iranian-hardliners-want-isolated-internet</a>. [Accessed: 2020-07-24].</li>

<li>Mozur, &ldquo;Apple Removes Apps From China Store That Help Internet Users Evade Censorship&rdquo; New York Times. [Online]. Available: <a href="https://www.nytimes.com/2017/07/29/technology/china-apple-censorhip.html">https://www.nytimes.com/2017/07/29/technology/china-apple-censorhip.html</a></li>
</ol></div></div>

<div class="footdef"><sup><a id="fn.6" class="footnum" href="https://momi.ca/#fnr.6" role="doc-backlink">6</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://variety.com/2019/digital/news/bernie-sanders-breaking-up-telcos-comcast-verizon-att-1203427353/">Bernie Sanders</a> and <a href="https://www.newyorker.com/business/currency/how-elizabeth-warren-came-up-with-a-plan-to-break-up-big-tech">Elizabeth Warren</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.7" class="footnum" href="https://momi.ca/#fnr.7" role="doc-backlink">7</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://en.wikipedia.org/wiki/Breakup_of_the_Bell_System">https://en.wikipedia.org/wiki/Breakup_of_the_Bell_System</a>
</p></div></div>


</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2020-07-21-ssg.html</guid>
<link>https://momi.ca/posts/2020-07-21-ssg.html</link>
<pubDate>Tue, 21 Jul 2020 00:00:00 -0700</pubDate>
<title>Minimal Blogging Setup with Orgmode and ssg5</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Minimal Blogging Setup with Orgmode and ssg5</h1>
<p class="date">Published 2020-07-21 on <a href="https://momi.ca/">Anjan's Homepage</a></p>
<div id="outline-container-org90f0557" class="outline-2">
<h2 id="org90f0557">My Old Setup</h2>
<div class="outline-text-2" id="text-org90f0557">
<p>
I prefer orgmode over markdown because already I use orgmode for appointments, reminders, notes, etc.
However, most static website generators only support Markdown.
Luckily, orgmode has an html export function: <code>M-x org-publish</code>.
org-publish is much more powerful and reliable than any markdown converter I have used.
</p>

<p>
Since 2016, I have been using jekyll which is bloated and requires a lot of ruby dependencies.
To make sure my website always built, I setup sourcehut builds to build my jekyll website.
Each website build takes <b><b>3 minutes</b></b> on sourcehut.
</p>

<p>
Building the website locally was also a terrible experience.
I had hacked on a shell script that would take my <code>org-publish</code> output and make it usable for jekyll by setting the title and layout variables.
To publish a new blog post, I had to: <code>org-publish -&gt; run my script -&gt; commit html AND org file -&gt; wait for jekyll to build on sourcehut</code>.
If I had made a mistake, I would repeat the entire process&#x2026;
Eventually this setup was so cumbersome, I stopped blogging.
</p>
</div>
</div>
<div id="outline-container-org7f775cc" class="outline-2">
<h2 id="org7f775cc">My New Setup</h2>
<div class="outline-text-2" id="text-org7f775cc">
<p>
I do not use most of the features of jekyll and needed something more minimal.
In the past, I have dabbled with <a href="http://werc.cat-v.org/">werc</a>, <a href="https://gohugo.io/">hugo</a>, and <a href="https://github.com/guildhall/guile-haunt">guile-haunt</a>.
Eventually, I stumbled upon <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> which is a static site generator written in 180 lines of posix compliant shell.
If you do not use markdown, ssg5 will only use unix coreutils to make your website with a common header and footer.
Perfect!
</p>

<p>
I decided I should go through the pain of porting my website over to ssg5 and documenting my experience.
Here is what I had to pay attention to:
</p>
</div>

<div id="outline-container-org760ecdc" class="outline-3">
<h3 id="org760ecdc">Openring</h3>
<div class="outline-text-3" id="text-org760ecdc">
<p>
To generate the &ldquo;Articles from blogs I follow around the net&rdquo; at the bottom of each blog post, I use <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>.
Openring is a great way to support a more decentralized internet where everyone has their own website.
A template for the blog post footer is saved as <a href="https://git.sr.ht/~anjan/momi.ca/tree/master/webring-in.html">webring-in.html</a>.
My <a href="https://git.sr.ht/~anjan/momi.ca/tree/master/openring.sh"><code>openring.sh</code></a> script downloads <code>openring</code> and prints to stdout the html to be included at the end of blog posts.
</p>
</div>
</div>

<div id="outline-container-org6560be7" class="outline-3">
<h3 id="org6560be7">Changes to rssg</h3>
<div class="outline-text-3" id="text-org6560be7">
<p>
To generate <a href="file:///feed.xml">my rss feed</a>, I use <a href="https://www.romanzolotarev.com/rssg.html">rssg</a>.
However, rssg requires a list of posts on the homepage.
Unfortunately, ssg5 does not generate a list of posts and I had to hack together <a href="https://git.sr.ht/~anjan/momi.ca/tree/master/blogfeed.sh">blogfeed.sh</a>.
Here is the output from <code>blogfeed.sh</code>:
</p>

<div class="org-src-container">
<pre class="src src-html">&lt;<span style="color: #c678dd;">li</span>&gt;2020-07-21 &lt;<span style="color: #c678dd;">a</span> <span style="color: #dcaeea;">href</span>=<span style="color: #98be65;">"/posts/2020-07-21-ssg.html"</span> <span style="color: #dcaeea;">title</span>=<span style="color: #98be65;">"2020-07-21"</span>&gt;Minimal Blogging Setup with Orgmode and ssg5&lt;/<span style="color: #c678dd;">a</span>&gt;&lt;/<span style="color: #c678dd;">li</span>&gt;
&lt;<span style="color: #c678dd;">li</span>&gt;2020-07-06 &lt;<span style="color: #c678dd;">a</span> <span style="color: #dcaeea;">href</span>=<span style="color: #98be65;">"/posts/2020-07-06-crust.html"</span> <span style="color: #dcaeea;">title</span>=<span style="color: #98be65;">"2020-07-06"</span>&gt;Compiling crust for pinephone on Postmarketos&lt;/<span style="color: #c678dd;">a</span>&gt;&lt;/<span style="color: #c678dd;">li</span>&gt;
...
&lt;<span style="color: #c678dd;">li</span>&gt;2016-04-26 &lt;<span style="color: #c678dd;">a</span> <span style="color: #dcaeea;">href</span>=<span style="color: #98be65;">"/posts/2016-04-26-Hello-World.html"</span> <span style="color: #dcaeea;">title</span>=<span style="color: #98be65;">"2016-04-26"</span>&gt;Hello World&lt;/<span style="color: #c678dd;">a</span>&gt;&lt;/<span style="color: #c678dd;">li</span>&gt;
</pre>
</div>

<p>
My fork of rssg is located <a href="https://git.sr.ht/~anjan/momi.ca/tree/master/rssg">here</a>.
Gnu coreutils&rsquo; date command does not have a <code>-j</code> flag as required by the <code>date_rfc_822()</code> function in rssg.
The dates output by <code>blogfeed.sh</code> are in YYYY-MM-DD format.
To convert to <code>rfc_882</code>, I used the following date command in the <code>date_rfc_822</code> function:
</p>

<div class="org-src-container">
<pre class="src src-sh"><span style="color: #c678dd;">date_rfc_822</span><span style="color: #51afef;">()</span> <span style="color: #51afef;">{</span>
      <span style="color: #ECBE7B;">date</span> -R -d <span style="color: #98be65;">"</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">1</span><span style="color: #98be65;">"</span>
<span style="color: #51afef;">}</span>
</pre>
</div>
</div>
</div>


<div id="outline-container-orgced67b4" class="outline-3">
<h3 id="orgced67b4">Changes to ssg5</h3>
<div class="outline-text-3" id="text-orgced67b4">
<p>
My fork of ssg5 is located <a href="https://git.sr.ht/~anjan/momi.ca/tree/master/ssg5">here</a>.
I modified ssg5 to run openring, run rssg, and change the footer depending on the page.
Running openring takes alot of time which is inconvenient when editing a page locally so I implemented a <code>-f</code> flag to ssg5.
If <code>-f</code> is the fifth argument into ssg5, the script doesn&rsquo;t generate the webring.
</p>

<p>
In the main function on line 52, I load in the &ldquo;Articles from blogs I follow&rdquo; html into an environmental variable called <code>$WEBRING</code>:
</p>
<div class="org-src-container">
<pre class="src src-sh"><span style="color: #51afef;">[</span> <span style="color: #98be65;">"</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">5</span><span style="color: #98be65;">"</span> != <span style="color: #98be65;">"-f"</span> <span style="color: #51afef;">]</span> &amp;&amp; <span style="color: #dcaeea;">WEBRING</span>=<span style="color: #98be65;">"</span><span style="color: #51afef; font-weight: bold;">$(./openring.sh)</span><span style="color: #98be65;">"</span> &amp;&amp; <span style="color: #c678dd;">export</span> WEBRING
</pre>
</div>

<p>
On line 53, I generate the blogfeed to be included at the bottom of the homepage:
</p>
<div class="org-src-container">
<pre class="src src-sh"><span style="color: #dcaeea;">FEED</span>=<span style="color: #98be65;">"</span><span style="color: #51afef; font-weight: bold;">$(./blogfeed.sh)</span><span style="color: #98be65;">"</span> &amp;&amp; <span style="color: #c678dd;">export</span> FEED
</pre>
</div>

<p>
Depending on whether the page is homepage or a blog post, I need to include a different footer.
If the page is a blog post, I must include the openring output and if the page is the homepage I must include the blog post log (generated by <code>blogfeed.sh</code>).
As such, I changed the <code>render_html_files()</code> function to:
</p>

<div class="org-src-container">
<pre class="src src-sh"><span style="color: #c678dd;">render_html_files</span><span style="color: #51afef;">()</span> <span style="color: #51afef;">{</span>
    <span style="color: #51afef;">while </span><span style="color: #c678dd;">read</span> -r f
    <span style="color: #51afef;">do</span>
     <span style="color: #ECBE7B;">echo</span> <span style="color: #98be65;">"</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">1</span><span style="color: #98be65;">/</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">f</span><span style="color: #98be65;">"</span> | <span style="color: #ECBE7B;">grep</span> <span style="color: #98be65;">"index.html"</span> &gt; /dev/null &amp;&amp; <span style="color: #dcaeea;">EXTRAFOOT</span>=<span style="color: #98be65;">"</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">FEED</span><span style="color: #98be65;">"</span> &amp;&amp; <span style="color: #c678dd;">export</span> EXTRAFOOT
     <span style="color: #ECBE7B;">echo</span> <span style="color: #98be65;">"</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">1</span><span style="color: #98be65;">/</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">f</span><span style="color: #98be65;">"</span> | <span style="color: #ECBE7B;">grep</span> <span style="color: #98be65;">"posts"</span> &gt; /dev/null &amp;&amp; <span style="color: #dcaeea;">EXTRAFOOT</span>=<span style="color: #98be65;">"</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">WEBRING</span><span style="color: #98be65;">"</span> &amp;&amp; <span style="color: #c678dd;">export</span> EXTRAFOOT
     render_html_file <span style="color: #98be65;">"</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">3</span><span style="color: #98be65;">"</span> &lt; <span style="color: #98be65;">"</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">1</span><span style="color: #98be65;">/</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">f</span><span style="color: #98be65;">"</span> &gt; <span style="color: #98be65;">"</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">2</span><span style="color: #98be65;">/</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">f</span><span style="color: #98be65;">"</span>
     <span style="color: #dcaeea;">EXTRAFOOT</span>=<span style="color: #98be65;">""</span> &amp;&amp; <span style="color: #c678dd;">export</span> EXTRAFOOT
    <span style="color: #51afef;">done</span>
<span style="color: #51afef;">}</span>
</pre>
</div>

<p>
If the file name matches the regular expression <code>index.html</code>, it gets <code>$FEED</code> as the extra footer.
If the file name is matches the posts regular expression, <code>$WEBRING</code> is the extra footer.
</p>

<p>
Finally, I modified the <code>render_html_file</code> function to include my environmental variable <code>$EXTRAFOOT</code> before <code>$FOOTER</code>:
</p>

<div class="org-src-container">
<pre class="src src-sh">...
        <span style="color: #ff6c6b; font-weight: bold;">}</span>
        <span style="color: #c678dd;">print</span> body
        <span style="color: #c678dd;">print</span> ENVIRON<span style="color: #ff6c6b; font-weight: bold;">[</span><span style="color: #98be65;">"EXTRAFOOT"</span><span style="color: #ff6c6b; font-weight: bold;">]</span>
        <span style="color: #c678dd;">print</span> ENVIRON<span style="color: #ff6c6b; font-weight: bold;">[</span><span style="color: #98be65;">"FOOTER"</span><span style="color: #ff6c6b; font-weight: bold;">]</span>
    <span style="color: #ff6c6b; font-weight: bold;">}</span><span style="color: #98be65;">'</span>
</pre>
</div>

<p>
At the end of the <code>main</code> function in my <code>ssg</code> script, I use <code>rssg</code> to generate my site&rsquo;s rss feed:
</p>

<div class="org-src-container">
<pre class="src src-sh"><span style="color: #51afef;">[</span> <span style="color: #98be65;">"</span><span style="color: #a9a1e1;">$</span><span style="color: #dcaeea;">5</span><span style="color: #98be65;">"</span> != <span style="color: #98be65;">"-f"</span> <span style="color: #51afef;">]</span> &amp;&amp; ./rssg dst/index.html <span style="color: #98be65;">'Anjan Momi Homepage'</span> &gt; dst/feed.xml
</pre>
</div>
</div>
</div>

<div id="outline-container-orgefbf97d" class="outline-3">
<h3 id="orgefbf97d">Orgmode</h3>
<div class="outline-text-3" id="text-orgefbf97d">
<p>
In my <code>.spacemacs</code>, I added the following lines:
</p>

<div class="org-src-container">
<pre class="src src-elisp"> <span style="color: #51afef;">(</span><span style="color: #51afef;">setq</span> <span style="color: #dcaeea;">org-publish-project-alist</span>
       <span style="color: #51afef;">'</span><span style="color: #c678dd;">(</span><span style="color: #98be65;">(</span><span style="color: #98be65;">"momi"</span>
          <span style="color: #5B6268;">;; </span><span style="color: #5B6268;">Path to org files.</span>
          <span style="color: #c678dd;">:base-directory</span> <span style="color: #98be65;">"~/code/momi.ca/src/"</span>
          <span style="color: #c678dd;">:base-extension</span> <span style="color: #98be65;">"org"</span>

          <span style="color: #5B6268;">;; </span><span style="color: #5B6268;">Path to ssg osts</span>
          <span style="color: #c678dd;">:publishing-directory</span> <span style="color: #98be65;">"~/code/momi.ca/src/"</span>
          <span style="color: #c678dd;">:recursive</span> t
          <span style="color: #c678dd;">:publishing-function</span> org-html-publish-to-html
          <span style="color: #c678dd;">:body-only</span> t <span style="color: #5B6268;">;</span><span style="color: #5B6268;">ssg will not add header and footer if an &lt;HTML&gt; tag exists</span>
          <span style="color: #c678dd;">:link-up</span> /index.html
          <span style="color: #c678dd;">:html-postamble</span> t
          <span style="color: #c678dd;">:toc</span> nil
 <span style="color: #98be65;">)</span><span style="color: #c678dd;">)</span><span style="color: #51afef;">)</span>
</pre>
</div>

<p>
Open an org file from your website and run <code>C-c C-e P p</code> to generate the html for your blog files.
</p>

<p>
If you edit the <code>org-publish-project-alist</code> variable and want to regenerate all files (even unmodified) run:
<code>C-u 1 M-x org-publish</code>.
</p>
</div>
</div>
<div id="outline-container-orgbde4173" class="outline-3">
<h3 id="orgbde4173">Deployment</h3>
<div class="outline-text-3" id="text-orgbde4173">
<p>
To simplify the deployment of my website, I added the following aliases to my zshrc:
</p>

<div class="org-src-container">
<pre class="src src-zsh">alias makesite="rm dst/.files; ./ssg5 src dst \"Anjandev\'s Homepage\" https://momi.ca"
alias deploysite="rsync -rvPz --delete dst/ deploy@homeserver:/"
</pre>
</div>

<p>
In the <code>makesite</code> alias, <code>rm dst/.files</code> ensures ssg5 will rebuild all the website&rsquo;s pages.
</p>
</div>
</div>
</div>
<div id="outline-container-orgbc77ba0" class="outline-2">
<h2 id="orgbc77ba0">Conclusion</h2>
<div class="outline-text-2" id="text-orgbc77ba0">
<p>
To check mistakes with my website&rsquo;s rss and html, I used w3c&rsquo;s validation service for <a href="https://validator.w3.org/">html</a> and <a href="https://validator.w3.org/feed/">rss</a>.
</p>

<p>
Finally, I had to go back in time and convert all my Markdown posts to orgmode.
</p>

<p>
My website now generates in under a second for a clean build compared to 3 minutes with jekyll.
I don&rsquo;t have to use jekyll, jekyll&rsquo;s dependencies, and sourcehut to build my website.
Expect more blog posts going into the future!
</p>
</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2020-07-06-crust.html</guid>
<link>https://momi.ca/posts/2020-07-06-crust.html</link>
<pubDate>Mon, 06 Jul 2020 00:00:00 -0700</pubDate>
<title>Compiling crust for pinephone on Postmarketos</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Compiling crust for pinephone on Postmarketos</h1>
<p class="date">Published 2020-07-06 on <a href="https://momi.ca/">Anjan's Homepage</a></p>


<p>
<b>Crust is now available from postmarketos&rsquo; official repos! This post is now obsolete but is kept as an archive for how to test new kernels. Use at your own risk</b>
</p>

<p>
<a href="https://github.com/crust-firmware/crust">Crust</a> firmware enables acceptable battery life on the pinephone.
For me, it is the last feature I need for the pinephone to be daily driver ready.
Here is how to install the experimental crust branch on the pinephone so that you can give the postmarketos and sxmo team feedback.
</p>

<div id="outline-container-orgd8f2cdc" class="outline-2">
<h2 id="orgd8f2cdc">Postmarketos Setup</h2>
<div class="outline-text-2" id="text-orgd8f2cdc">
<p>
First, install the crust packages from postmarketos.
Note: I assuming you have setup abuild according to <a href="https://wiki.alpinelinux.org/wiki/Creating_an_Alpine_package">Alpine Linux&rsquo;s creating an Alpine package guide</a>.
</p>

<p>
Add the following repositories to /etc/apk/repositories:
</p>

<pre class="example">
/home/$BUILDUSER/packages/main/
/home/$BUILDUSER/packages/community/
/home/$BUILDUSER/packages/temp/
</pre>

<p>
Note: Replace <code>$BUILDUSER</code> with the user that will be running abuild.
</p>

<p>
Next, build the new versions of device-pine64-pinephone, crust, and u-boot-pinephone packages from pmaports&rsquo; feature/crust branch:
</p>
<div class="org-src-container">
<pre class="src src-bash"><span style="color: #ECBE7B;">git</span> clone https://gitlab.com/postmarketOS/pmaports.git
<span style="color: #ECBE7B;">cd</span> pmaports
<span style="color: #ECBE7B;">git</span> checkout feature/crust
</pre>
</div>

<p>
Build the packages for crust using <code>abuild</code>:
</p>

<div class="org-src-container">
<pre class="src src-bash"><span style="color: #ECBE7B;">cd</span> device/community/device-pine64-pinephone &amp;&amp; abuild -r
<span style="color: #ECBE7B;">cd</span> main/crust &amp;&amp; abuild -r
<span style="color: #ECBE7B;">cd</span> temp/u-boot-pinephone &amp;&amp; abuild -r
</pre>
</div>

<p>
We can install these newly built packages by running:
</p>

<div class="org-src-container">
<pre class="src src-bash"><span style="color: #ECBE7B;">sudo</span> apk update &amp;&amp; <span style="color: #ECBE7B;">sudo</span> apk upgrade -a
<span style="color: #ECBE7B;">sudo</span> apk add crust
</pre>
</div>

<p>
Finally, as Danct12 says in the crust merge request thread - &ldquo;upgrading the u-boot-pinephone package isn&rsquo;t enough, you&rsquo;ll need to run this in the command line&rdquo;:
</p>

<p>
If postmarketos is booting from EEMC:
</p>
<div class="org-src-container">
<pre class="src src-bash"><span style="color: #ECBE7B;">sudo</span> dd <span style="color: #dcaeea;">if</span>=/usr/share/u-boot/pine64-pinephone/u-boot-sunxi-with-spl.bin <span style="color: #98be65;">\</span>
<span style="color: #dcaeea;">of</span>=/dev/mmcblk2 <span style="color: #dcaeea;">bs</span>=<span style="color: #da8548; font-weight: bold;">1024</span> <span style="color: #dcaeea;">seek</span>=<span style="color: #da8548; font-weight: bold;">8</span> <span style="color: #5B6268;"># </span><span style="color: #5B6268;">for EEMC</span>
</pre>
</div>

<p>
If postmarketos is booting from SD card:
</p>
<div class="org-src-container">
<pre class="src src-bash"><span style="color: #ECBE7B;">sudo</span> dd <span style="color: #dcaeea;">if</span>=/usr/share/u-boot/pine64-pinephone/u-boot-sunxi-with-spl.bin <span style="color: #98be65;">\</span>
<span style="color: #dcaeea;">of</span>=/dev/mmcblk0 <span style="color: #dcaeea;">bs</span>=<span style="color: #da8548; font-weight: bold;">1024</span> <span style="color: #dcaeea;">seek</span>=<span style="color: #da8548; font-weight: bold;">8</span> <span style="color: #5B6268;"># </span><span style="color: #5B6268;">for SD card</span>
</pre>
</div>

<p>
You must reboot to have your changes take affect.
To verify that you have installed crust correctly, run the following command and check if your output matches:
</p>

<div class="org-src-container">
<pre class="src src-bash">pinephone:~$ <span style="color: #ECBE7B;">cat</span> /sys/power/mem_sleep
s2idle <span style="color: #51afef;">[</span>deep<span style="color: #51afef;">]</span>
</pre>
</div>
</div>
</div>

<div id="outline-container-orga1e35d0" class="outline-2">
<h2 id="orga1e35d0">Sxmo Setup</h2>
<div class="outline-text-2" id="text-orga1e35d0">
<p>
Crust on sxmo is on an experimental git branch.
To update sxmo&rsquo;s scripts to support crust, run the following commands:
</p>

<div class="org-src-container">
<pre class="src src-bash"><span style="color: #ECBE7B;">sudo</span> apk add libx11-dev xproto linux-headers <span style="color: #5B6268;"># </span><span style="color: #5B6268;">make</span><span style="color: #5B6268;"> dependancies for sxmo-utils</span>
<span style="color: #ECBE7B;">git</span> clone https://git.sr.ht/~mil/sxmo-utils
<span style="color: #ECBE7B;">cd</span> sxmo-utils
<span style="color: #ECBE7B;">git</span> checkout f/crust-screenlock-suspend <span style="color: #5B6268;"># </span><span style="color: #5B6268;">crust branch</span>
<span style="color: #ECBE7B;">make</span> programs/sxmo_screenlock
<span style="color: #ECBE7B;">sudo</span> <span style="color: #ECBE7B;">cp</span> programs/sxmo_screenlock /usr/bin
<span style="color: #ECBE7B;">sudo</span> apk del libx11-dev xproto linux-headers <span style="color: #5B6268;"># </span><span style="color: #5B6268;">remove </span><span style="color: #5B6268;">make</span><span style="color: #5B6268;"> dependancies</span>
</pre>
</div>

<p>
When you turn off the screen, the LED shows the power status of the phone.
Purple is screenoff, red is crust.
Triple click volup and you get red (crust). 
Triple click voldown and you get purple/blue toggle (screenoff/on)
On irc pucilpet said: modem is receiving calls and texts but does not &ldquo;ring&rdquo;. 
So you will see the call once unlocked or might even pick it up if you unlock mid-call.
</p>

<p>
Remember to repeat this process anytime there&rsquo;s an update to sxmo-utils&rsquo; <code>f/crust-screenlock-suspend</code> branch or pmaports&rsquo; <code>feature/crust</code> branch.
Please document your experience in the <a href="https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1163">pmaports crust merge request</a> - I have notifications on for when commits are pushed.
If you have issues with sxmo, drop by #sxmo on irc://irc.oftc.net/ or send a message to the <a href="https://lists.sr.ht/~mil/sxmo-devel">sxmo mailing list</a>.
</p>
</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2020-06-24-archvsvoid.html</guid>
<link>https://momi.ca/posts/2020-06-24-archvsvoid.html</link>
<pubDate>Wed, 24 Jun 2020 00:00:00 -0700</pubDate>
<title>Why VoidLinux is Better than Arch - A Former Arch User's Perspective</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Why VoidLinux is Better than Arch - A Former Arch User's Perspective</h1>
<p class="date">Published 2020-06-24 on <a href="https://momi.ca/">Anjan's Homepage</a></p>


<p>
I had been an avid ArchLinux user for five years.
I ran Arch on all my computers, I enjoyed using it, and I learned a lot from it. 
One day, I happened to try VoidLinux on one of my extra thinkpads and found my new favorite distro <sup><a id="fnr.1" class="footref" href="https://momi.ca/#fn.1" role="doc-backlink">1</a></sup>.
The Arch to VoidLinux pipeline is somewhat a <a href="https://voidlinux.org/news/2019/04/homepage-redesign.html">joke</a> and maybe I&rsquo;m leaning into that joke with this blog post.
Anyway, here are some reasons for using my favourite meme distro.
</p>

<div id="outline-container-orgffc8aed" class="outline-2">
<h2 id="orgffc8aed">Packaging</h2>
<div class="outline-text-2" id="text-orgffc8aed">
<p>
People often say: distro doesnt matter.
To an extent, they are correct.
When you are sufficiently experienced with administrating a Linux workstation or server, the distro matters a lot less.
However, one area in which a distro has the potential to differentiate itself is packaging.
Your distro&rsquo;s packaging standards and package maintainers will determine system stability and the number of programs you can easily install.
When it comes to packaging, Void is head and shoulders above Arch.
</p>

<p>
After a couple of years of using Arch, I ended up finding the AUR system completely untenable.
Most of the packages I use everyday need to be installed from the AUR - freecad, gnu icecat (the only nonbotnet web browser), etc.
I don&rsquo;t consider the AUR part of the Arch repositories because they are not checked by the distro maintainers and the AUR is by-in-large unsupported.
The whole point of a packaging system is to have a <b><b>trusted</b></b> repository of programs the user can install.
</p>

<p>
Compare this unsupported AUR system to the <a href="https://github.com/void-linux/void-packages">void-packages</a> repository where all packages are checked by someone on the Void team.
If the package prohibits redistribution (ie. discord), it is still supported by VoidLinux.
The user must run <code>xbps-src</code> to package discord on their local machine but the template (analogous to PKGBUILD in Arch) is still checked and maintained in the main Void git repository.
Arch is very anemic when it comes to the number of packages available if one ignores the packages in the AUR.
</p>

<p>
Sometimes a major dependency (ie. libressl) will get an upgrade.
This means that all packages that depend on libressl need a revision bump to compile against the newest version of libressl.
When this happens, you must rely on the following things to ensure an AUR package or its dependencies do not break:
</p>
<ol class="org-ol">
<li>Remember to run <code>yay -Syua</code></li>
<li>Check if the package maintainer is active (read AUR comments for breakage)</li>
</ol>
<p>
Recall Arch does not support partial upgrades so you must upgrade AUR packages constantly.
In contrast, Void-packages is similar to the AUR in that it allows any user to maintain a package by submitting a pull request on github.
Furthermore, any user can send a pull request to upgrade a package they are using <sup><a id="fnr.2" class="footref" href="https://momi.ca/#fn.2" role="doc-backlink">2</a></sup>.
All pull requests are checked by a VoidLinux team member and if the binary is not too large, it is hosted on the official voidLinux repo servers and installable for all void users via the main package manager.
If you submit a package and its makedependancy gets an upgrade, the person updating the makedependancy will revision bump your package and post the new working revision in the official Void repositories.
</p>

<p>
I am not timid about my love for free software.
I try to use as much free software as possible but to live in this world, I have to use some proprietary software.
On Arch the free and nonfree packages are in one repository.
All this creates a distro which hides the problem of proprietary software on your system.
On VoidLinux, there is a separate non-free repository similar to Debian.
If you don&rsquo;t install the metapackages that enable nonfree repositories, you have no nonfree software on your computer other than some proprietary firmware.
Furthermore, you can easily check how nonfree your system is and work to fix the problem areas.
Seperating free and nonfree packages is important as it shows the distro recognizes the ideals of software freedom.
</p>
</div>

<div id="outline-container-org71f0140" class="outline-3">
<h3 id="org71f0140">XBPS</h3>
<div class="outline-text-3" id="text-org71f0140">
<p>
Another thing that contributes to the uniqueness of a distro is the package manager.
xbps-src is one of the best package managers I have ever used aside from alpine&rsquo;s apk-tools.
XBPS can cross-compile for multiple Archs and libcs.
This means I can use my powerful ryzen 7 to compile packages for my arm64 machine to test packaging.
The cross compilation also encourages ecosystem diversity (ie. musl).
</p>

<p>
 With xbps, partial upgrades are <b><b>supported</b></b> unlike ArchLinux.
 In a rolling release distro, partial upgrade support allows the user to partially rollback an upgrade.
Furthermore, the ability to rollback certain packages adds stability to your setup.
</p>

<p>
The Void team is very helpful in irc if you want to try packaging for voidLinux.
I was able to figure out xbps in an afternoon using the <a href="https://github.com/Void-Linux/void-packages/blob/master/Manual.md">well written xbps manual</a>.
Additionally, the team is very receptive to package requests.
</p>
</div>
</div>
</div>

<div id="outline-container-org8775868" class="outline-2">
<h2 id="org8775868">Systemd considered harmful</h2>
<div class="outline-text-2" id="text-org8775868">
<p>
The ever growing scope of the systemd project is troubling.
Large and ever growing software projects inevitably have large security vulnerabilities and reliability issues.
Consider projects that have a hard requirement on systemd (ie. Gnome).
This hard requirement should be troubling for anyone that wants a Linux ecosystem that is diverse.
</p>

<p>
Instead of systemd, VoidLinux uses <a href="http://smarden.org/runit/">runit</a> as its official init.
Runit starts up and shuts down my computers faster than systemd.
</p>
</div>
</div>

<div id="outline-container-org808eac2" class="outline-2">
<h2 id="org808eac2">Easy install</h2>
<div class="outline-text-2" id="text-org808eac2">
<p>
The Void installer is an easy to use ncurses wizard.
</p>

<p>
<a href="https://voidlinux.org/download/">Try it void!</a>
</p>

<p>
<a href="https://docs.voidlinux.org/">Check out its awesome handbook!</a>
</p>
</div>
</div>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">

<div class="footdef"><sup><a id="fn.1" class="footnum" href="https://momi.ca/#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
I prefer alpine on computers where I don&rsquo;t need glibc and gnu coreutils. Ie. ARM devices and servers. Alpine shares all the strengths of Void I wrote about in this blog post.
</p></div></div>

<div class="footdef"><sup><a id="fn.2" class="footnum" href="https://momi.ca/#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
Often the pull request to update is as simple as this: <a href="https://github.com/Void-Linux/void-packages/commit/52fca8ed9c1755488ac43f9f368b692a07315ee9">kompare: update to 20.04.1.</a>
</p></div></div>


</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2020-04-09-totp-pinephone.html</guid>
<link>https://momi.ca/posts/2020-04-09-totp-pinephone.html</link>
<pubDate>Thu, 09 Apr 2020 00:00:00 -0700</pubDate>
<title>Two Factor Authentication App on Pinephone</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Two Factor Authentication App on Pinephone</h1>
<p class="date">Published 2020-04-09 on <a href="https://momi.ca/">Anjan's Homepage</a></p>


<p>
I picked up the <a href="https://www.pine64.org/pinephone/">pinephone</a> but it wasn&rsquo;t daily driver ready.
A couple days ago, my android phone completely broke so I needed to make the pinephone daily driver ready. 
First things first - I need a two factor authentication app for my phone.
</p>

<div id="outline-container-org598c56a" class="outline-2">
<h2 id="org598c56a">Issues with gnome-authenticator</h2>
<div class="outline-text-2" id="text-org598c56a">
<p>
On postmarketos, <a href="https://gitlab.gnome.org/World/Authenticator">gnome-authenticator</a>  is my preferred two factor authentication app because it is in the main repositories and it works.
However, debian is currently a much better experience daily driving.
I&rsquo;ve fixed a couple of issues in postmarketos and I&rsquo;d love to use it but right now I need an os that works<sup><a id="fnr.1" class="footref" href="https://momi.ca/#fn.1" role="doc-backlink">1</a></sup>.
</p>

<p>
Debian lacks a package for gnome-authenticator.
I tried installing gnome-authenticator from flatpak and the app did launch but adding a provider caused the app to crash. 
Launching gnome-authenticator a second time caused a giant error and the app never opened again <sup><a id="fnr.2" class="footref" href="https://momi.ca/#fn.2" role="doc-backlink">2</a></sup>.
</p>
</div>
</div>

<div id="outline-container-org0ceee0a" class="outline-2">
<h2 id="org0ceee0a">pass-otp</h2>
<div class="outline-text-2" id="text-org0ceee0a">
<p>
Using the command line on the pinephone is a pain.
I often leave my phone upstairs and when a totp/hotp challenge appears in my web browser, I have to walk upstairs and get the totp pin.
However, if I use a command line two factor application, I can simply ssh and get the otp.
</p>

<p>
Currently, I use gopass and I found a simple application that integrates with gopass: <a href="https://github.com/tadfisher/pass-otp">pass-otp</a> <sup><a id="fnr.3" class="footref" href="https://momi.ca/#fn.3" role="doc-backlink">3</a></sup>.
Furthermore, pass-otp has support for importing my android otp client&rsquo;s (freeotp) uri backup. 
</p>

<p>
Installing pass-otp on debian is as simple as running:
</p>

<div class="org-src-container">
<pre class="src src-bash"><span style="color: #ECBE7B;">sudo</span> apt install pass-extension-otp
</pre>
</div>
</div>

<div id="outline-container-org3112413" class="outline-3">
<h3 id="org3112413">RTC and pass-otp</h3>
<div class="outline-text-3" id="text-org3112413">
<p>
After installing pass-otp and trying to generate some otps, I would always get the incorrect otp.
The time on my system was correct but the time on my rtc was incorrect.
</p>

<p>
To check the time, ran <code>sudo timedatectl</code> and got the following output:
</p>

<pre class="example">
debian@pinephone:~/go/gopass$ sudo timedatectl
               Local time: Thu 2020-04-09 19:43:42 PDT
           Universal time: Fri 2020-04-10 02:43:42 UTC
                 RTC time: Fri 2020-04-10 02:43:43
                Time zone: America/Vancouver (PDT, -0700)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
</pre>

<p>
My RTC time is universal time.
To change RTC time to local time, I ran:
</p>

<div class="org-src-container">
<pre class="src src-bash"><span style="color: #ECBE7B;">sudo</span> timedatectl set-local-rtc true
</pre>
</div>

<p>
Finally, as a check I ran <code>sudo timedatectl</code> and found my RTC time was now synced with local time:
</p>

<pre class="example">
               Local time: Thu 2020-04-09 19:44:13 PDT
           Universal time: Fri 2020-04-10 02:44:13 UTC
                 RTC time: Thu 2020-04-09 19:44:14
                Time zone: America/Vancouver (PDT, -0700)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: yes

Warning: The system is configured to read the RTC time in the local time zone.
         This mode cannot be fully supported. It will create various problems
         with time zone changes and daylight saving time adjustments. The RTC
         time is never updated, it relies on external facilities to maintain it.
         If at all possible, use RTC in UTC by calling
         'timedatectl set-local-rtc 0'.

</pre>

<p>
Now, I get the correct otp with pass-otp but I may run into problems like the warning above says.
If you have a better way to fix this issue, please email me.
</p>

<p>
For now, it works and I might write a gui for pass-otp like I did for gopass with <a href="https://git.sr.ht/~anjan/mobpass">mobpass</a>.
I still need to change mobpass to work with kirigami.
</p>
</div>
</div>
</div>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">

<div class="footdef"><sup><a id="fn.1" class="footnum" href="https://momi.ca/#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
My issues with daily driving postmarketos are documented <a href="https://gitlab.com/postmarketOS/pmaports/-/issues?scope=all&amp;utf8=%E2%9C%93&amp;state=opened&amp;author_username=anjandev">here</a>.
</p></div></div>

<div class="footdef"><sup><a id="fn.2" class="footnum" href="https://momi.ca/#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
I should probably report the following error:
</p>
<pre class="example">
debian@pinephone:~$ flatpak run com.github.bilelmoussaoui.Authenticator
Traceback (most recent call last):
  File "/app/lib/python3.7/site-packages/Authenticator/application.py", 
    line 59, in do_startup self._setup_actions()
  File "/app/lib/python3.7/site-packages/Authenticator/application.py", 
    line 142, in _setup_actions Keyring.get_default().
    connect("notify::can-be-locked",
  File "/app/lib/python3.7/site-packages/Authenticator/models/keyring.py", 
    line 49, in get_default Keyring.instance = Keyring()
  File "/app/lib/python3.7/site-packages/Authenticator/models/keyring.py", 
    line 44, in __init__ self.props.can_be_locked = 
    self.is_password_enabled() and self.has_password()
  File "/app/lib/python3.7/site-packages/Authenticator/models/keyring.py", 
    line 136, in is_password_enabled
    state = Secret.password_lookup_sync(schema, {}, None)
gi.repository.GLib.Error: g-io-error-quark: user interaction failed (0)
Traceback (most recent call last):
  File "/app/lib/python3.7/site-packages/Authenticator/application.py", 
    line 77, in do_activate 
    window = Window.get_default()
  File "/app/lib/python3.7/site-packages/Authenticator/widgets/window.py", 
    line 70, in get_default
    Window.instance = Window()
  File "/app/lib/python3.7/site-packages/Authenticator/widgets/window.py", 
    line 62, in __init__
    AccountsManager.get_default()
</pre></div></div>

<div class="footdef"><sup><a id="fn.3" class="footnum" href="https://momi.ca/#fnr.3" role="doc-backlink">3</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
I know gopass has otp support but gopass in debian&rsquo;s official repos is ancient. 
When I <code>go get gopass</code> but I got a <a href="https://github.com/gopasspw/gopass/issues/1252">known error</a>.
Building from source is not an option cause I want my password manager to auto-update.
</p></div></div>


</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2020-04-05-3DPrintingCorona.html</guid>
<link>https://momi.ca/posts/2020-04-05-3DPrintingCorona.html</link>
<pubDate>Sun, 05 Apr 2020 00:00:00 -0700</pubDate>
<title>3D Printing MASK STRAPS "Ear Savers"</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">3D Printing MASK STRAPS "Ear Savers"</h1>
<p class="date">Published 2020-04-05 on <a href="https://momi.ca/">Anjan's Homepage</a></p>


<p>
The <a href="https://sites.google.com/view/gvrd-face-shield-printers/home">BC COVID-19 3D Printing Group</a> has a list of designs they would like people to help print to ensure medical personnel are protected during the COVID-19 epidemic.
</p>

<p>
This post has two purposes: 
</p>
<ol class="org-ol">
<li>Make anyone reading this blog aware of the initiative and assist with 3D printing if they can. You may have a group that needs help in your local area.</li>
<li>Share my tips for &ldquo;mass producing&rdquo; the MASK STRAPS &ldquo;Ear Savers&rdquo;</li>
</ol>

<p>
I am printing &ldquo;Surgical mask ear saver&rdquo; by sniffle from thingiverse: <a href="https://www.thingiverse.com/thing:4251460">https://www.thingiverse.com/thing:4251460</a>
</p>

<blockquote>
<p>
NOTE: Before switching your workflow to this, please print a sample with these settings and confirm that these settings do not affect the functionality of your products. 
You should ask the #qualitycontrol channel on the BC COVID-19 3D Printing Group slack or the medical personnel you are making your products for.
</p>
</blockquote>

<p>
To speed up printing, I have done the following two things:
</p>
<ol class="org-ol">
<li>Change layer height to 0.3 mm</li>
<li>Set the extrusion width to 0.7 mm.</li>
</ol>

<p>
These adjustments lowered the print time for each part <b>from 33 minutes to 9 minutes</b> on
my creality ender 3 with the stock 0.4 mm nozzle using generic PLA.
</p>

<p>
Furthermore, I am printing 8 ear savers on one bed so that I don&rsquo;t have to scrape
every 9 minutes. My printer is relatively new and I was lucky enough to get a flat bed.
See figure below:
</p>

<img src="https://momi.ca/images/2020-04-05-corona/cura.png" alt="8 Ear Savers on One Bed - Cura Image">


<p>
If you have a warped bed, you may not be able to print all over your bed like I have.
</p>

<p>
Hopefully this helps other makers looking for the most efficient model to print.
<b>Please ask your local 3D printing group or medical personnel about their needs before printing.</b>
</p>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2020-03-20-doas.html</guid>
<link>https://momi.ca/posts/2020-03-20-doas.html</link>
<pubDate>Fri, 20 Mar 2020 00:00:00 -0700</pubDate>
<title>OpenBSD's doas on Voidlinux</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">OpenBSD's doas on Voidlinux</h1>
<p class="date">Published 2020-03-20 on <a href="https://momi.ca/">Anjan's Homepage</a></p>



<p>
OpenBSD&rsquo;s <code>doas</code> is a minimal replacement for <code>sudo</code>. If you run a single user
linux box, you can replace <code>sudo</code> with <code>doas</code> in order to have a simpler <code>sudo</code>
configuration and usage experience.
</p>

<p>
First, install <code>doas</code> using <code>xbps-install</code>.
</p>

<div class="org-src-container">
<pre class="src src-bash"><span style="color: #ECBE7B;">sudo</span> xbps-install opendoas
</pre>
</div>

<p>
Doas rules have the following format:
</p>

<pre class="example">
permit|deny [options] identity [as target] [cmd command [args ...]]
</pre>

<p>
I like adding the <code>persist</code> option to my rule so that if I enter my password
once, <code>doas</code> remembers and doesn&rsquo;t constantly ask me to authenticate.
</p>

<p>
Edit <code>/etc/doas.conf</code> and add the following line:
</p>

<pre class="example">
permit persist &lt;YOURUSERNAME&gt; as root
</pre>

<p>
This allows <code>&lt;YOURUSERNAME&gt;</code> to run any command as root. 
</p>

<div id="outline-container-orgbebe84d" class="outline-2">
<h2 id="orgbebe84d">Sudoedit replacement with Doas</h2>
<div class="outline-text-2" id="text-orgbebe84d">
<p>
The rationale for <code>sudoedit</code> is that text editors are complex programs that
could cause damage if given unchecked root access. As such,
it&rsquo;s better to use the <code>cp</code> command to copy the file so that a non-root user can
edit it, run your editor as a non-root user to edit the file, and on exit run
<code>cp</code> to overwrite the original file with the user edited file. To make a
<code>sudoedit</code> with <code>doas</code>, you can make a wrapper copy files around.
</p>

<p>
However, if you use emacs, you can easily create a sudoedit replacement for
<code>doas</code>. TRAMP for emacs supports <code>doas</code>. As such, I add the following to my
<code>.bashrc</code>:
</p>

<div class="org-src-container">
<pre class="src src-bash"><span style="color: #c678dd;">doasedit</span><span style="color: #51afef;">(){</span>
    emacsclient -nw /doas::$<span style="color: #c678dd;">{</span><span style="color: #da8548; font-weight: bold;">1</span><span style="color: #c678dd;">}</span>
<span style="color: #51afef;">}</span>
</pre>
</div>

<p>
Running <code>doasedit &lt;filename&gt;</code> now allows you to edit the file like sudoedit!
</p>
</div>
</div>

<div id="outline-container-orgab68cbd" class="outline-2">
<h2 id="orgab68cbd">Uninstalling sudo</h2>
<div class="outline-text-2" id="text-orgab68cbd">
<p>
On Voidlinux, <code>sudo</code> is part of the <code>base-system</code> group. If we want to
remove <code>sudo</code>, we must tell xbps that <code>sudo</code> can be substituted by <code>doas</code>.
</p>

<p>
To substitute <code>doas</code> for <code>sudo</code>, I edited <code>/etc/xbps.d/99-my-settings.conf</code> and
added:
</p>

<pre class="example">
virtualpkg=sudo:opendoas
</pre>

<p>
See <code>man xbps.d</code> for more details on the <code>virtualpkg</code> keyword.
</p>

<p>
To remove <code>sudo</code>, we can now run:
</p>
<div class="org-src-container">
<pre class="src src-bash">doas xbps-remove <span style="color: #ECBE7B;">sudo</span>
</pre>
</div>
</div>
</div>


<div id="outline-container-orgd137558" class="outline-2">
<h2 id="orgd137558">Further Reading</h2>
<div class="outline-text-2" id="text-orgd137558">
<ol class="org-ol">
<li><a href="https://flak.tedunangst.com/post/doas-mastery">doas mastery on tedunangst.com</a></li>
</ol>
</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2019-11-17-pcipassthrough.html</guid>
<link>https://momi.ca/posts/2019-11-17-pcipassthrough.html</link>
<pubDate>Sun, 17 Nov 2019 00:00:00 -0800</pubDate>
<title>Tips for PCI Passthrough</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Tips for PCI Passthrough</h1>
<p class="date">Published 2019-11-17 on <a href="https://momi.ca/">Anjan's Homepage</a></p>


<p>
I recently fired up my windows virtual machine to play The Outer Worlds.
However, I ran into a number of issues that I would like to
document in case I run into them again or someone else does.
</p>


<div id="outline-container-orga1d7671" class="outline-2">
<h2 id="orga1d7671">AMD GPU Guest Driver Install Black Screen at 40%</h2>
<div class="outline-text-2" id="text-orga1d7671">
<p>
This was the most frustrating issue I ran into. When I tried to install the
latest AMD driver for my RX 580, the screen of my windows guest would go black and I would never see
the windows desktop again.
</p>

<p>
A common fix for this issue is changing to the Q35 chipset in your setup of your
virtual machine <sup><a id="fnr.1" class="footref" href="https://momi.ca/#fn.1" role="doc-backlink">1</a></sup>. However, this did not
completely fix my issue. Another thing I had to do to get the driver install
working was setting up UEFI firmware on the virtual machine.
Unfortunately, there was a bug that was introduced in the newer versions of
libvirtd on arch that caused libvirtd to not recognize my installed OVMF <sup><a id="fnr.2" class="footref" href="https://momi.ca/#fn.2" role="doc-backlink">2</a></sup>.
So after I made sure I had installed OVMF using <a href="https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF#Setting_up_an_OVMF-based_guest_VM">this guide</a>, I downgraded
libvirtd to version 5.6.0.
</p>

<p>
Finally, I was able to create a new virtual machine in virt-manager (using UEFI
and Q35 chipset), install windows in the virtual machine, and update my guest AMD GPU driver.
Note: you can upgrade to the latest libvirtd after you have installed windows.
</p>
</div>
</div>

<div id="outline-container-org78d0352" class="outline-2">
<h2 id="org78d0352">The Outer Worlds, the character takes forever to talk</h2>
<div class="outline-text-2" id="text-org78d0352">
<p>
This is a bug in the game but it&rsquo;s exasperated by me not using CPU pinning as
described here:
<a href="https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF#CPU_pinning">Archwiki - PCI passthrough via OVMF: Performance Tuning - CPU pinning</a>
</p>

<p>
I have a AMD Ryzen 7 1700 and used <code>4c/2t AMD CPU example (Before ComboPi AGESA)</code> from the CPU pinning guide.
Setting up CPU pinning fixed this issue.
</p>
</div>
</div>

<div id="outline-container-org0408b7e" class="outline-2">
<h2 id="org0408b7e">BIOS Version</h2>
<div class="outline-text-2" id="text-org0408b7e">
</div>
<div id="outline-container-org67c34f3" class="outline-3">
<h3 id="org67c34f3">AGESA 1.0.0.4 Fix</h3>
<div class="outline-text-3" id="text-org67c34f3">
<p>
<span class="timestamp-wrapper"><span class="timestamp">&lt;2020-07-06 Mon&gt;</span></span>
</p>

<p>
AGESA 1.0.0.4 patch fixes the issues with AGESA 0.0.7.2.
After enabling SVM and IOMMU in the bios with AGESA 1.0.0.4., make sure you change AER and ACS options in the bios from auto/disabled to enabled <sup><a id="fnr.3" class="footref" href="https://momi.ca/#fn.3" role="doc-backlink">3</a></sup>.
You can find these options under peripherals -&gt; AMD CBS in the AX370 gaming 5 bios.
</p>
</div>
</div>

<div id="outline-container-org98d20ba" class="outline-3">
<h3 id="org98d20ba">Old Issue with AGESA 0.0.7.2</h3>
<div class="outline-text-3" id="text-org98d20ba">
<p>
<b><b>THIS IS THE OLD WAY TO FIX THIS ISSUE. DO NOT USE THIS METHOD</b></b>
</p>

<p>
The AMD AGESA update 0.0.7.2 breaks VFIO <sup><a id="fnr.4" class="footref" href="https://momi.ca/#fn.4" role="doc-backlink">4</a></sup>. You can apply a patch to
use the latest version of the Linux kernel and latest AGESA or you can downgrade
AGESA.
</p>

<p>
I was patching and upgrading everything previously but I ran into an issue where the VFIO still didn&rsquo;t
work after the patch. This might have been something only on my machine as I
haven&rsquo;t seen other people complain. The recommended approach to
fixing this issue is downgrading your BIOS <sup><a id="fnr.4.100" class="footref" href="https://momi.ca/#fn.4" role="doc-backlink">4</a></sup>. As such, I finally gave
in and downgraded my host BIOS.
</p>

<p>
My host motherboard is a gigabyte GA-AX370-Gaming 5 (rev 1.0). The downgrade was as
simple as downloading the zip (<code>mb_bios_ga-ax370-gaming5_f31.zip</code>) from the
gigabyte website and flashing it via the host bios.
</p>
</div>
</div>
</div>

<div id="outline-container-orgb6b2662" class="outline-2">
<h2 id="orgb6b2662">Speeding up the troubleshooting process</h2>
<div class="outline-text-2" id="text-orgb6b2662">
<p>
To troubleshoot these issues, I had to reinstall Windows approximately 10 times. To speed up the
process, I made a copy of windows&rsquo; qcow2 file on my host. Anytime windows would break, I
would copy over the working copy before I tried something. Of course, this
method only works if you have your chipset and UEFI firmware set correctly when
you first created and installed windows on your virtual machine qcow2.
</p>

<p>
This is a very handy method to babysit windows. I am paranoid about when I have a solidworks project
I&rsquo;m working on and a Windows update breaks my system. This is the original
reason I setup Windows in a VM.
</p>
</div>
</div>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">

<div class="footdef"><sup><a id="fn.1" class="footnum" href="https://momi.ca/#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://www.reddit.com/r/VFIO/comments/dm0agm/screen_of_guest_goes_black_on_amd_gpu_driver/">Reddit /r/vfio - Screen of guest goes black on AMD GPU driver install</a>
You must nuke your old virtual machine and re-setup the virtual
machine in virt-manager to do this.
</p></div></div>

<div class="footdef"><sup><a id="fn.2" class="footnum" href="https://momi.ca/#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://bbs.archlinux.org/viewtopic.php?id=250066">Arch forums - Libvirt fails to detect OVMF/UEFI firmware</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.3" class="footnum" href="https://momi.ca/#fnr.3" role="doc-backlink">3</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://www.reddit.com/r/VFIO/comments/e20fz4/agesa_1004_patch_b_finally_fixes_pci_passthrough/f963kob/">https://www.reddit.com/r/VFIO/comments/e20fz4/agesa_1004_patch_b_finally_fixes_pci_passthrough/f963kob/</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.4" class="footnum" href="https://momi.ca/#fnr.4" role="doc-backlink">4</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://www.reddit.com/r/VFIO/wiki/known_issues#wiki_amd_agesa_0.0.7.2_-_unable_to_use_vfio_after_bios_update">Reddit /r/vfio - Known Issues</a>
</p></div></div>


</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2019-11-14-srhtandroid.html</guid>
<link>https://momi.ca/posts/2019-11-14-srhtandroid.html</link>
<pubDate>Thu, 14 Nov 2019 00:00:00 -0800</pubDate>
<title>Sourcehut Android Gradle Continuous Integration</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Sourcehut Android Gradle Continuous Integration</h1>
<p class="date">Published 2019-11-14 on <a href="https://momi.ca/">Anjan's Homepage</a></p>



<div id="outline-container-orgc840eaf" class="outline-2">
<h2 id="orgc840eaf">Introduction to Sourcehut</h2>
<div class="outline-text-2" id="text-orgc840eaf">
<p>
Sourcehut is my git hosting platform of choice. Sourcehut offers a continious integration
platform called builds.sr.ht. Here is how to setup build.sr.ht to compile
android projects with gradle.
</p>
</div>
</div>

<div id="outline-container-org35591ef" class="outline-2">
<h2 id="org35591ef">Secrets</h2>
<div class="outline-text-2" id="text-org35591ef">
<p>
Before we begin, we need to create the <code>android-sdk-license</code> build secret.
This file will tell the android build service (gradle in this guide) that you have
agreed to all the required licenses for the dependancies upon which your project
depends.
</p>

<p>
If you have built your android apps on your pc, you already have this file and
are ready to go. Open up <a href="https://builds.sr.ht/secrets">sr.ht build secrets</a>. Select <code>Secret Type: File</code> and
enter the following details for your new secret:
</p>

<div class="org-src-container">
<pre class="src src-yaml"><span style="color: #dcaeea;">Name</span>: androidLicense

<span style="color: #dcaeea;">Path</span>:  ~/android/licenses/android-sdk-license

<span style="color: #dcaeea;">Mode</span>: 644
</pre>
</div>


<p>
Click browse and navigate to where you have installed the android
sdk on your local machine. Upload the file called <code>android-sdk-license</code> in the folder <code>licenses</code>.
</p>

<p>
Finally, in sr.ht build secrets, click <code>Add Secret</code>.
</p>

<p>
On the right pane, a new secret should appear. There should be a UUID that
represents the license file you just uploaded. When you include this UUID in
your build manifest, <code>android-sdk-license</code> will be copied to the correct folder
in your build environment.
</p>

<p>
If you would like to send your built apks to a vps, make sure you add your ssh
config (nonstandard ports) and a new ssh private key to your secrets.
</p>
</div>
</div>

<div id="outline-container-orgf684667" class="outline-2">
<h2 id="orgf684667">.build.yml</h2>
<div class="outline-text-2" id="text-orgf684667">
<p>
Finally, we have to make the <code>.build.yml</code> file on the root of your git
repository on your local machine. You can use
sr.ht to lint and check whether your app will build on a clean machine with the
latest version of gradle (build). I take it one step further and upload my unsigned
build to my vps (deploy). This creates fresh unsigned builds for the latest commit of my
app.
</p>

<p>
Here is my .build.yml from my own project <a href="https://git.sr.ht/~anjan/lift">lift: a free software workout app</a>.
</p>

<div class="org-src-container">
<pre class="src src-yaml"><span style="color: #5B6268;"># </span><span style="color: #5B6268;">I use archlinux for my image because I want to test whether my app</span>
<span style="color: #5B6268;"># </span><span style="color: #5B6268;">builds with the latest release of gradle. Features are often deprecated on</span>
<span style="color: #5B6268;"># </span><span style="color: #5B6268;">android and I did not know that my app was using alot of deprecated features</span>
<span style="color: #5B6268;"># </span><span style="color: #5B6268;">until I tried to build with the latest version of gradle.</span>
<span style="color: #dcaeea;">image</span>: archlinux
<span style="color: #dcaeea;">packages</span>:
  - gradle
  - rsync
<span style="color: #5B6268;"># </span><span style="color: #5B6268;">The sr.ht git repo that contains my application. Enter your own app's git repo here</span>
<span style="color: #dcaeea;">sources</span>:
  - https://git.sr.ht/~anjan/lift
<span style="color: #dcaeea;">environment</span>:
  <span style="color: #dcaeea;">deploy</span>: deploy@momi.ca
<span style="color: #dcaeea;">secrets</span>:
<span style="color: #5B6268;"># </span><span style="color: #5B6268;">UUIDs for ssh and android license secrets</span>
  - 88e37d5a-6a50-4a14-b9d5-a944dc17bf50
  - b0ee6bc9-84d5-4962-a8cb-fc0a9e002bfa
  - 336f1246-50a2-464a-b3fe-1b54cba37a45
<span style="color: #5B6268;"># </span><span style="color: #5B6268;">Tell builds to send me an email if the build fails</span>
<span style="color: #dcaeea;">triggers</span>:
  - <span style="color: #dcaeea;">action</span>: email
    <span style="color: #dcaeea;">condition</span>: failure
    <span style="color: #dcaeea;">to</span>: Anjandev Momi &lt;anjan -at- momi.ca&gt;
<span style="color: #dcaeea;">tasks</span>:
  - <span style="color: #dcaeea;">build</span>: |
      <span style="color: #98be65;">export ANDROID_SDK_ROOT=~/android</span>
<span style="color: #98be65;">      cd lift</span>
<span style="color: #98be65;">      gradle assemble</span>
  - <span style="color: #dcaeea;">deploy</span>: |
      <span style="color: #98be65;">cd lift/app/build/outputs/apk/debug</span>
      sshopts=<span style="color: #98be65;">"-o StrictHostKeyChecking=no"</span>
      rsync --rsh=<span style="color: #98be65;">"ssh $sshopts"</span> -rP . ${deploy}:/srv/http/android/android
</pre>
</div>

<p>
Finally, add this file in git, commit, and push to sr.ht. Your build should begin!
</p>
</div>
</div>

<div id="outline-container-orgac7d02f" class="outline-2">
<h2 id="orgac7d02f">Installing the rsynced app</h2>
<div class="outline-text-2" id="text-orgac7d02f">
<p>
Be advised, you will not be able to install the apk that is rsynced by your
.build.yml until you sign it using something like <code>jarsigner</code>. I do not sign my
latest commit builds because they are strictly for myself.
</p>

<p>
You could generate a keystore using <code>jarsigner</code>, upload it as a secret to
sr.ht build secrets, and then add a couple extra lines before rsyncing to sign
the app using jarsigner. However, I would prefer to use fdroid&rsquo;s build tools at
that point. Please do not store large files on sr.ht - use a different git
host. The documentation for fdroid&rsquo;s build tools are here: <a href="https://f-droid.org/en/docs/Publishing_Nightly_Builds/">f-droid: publishing nightly builds</a>
</p>

<p>
When sr.ht supports large files, I will write a blog post about using f-droid build
tools on sr.ht.
</p>
</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2019-10-30-scholar.html</guid>
<link>https://momi.ca/posts/2019-10-30-scholar.html</link>
<pubDate>Wed, 30 Oct 2019 00:00:00 -0700</pubDate>
<title>Software Freedom and Scholarship: Reproducible Research</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Software Freedom and Scholarship: Reproducible Research</h1>
<p class="date">Published 2019-10-30 on <a href="https://momi.ca/">Anjan's Homepage</a></p>



<p>
Reproducibility is a critical feature of science.
The chaotic features of nature contribute to artifacts in our
measurements, but these errors can be mitigated by taking more measurements <sup><a id="fnr.1" class="footref" href="https://momi.ca/#fn.1" role="doc-backlink">1</a></sup>. The subsequent trials can reveal the random variation, and hint at the true quantity being sought.
</p>

<p>
Reproducibility is no guarantee of correctness. It will never indicate if the correct thing is being measured, or if it&rsquo;s even important. It does, however allow for more reliable results in science.
</p>


<div id="outline-container-orgdb5394b" class="outline-2">
<h2 id="orgdb5394b">Claerbout&rsquo;s Principal</h2>
<div class="outline-text-2" id="text-orgdb5394b">
<blockquote>
<p>
An article about computational result is advertising, not scholarship. Actual
scholarship is the full software environment, code and data, that produced the
result. - Claerbout and Karrenbach, Proceedings of the 62nd Annual International
Meeting of the Society of Exploration Geophysics. 1992
</p>
</blockquote>

<p>
The issue of computational result being present as scholarship is common today.
When a study reviewed
613 papers in eight computer science conferences and five ACM journals, they
found they could only reproduce 24.9% <sup><a id="fnr.2" class="footref" href="https://momi.ca/#fn.2" role="doc-backlink">2</a></sup>. As an anecdote: I have seen plenty of
articles where the code is not available or the code is proprietary.
The lack of reproducibility in science is related to a number of other issues but
in this post, I would like to detail one: studies often present results that were
generated using proprietary software.
As a result of scholars using software that does not guarantee the four essential freedoms,
distribution and investigation is limited. Consequently, reproducibility is hindered.
Furthermore, scholars often neglect publishing the in-house code used to
generate the results. As a result, readers cannot run and inspect the software on their own
computers.
</p>
</div>
</div>

<div id="outline-container-orga0208ee" class="outline-2">
<h2 id="orga0208ee">Reproducible Research</h2>
<div class="outline-text-2" id="text-orga0208ee">
<p>
Reproducible research is academic research where the final result
contains the publication of everything that was used in the project: including
notebooks and full computational
environment. This computational environment includes: the code, data, etc used
to produce the academic work <sup><a id="fnr.3" class="footref" href="https://momi.ca/#fn.3" role="doc-backlink">3</a></sup> <sup>, </sup><sup><a id="fnr.4" class="footref" href="https://momi.ca/#fn.4" role="doc-backlink">4</a></sup>. In other words,
reproducible research implores scholars to use and write software that guarantees its users
the following essential freedoms <sup><a id="fnr.4.100" class="footref" href="https://momi.ca/#fn.4" role="doc-backlink">4</a></sup> <sup>, </sup><sup><a id="fnr.5" class="footref" href="https://momi.ca/#fn.5" role="doc-backlink">5</a></sup>:
</p>

<blockquote>
<ol class="org-ol">
<li>The freedom to run the program as you wish, for any purpose (freedom 0).</li>
<li>The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.</li>
<li>The freedom to redistribute copies so you can help your neighbour (freedom 2).</li>
<li>The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.</li>
</ol>
</blockquote>

<p>
The prevalence of proprietary software in academia is a threat to the legitimacy
of academia. The programs used and their source code should be expected in the Materials and Methods section
of an academic article alongside the four essential freedoms.
</p>
</div>
</div>

<div id="outline-container-org0013ad5" class="outline-2">
<h2 id="org0013ad5">Case Study</h2>
<div class="outline-text-2" id="text-org0013ad5">
<p>
In the 2010 issue of Economic Review, economists Carmen Reinhart and Kenneth
Rogoff (RR) published a paper whose conclusions favoured austerity. Specifically, it was concluded that a
given country&rsquo;s GDP declines by two percent when &ldquo;gross external debt reaches 60
percent of GDP&rdquo; and when external debt is greater than 90%, GDP growth is
halved <sup><a id="fnr.6" class="footref" href="https://momi.ca/#fn.6" role="doc-backlink">6</a></sup>.
The paper was published in the aftermath of the 2008 economic
crash and was widely cited by Paul Ryan&rsquo;s Republican Party Budget and British MP
George Osborne <sup><a id="fnr.7" class="footref" href="https://momi.ca/#fn.7" role="doc-backlink">7</a></sup> <sup>, </sup><sup><a id="fnr.8" class="footref" href="https://momi.ca/#fn.8" role="doc-backlink">8</a></sup>.
</p>

<p>
Whatever your political leanings may be, the paper has multiple methodological
flaws <sup><a id="fnr.9" class="footref" href="https://momi.ca/#fn.9" role="doc-backlink">9</a></sup>. Hermon, Ash
and Pollin (HAP) requested the code and data. HAP published a rebuttal which showed a
coding error that resulted in the results ignoring data from several countries <sup><a id="fnr.7.100" class="footref" href="https://momi.ca/#fn.7" role="doc-backlink">7</a></sup>.
RR conceded that this coding error had been made <sup><a id="fnr.10" class="footref" href="https://momi.ca/#fn.10" role="doc-backlink">10</a></sup>.
</p>

<p>
Beyond quality, this case study portrays the threat that irreproducible
research has towards society. If HAP did not have the freedom to check RR&rsquo;s research,
we might still be operating under the conclusions of the paper.
</p>

<blockquote>
<p>
Free software is about having control over the technology we use in our homes,
schools and businesses, where computers work for our individual and communal
benefit.<sup><a id="fnr.11" class="footref" href="https://momi.ca/#fn.11" role="doc-backlink">11</a></sup>
</p>
</blockquote>

<p>
Free software is necessary to create
a free society in which we are able to criticize the decisions which are
generated by computers.
</p>
</div>
</div>

<div id="outline-container-org927ce1b" class="outline-2">
<h2 id="org927ce1b">Software Installed in Schools</h2>
<div class="outline-text-2" id="text-org927ce1b">
<p>
On a larger scale, the issue of proprietary software restrictions appears in many ordinary computer labs.
Students are at the mercy of their institutions to use whatever software is installed.
It may be the industry standard, but the benefits associated with being the
industry standard end when students want to
learn and critique the decisions the software makes in their lives.
Restrictions are rampant with proprietary software, and non free software often
resists reverse engineering to prevent discovering how calculations are done.
Indeed, the license restrictions threatens the user with monetary and/or legal
repercussions for investigating the system.
Common examples are Matlab, Solidworks, Eagle, ANSYS.
In this way, proprietary software is a threat to
the social mission of
school itself: &ldquo;to teach students to be citizens of a strong, capable, independent,
cooperating and free society&rdquo; <sup><a id="fnr.12" class="footref" href="https://momi.ca/#fn.12" role="doc-backlink">12</a></sup>.
</p>

<p>
Free software has an exclusive feature that it guarantees to students: the
freedom to learn <sup><a id="fnr.13" class="footref" href="https://momi.ca/#fn.13" role="doc-backlink">13</a></sup>.
Scholars are not to be blamed for
prevalence of proprietary software in schools. Proprietary software is
entrenched in society today and we cannot control the
circumstances we grow up in. Going forward, it is up to educators
to recognize the threat proprietary software poses to society, and
promote software that does social good.
Indeed, educators can lead in making software freedom the industry standard.
</p>
</div>
</div>

<div id="outline-container-orgc14caee" class="outline-2">
<h2 id="orgc14caee">What You Can Do</h2>
<div class="outline-text-2" id="text-orgc14caee">
<p>
In an ideal world, all the software used in a study (including its dependencies
ie. the operating system and programming language) would be released as free
software.
Freedom in software at this point will come gradually. For example, if you must
use Matlab, please consider publishing your scripts under a free license
  <sup><a id="fnr.13.100" class="footref" href="https://momi.ca/#fn.13" role="doc-backlink">13</a></sup> <sup>, </sup><sup><a id="fnr.14" class="footref" href="https://momi.ca/#fn.14" role="doc-backlink">14</a></sup>.
</p>

<p>
If you are making a study, please commit yourself to using as much free software
that is available and you have time to transition to.
I hope this article serves as an introduction to why software
freedom matters in academia. Precisely, the future of academia, its
legitimacy, and its ability to criticize the system we live under is at risk.
</p>

<p>
This post was inspired by this <a href="https://www.youtube.com/watch?v=CGnt_PWoM5Y">video</a>. Special thanks to Evan Misshula for
describing the issue of reproducible science and its relation to software freedom.
Please note: I love emacs but reproducible research is not as difficult as
learning emacs and using it for your research. In the first half Evan Misshula&rsquo;s
talk, he recommends other free software projects with lower barriers to entry
that are also committed to helping scholars create reproducible research. For
notebooks that encourage radical reproducibility: <a href="https://jupyter.org/">jupyter</a> <a href="https://rmarkdown.rstudio.com/">Rmarkdown</a>
</p>

<p>
Other notable projects for scholars include: <a href="http://www.runmycode.org/">http://www.runmycode.org/</a> and <sup><a id="fnr.2.100" class="footref" href="https://momi.ca/#fn.2" role="doc-backlink">2</a></sup>.
</p>

<p>
Of course, I am available via email: anjan -at- momi.ca for free software
recommendations =).
</p>

<p>
Further readings with recommendations are in the footnotes.
Notably: <sup><a id="fnr.2.100" class="footref" href="https://momi.ca/#fn.2" role="doc-backlink">2</a></sup> <sup>, </sup><sup><a id="fnr.4.100" class="footref" href="https://momi.ca/#fn.4" role="doc-backlink">4</a></sup> <sup>, </sup><sup><a id="fnr.3.100" class="footref" href="https://momi.ca/#fn.3" role="doc-backlink">3</a></sup>.
</p>
</div>
</div>

<div id="outline-container-orgc010508" class="outline-2">
<h2 id="orgc010508">Final Notes</h2>
<div class="outline-text-2" id="text-orgc010508">
<p>
I use proprietary software for my academic work. I use ansys,
matlab, solidworks, etc. Proprietary software is entrenched in society and the
free software movement has a lot of work to do. This is an article to
make other scholars aware of software freedom and what it can do for academia.
</p>

<p>
guest editor: Colin Leitner <a href="http://www3.telus.net/colinl333">http://www3.telus.net/colinl333</a>
</p>
</div>
</div>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">

<div class="footdef"><sup><a id="fn.1" class="footnum" href="https://momi.ca/#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
JCGM 100:2008. Evaluation of measurement data – Guide to the
expression of uncertainty in measurement (PDF), Joint Committee for Guides in
Metrology, 2008 Available Online: <a href="http://www.bipm.org/utils/common/documents/jcgm/JCGM_100_2008_E.pdf">http://www.bipm.org/utils/common/documents/jcgm/JCGM_100_2008_E.pdf</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.2" class="footnum" href="https://momi.ca/#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
Christian Collberg, Todd Proebsting, Gina Morail, Akash Shankaran, Zuoming Shi, and Alex M Warren, “Measuring Reproducibility in Computer Systems Research,” University of Arizona, Mar. 2014.
Available Online: <a href="http://reproducibility.cs.arizona.edu/v1/tr.pdf">http://reproducibility.cs.arizona.edu/v1/tr.pdf</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.3" class="footnum" href="https://momi.ca/#fnr.3" role="doc-backlink">3</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
&ldquo;Reproducible Research,&rdquo; in Computing in Science &amp; Engineering, vol. 12, no. 5, pp. 8-13, Sept.-Oct. 2010.
doi: 10.1109/MCSE.2010.113
Available Online: <a href="http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;arnumber=5562471&amp;isnumber=5562464">http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;arnumber=5562471&amp;isnumber=5562464</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.4" class="footnum" href="https://momi.ca/#fnr.4" role="doc-backlink">4</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
Buckheit, Jonathan B.; Donoho, David L. (May 1995).
WaveLab and Reproducible Research (PDF) (Report). California, United States:
Stanford University, Department of Statistics. Technical Report No. 474.
Retrieved 2019-10-29. available: <a href="https://statistics.stanford.edu/sites/default/files/EFS%20NSF%20474.pdf">https://statistics.stanford.edu/sites/default/files/EFS%20NSF%20474.pdf</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.5" class="footnum" href="https://momi.ca/#fnr.5" role="doc-backlink">5</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
GNU Operating System, “What is free software?,” GNU Operating System. [Online]. Available: <a href="https://www.gnu.org/philosophy/free-sw.html.en">https://www.gnu.org/philosophy/free-sw.html.en</a>. [Accessed: 29-Oct-2019].
</p></div></div>

<div class="footdef"><sup><a id="fn.6" class="footnum" href="https://momi.ca/#fnr.6" role="doc-backlink">6</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
C. M. Reinhart and K. S. Rogoff, “Growth in a Time of Debt,”
American Economic Review, vol. 100, no. 2, pp. 573–578, May 2010. Available
Online: <a href="https://dash.harvard.edu/bitstream/handle/1/11129154/Reinhart_Rogoff_Growth_in_a_Time_of_Debt_2010.pdf?sequence=1">https://dash.harvard.edu/bitstream/handle/1/11129154/Reinhart_Rogoff_Growth_in_a_Time_of_Debt_2010.pdf?sequence=1</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.7" class="footnum" href="https://momi.ca/#fnr.7" role="doc-backlink">7</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
Thomas Herndon, Michael Ash, and Robert Pollin, “Does High
Public Debt Consistently Stifle Economic Growth? A Critique of Reinhart and
Rogoff,” no. 322, Apr. 2013. Available Online: <a href="https://web.archive.org/web/20130418125357if_/http://www.peri.umass.edu/fileadmin/pdf/working_papers/working_papers_301-350/WP322.pdf">https://web.archive.org/web/20130418125357if_/http://www.peri.umass.edu/fileadmin/pdf/working_papers/working_papers_301-350/WP322.pdf</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.8" class="footnum" href="https://momi.ca/#fnr.8" role="doc-backlink">8</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
James Lyons, “George Osborne’s favourite ‘godfathers of
austerity’ economists admit to making error in research,” Mirror, 17-Apr-2013.
Available Online: <a href="https://www.mirror.co.uk/news/uk-news/george-osbornes-favourite-economists-reinhart-1838219">https://www.mirror.co.uk/news/uk-news/george-osbornes-favourite-economists-reinhart-1838219</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.9" class="footnum" href="https://momi.ca/#fnr.9" role="doc-backlink">9</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
Growth in a Time of Debt (n.d.). In Wikipedia. Retrieved 2019-10-30, from: <a href="https://en.wikipedia.org/wiki/Growth_in_a_Time_of_Debt#Methodological_flaws">https://en.wikipedia.org/wiki/Growth_in_a_Time_of_Debt#Methodological_flaws</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.10" class="footnum" href="https://momi.ca/#fnr.10" role="doc-backlink">10</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
Carmen Reinhart and Kenneth Rogoff, “Full Response From Reinhart and Rogoff,” 17-Apr-2013.
Available Online: <a href="https://archive.nytimes.com/www.nytimes.com/interactive/2013/04/17/business/17economix-response.html">https://archive.nytimes.com/www.nytimes.com/interactive/2013/04/17/business/17economix-response.html</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.11" class="footnum" href="https://momi.ca/#fnr.11" role="doc-backlink">11</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
Big Brother Watch, “Free Software,” Big Brother Watch UK. [Online]. Available: <a href="https://bigbrotherwatch.org.uk/about/free-software/">https://bigbrotherwatch.org.uk/about/free-software/</a>. [Accessed: 29-Oct-2019].
</p></div></div>

<div class="footdef"><sup><a id="fn.12" class="footnum" href="https://momi.ca/#fnr.12" role="doc-backlink">12</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
GNU Operating System, “Why Educational Institutions Should Use and Teach Free Software,” GNU Operating System. [Online]. Available: <a href="https://www.gnu.org/education/edu-why.html">https://www.gnu.org/education/edu-why.html</a>. [Accessed: 29-Oct-2019].
</p></div></div>

<div class="footdef"><sup><a id="fn.13" class="footnum" href="https://momi.ca/#fnr.13" role="doc-backlink">13</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
The four freedoms are gauranteed by software licenses ie. GPL,
MIT, BSD licenses. GNU Operating System, “Various Licenses and Comments about Them,” GNU Operating System. [Online]. Available: <a href="https://www.gnu.org/licenses/license-list.html">https://www.gnu.org/licenses/license-list.html</a>. [Accessed: 29-Oct-2019].
</p></div></div>

<div class="footdef"><sup><a id="fn.14" class="footnum" href="https://momi.ca/#fnr.14" role="doc-backlink">14</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
V. Stodden et al., “Enhancing reproducibility for
computational methods,” Science, vol. 354, no. 6317, pp. 1240–1241, Dec. 2016.
Available Online: <a href="https://science.sciencemag.org/content/354/6317/1240/tab-pdf">https://science.sciencemag.org/content/354/6317/1240/tab-pdf</a>
</p></div></div>


</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2019-08-15-socialmediaregret.html</guid>
<link>https://momi.ca/posts/2019-08-15-socialmediaregret.html</link>
<pubDate>Thu, 15 Aug 2019 00:00:00 -0700</pubDate>
<title>Why you will regret putting your creative works on Instagram, Linkedin, Facebook, etc</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Why you will regret putting your creative works on Instagram, Linkedin, Facebook, etc</h1>
<p class="date">Published 2019-08-15 on <a href="https://momi.ca/">Anjan's Homepage</a></p>


<img src="https://imgs.xkcd.com/comics/content_protection.png"
alt="content protection xkcd"
title="content protection xkcd"
class="img"
</img>

<p>
<a href="https://xkcd.com">Source: xkcd.com</a>
</p>

<p>
<a href="https://creativecommons.org/licenses/by-nc/2.5/">License: Attribution-NonCommercial 2.5 Generic (CC BY-NC 2.5)</a>
</p>

<p>
I often have friends recommend me their art pages or creative works that solely
exist on the corporate social media websites:
</p>

<ul class="org-ul">
<li>instagram</li>
<li>medium</li>
<li>facebook</li>
<li>tumblr</li>
<li>wix</li>
</ul>

<p>
If you care about discoverability and long term viability of your online
presence, creating your own website is better in every way.
</p>

<p>
The common criticism against creating your own website is that it&rsquo;s a lot of work
for something that these corporate platforms provide for free. Creating your own
website is like
buying a house, using corporate social media is like renting.
Like house ownership gives you autonomy in your life, owning
your own webspace gives you creative freedom.
</p>

<div id="outline-container-org0bef998" class="outline-2">
<h2 id="org0bef998">Copyright</h2>
<div class="outline-text-2" id="text-org0bef998">
<p>
Instagram&rsquo;s <a href="https://help.instagram.com/478745558852511/?_fb_noscript=1">terms of service</a> states: by uploading your art to instagram, &ldquo;you hereby grant
to us a non-exclusive, royalty-free, transferable, sub-licensable, worldwide
license to host, use, distribute, modify, run, copy, publicly perform or
display, translate, and create derivative works of your content (consistent with
your privacy and application settings).&rdquo;
</p>

<p>
Instagram says you may revoke this license by deleting your content but if
someone shares the content, the license is not revoked. If your instagram
post is even marginally popular, instagram will own your content forever. They
are free to profit, appropriate, and perverse your ideas without paying you
anything or crediting you. Unfortunately, most other corporate social media websites have a
similar clause in their terms of service.
</p>

<p>
For a list of other corporate social media websites and issues buried in their terms of
service in brief/plain English, see: <a href="https://tosdr.org">tosdr</a>. tosdr also
has a browser add-on!
</p>

<p>
<b>Edit</b> 2020-04-21: For proof you don&rsquo;t own anything you post on instagram see: <a href="https://www.hollywoodreporter.com/thr-esq/court-rules-photographer-gave-up-licensing-rights-by-posting-instagram-1290170">Court Rules Photographer Gave Up Exclusive Licensing Rights by Posting on Instagram</a>
</p>
</div>
</div>

<div id="outline-container-orgedceb65" class="outline-2">
<h2 id="orgedceb65">Shadow banning</h2>
<div class="outline-text-2" id="text-orgedceb65">
<blockquote>
<p>
Shadow banning (also called stealth banning, ghost banning or comment
ghosting[1]) is the act of blocking or partially blocking a user or their
content from an online community such that it will not be readily apparent to
the user that they have been banned.
</p>
</blockquote>
<p>
<a href="https://en.wikipedia.org/wiki/Shadow_banning">Shadow banning - Wikipedia</a>
</p>

<p>
Contrary to popular belief, shadow banning is not reserved
for people testing the limits of our free speech. It&rsquo;s problematic for YOU if you
value your discoverability and creative freedom.
</p>

<p>
For example, YouTube is known to completely change their algorithm overnight
without giving a public statement. The subfeed used to show followers
the newest content from creators they had subscribed to in chronological order.
Today, the subfeed is &ldquo;curated&rdquo; by machine learning algorithms to maximize watch
time, which in turn increases
ad exposure, and profits for YouTube. Less popular and begnin content is snubbed
for more popular content because it&rsquo;s not profitable to show your
followers content they have specifically asked for. When you use corporatist social 
media, whether or not the content you create is shown to your followers is dependant on
an ever-changing business plan.
</p>

<p>
Rather than creating content that is engaging, new and different, many content
creators are distracted by the prospect of trying to figure out the algorithm
and game it. As a result, Youtube has turned into a sanitized husk of what it
used to be.
</p>
</div>
</div>

<div id="outline-container-org5ec89f5" class="outline-2">
<h2 id="org5ec89f5">Replacements</h2>
<div class="outline-text-2" id="text-org5ec89f5">
<p>
The internet was created with decentralization and individual ownership in mind
to prevent these and other abuses. Everyone doesn&rsquo;t need to be crammed into a single platform.
Unfortunately, corportations found a way to provide some short term
conveniences and the general public did not think about the long term problems
associated with a centralized internet.
</p>

<p>
When most people look you up on the internet, they usually do not search your
name on each platform individually like LinkedIn, Instagram, etc. because that
would take forever. They will likely use
a search engine. As long as you do SEO (Search Engine Optimization) on your own
website, you will
have just as good, if not better discoverability than displaying your content on
a corporate social media website.
</p>

<p>
You do not need to exist on a platform to exist on the internet.
There are software developers that understand the importance of a decentralized
internet and have created technical tools to allow non-technical people to take
advantage of this
decentralization. The small effort required to set up a website worth the value
of retaining ownership of your content. You should at least
create a website and promote it alongside your twitter/facebook/etc, if not escape the
legal grasp of corporate social media altogether.
</p>

<p>
Furthermore, since these replacements are free and open, they will outlive any
proprietary social networking app. Compare how long any new proprietary instant messaging
app (AIM, MSN messenger, etc.) has lived when compared to email-a free and open
internet technology.
</p>

<p>
Below are some tools and services you might want to use to distribute your content:
</p>

<p>
To get unbiased updates from multiple websites in chronological order in one window (aka
&ldquo;follow&rdquo; your favorite content creators):
</p>
<ul class="org-ul">
<li><a href="http://www.rssowl.org/">RSSowl - an RSS client</a></li>
<li><a href="https://momi.ca/2018/08/24/youtubesubfeed.html">How I use RSS to avoid YouTube&rsquo;s curated subfeed</a></li>
</ul>

<p>
To get your own domain name and email address (like mine: anjan -at- momi.ca):
<a href="https://gandi.net">gandi domain registrar</a>
</p>

<p>
For creating your website, I can recommend WordPress or <a href="https://ghost.org/">ghost</a>. Gandi offers a one-click
install for Wordpress. If you are more technically inclined, look at jekyll and GitHub pages
(it&rsquo;s free!).
Stay away from wix, dreamweaver, etc. 
</p>

<p>
If RSS is too much and you would not like to create your own website, there are
social media-like services that still retain your freedom.
Consider the alternatives listed here:
<a href="https://switching.software/">switching.software</a>
</p>
</div>
</div>

<div id="outline-container-org0701f88" class="outline-2">
<h2 id="org0701f88">How do you know these replacements are better and won&rsquo;t be bought out?</h2>
<div class="outline-text-2" id="text-org0701f88">
<blockquote>
<p>
Most of the alternatives listed on here are technologically and legally
structured in a way that means they cannot be bought or sold.
</p>

<p>
The social networks listed are <a href="https://switching.software/federated-sites/">federated</a>, which means there is no single site to
buy, just thousands of independent sites linked together. Even if a particular
site is sold, its users can move to another independent site on the same
network. It would be virtually impossible for anyone to take control of the
network as a whole.
</p>

<p>
On top of all this, the software used is released under
<a href="https://switching.software/what-is-open-source-software/">perpetual free open licences</a>
that make it legally impossible for it to be purchased.
</p>
</blockquote>
<p>
<a href="https://switching.software/frequently-asked-questions/">Source: switching.software</a>
</p>

<p>
<a href="https://creativecommons.org/licenses/by-sa/4.0/">License: Creative Commons Attribution Sharealike 4.0</a>
</p>

<p>
I recommend you read what <a href="https://switching.software/federated-sites/">federated</a> and a <a href="https://switching.software/what-is-open-source-software/">perpetual free open licences</a> means on
the switching.software website. You should be distrustful of any social media service
on the internet that is not federated and licensed under a perpetual
free open license.
</p>

<p>
<a href="https://indieweb.org/site-deaths">Click here for a list of centralized proprietary services that disappeared overnight</a>
</p>

<p>
tl;dr: Don&rsquo;t build your livelihood on someone else&rsquo;s lawn.
</p>


<p>
If you know of other abuses that are a consequence of a centralized internet, please let me know.
A whole other can of worms: consumers of a certain platform may not even be
aware of content outside and are at the mercy of that platform for true
news/facts.
</p>

<p>
guest editor: Colin Leitner <a href="http://www3.telus.net/colinl333">http://www3.telus.net/colinl333</a>
</p>
</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2019-08-01-pickplace.html</guid>
<link>https://momi.ca/posts/2019-08-01-pickplace.html</link>
<pubDate>Thu, 01 Aug 2019 00:00:00 -0700</pubDate>
<title>MSE312 One Degree of Freedom Pick and Place Robot</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">MSE312 One Degree of Freedom Pick and Place Robot</h1>
<p class="date">Published 2019-08-01 on <a href="https://momi.ca/">Anjan's Homepage</a></p>

<div id="outline-container-org813f053" class="outline-2">
<h2 id="org813f053">Abstract</h2>
<div class="outline-text-2" id="text-org813f053">
<p>
The  MSE312  term  project  required  teams  to  design,  build  and  control  a  pick  and  place  arm  to
rotate 180◦ pick up a metal puck and rotate 90◦ to drop the target.  Mechanical design, electrical
and protection circuitry, control system and integration aspects were designed and evaluated for the
ultimate goal of the system to perform the required task in the fastest time possible while being
robust and reliable.
</p>

<p>
The mechanical truss arm was constructed using brass rods under project constraints and concep-
tualized around minimizing mass moment of inertia, centre of mass close to the axis of rotation and
minimal deflection under FEA analysis.  Concept selection analysis was performed to appropriately
select the final mechanical design. The  electronics  design  consisted  of  motor  circuit  drive,  electromagnet  circuitry,  power  protection
and configuration setup with the apparatus limit switches.  The electrical configuration provided a
soldered circuit board for 12V power to the system and compatibility with 5V signal which would
be used for the PWM control signal of the DC motor and electromagnet.
The initial control design evaluated electrical/mechanical system continuous time transfer function
which was used to plot the system root locus and evaluate PID controller parameters.  Integrating
the system with a digital micro controller the system is need take into consideration the Z-domain
therefore PID value were tuned to operate with the set sampling period.  In integration of the sys-
tem using the micro-controller was inter-phased using Simulink.  The logic of the control program
conceptually used a finite state machine for correct sequential operation of the system.  Using the
integration of the program final PID values were tuned to two individual sets for each 180◦ and 90◦.
The final system performance demonstrated accurate pick and place in a avg.  run time of 2.03s with
a over damped system response.  Designing the system to be over damped was critical as an over-
shooting system with varying momentum in the system resulted in unpredictable overshoot values.
Attaining close to critical damping response by tuning the system, the motor current flowed in one
direction for one interval of travel.
</p>

<p>
The system was assessed for further improvements on mechanical, electrical, controls and integration
subsections to order to evaluate aspects of improvement for the system for further improvements in
future similar projects and considerations for integrating a control system.
</p>

<p>
The full documentation for this project is given here:
<a href="https://momi.ca/images/MSE312.pdf">MSE312 Documentation</a>
</p>

<iframe title="MSE312 Term Project Demonstration - Group 3" src="https://diode.zone/videos/embed/c053af73-0196-4ac9-9944-d5bd5bf052a4" allowfullscreen="" sandbox="allow-same-origin allow-scripts allow-popups" width="560" height="315" frameborder="0"></iframe>
</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2019-07-20-mariokart.html</guid>
<link>https://momi.ca/posts/2019-07-20-mariokart.html</link>
<pubDate>Sat, 20 Jul 2019 00:00:00 -0700</pubDate>
<title>MSE428 Project Demo Mario Kart</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">MSE428 Project Demo Mario Kart</h1>
<p class="date">Published 2019-07-20 on <a href="https://momi.ca/">Anjan's Homepage</a></p>


<p>
This summer, I took a course called MSE428: Design of Mechanism.
It was a challenging course but in the end I got to build an automaton.
</p>

<blockquote>
<p>
An automaton (<i>ɔːˈtɒmətən</i>; plural: automata or automatons) is a self-operating
machine, or a machine or control mechanism designed to automatically follow a
predetermined sequence of operations, or respond to predetermined
instructions. - wikipedia
</p>
</blockquote>

<p>
For our automaton, we chose to tell the humilating story of losing first place
in mario kart to someone that just got the bullet bill item.
The shafts and supporting structure was 3d-printed.
</p>

<p>
<a href="https://momi.ca/images/MSE428.pdf">Project Documentation</a>
</p>

<p>
Contains:
</p>
<ul class="org-ul">
<li>CAD drawings</li>
<li>Displacement and kinematic analysis</li>
<li>Mechanism synthesis</li>
</ul>


<iframe title="MSE 428 Project Demonstration Mario Kart - Shy Guy Beach" src="https://diode.zone/videos/embed/4b9a87d6-2a98-4dfd-be81-18f6f22c4c56" allowfullscreen="" sandbox="allow-same-origin allow-scripts allow-popups" width="560" height="315" frameborder="0"></iframe>

<p>
Thats all!
</p>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2018-08-24-youtubesubfeed.html</guid>
<link>https://momi.ca/posts/2018-08-24-youtubesubfeed.html</link>
<pubDate>Fri, 24 Aug 2018 00:00:00 -0700</pubDate>
<title>How to fix youtube sub feed</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">How to fix youtube sub feed</h1>
<p class="date">Published 2018-08-24 on <a href="https://momi.ca/">Anjan's Homepage</a></p>


<p>
Youtube has been tearing apart the sub feed for a couple of years now. Things
like: videos not appear in chronological order, terrible general layout, and
enhancing difficulty it takes to get to the youtube subfeed<sup><a id="fnr.1" class="footref" href="https://momi.ca/#fn.1" role="doc-backlink">1</a></sup>. In this post,
I will be explaining how to make a better youtube sub feed.
</p>


<div id="outline-container-org0562c12" class="outline-2">
<h2 id="org0562c12">Introducting RSS</h2>
<div class="outline-text-2" id="text-org0562c12">
<p>
RSS (Rich Site Summary; originally RDF Site Summary; often called Really Simple
Syndication) is a type of web feed which allows users to access updates to
online content in a standardized, computer-readable format<sup><a id="fnr.2" class="footref" href="https://momi.ca/#fn.2" role="doc-backlink">2</a></sup>.
</p>

<p>
Basically, RSS was created for an internet before social media. RSS allowed
users to get updates from many different websites in one window. You may have
seen this image all over the internet: 
</p>

<img src="https://momi.ca/images/2018-8-24-RSS/rss.png">

<p>
This is the RSS logo and it means that you can recieve the website&rsquo;s updates
using an RSS reader.
</p>

<p>
So why is this cool? Well, today&rsquo;s social networks are &ldquo;optimized&rdquo; through
machine learning algorithms that no one asked for. Social media websites
(twitter, youtube and facebook) no longer display content in chronological
order.
</p>

<p>
<b><b>RSS allows you to</b></b>:
</p>

<ul class="org-ul">
<li>see all your updates in one window</li>
<li>see updates directly from the authors</li>
<li>see updates in chronological order</li>
<li>see 99.9% of website updates as most websites use RSS</li>
</ul>
</div>
</div>

<div id="outline-container-org34386cc" class="outline-2">
<h2 id="org34386cc">The setup</h2>
<div class="outline-text-2" id="text-org34386cc">
<p>
So, turns out youtube channels supports RSS. Simply, request an account on my
RSS reader and log into my rss reader: 
</p>

<p>
<a href="https://momi.ca/rss/">https://momi.ca/rss/</a>
</p>

<p>
Export your Youtube subscriptions to a .OPML file that you can import with any
RSS reader: 
</p>

<p>
<a href="https://support.google.com/youtube/answer/6224202?hl=en-GB">https://support.google.com/youtube/answer/6224202?hl=en-GB</a>
</p>

<p>
In Miniflux (momi.ca/rss/). Click Feeds, then click import, and upload your OPML
file.
</p>
<img src="https://momi.ca/images/2018-8-24-RSS/Feeds.png">

<p>
You can add all the websites/blogs you visit. You do not need to rely on
Facebook or Twitter to (badly) aggregate your news. 
</p>
</div>
</div>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">

<div class="footdef"><sup><a id="fn.1" class="footnum" href="https://momi.ca/#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
: <a href="https://www.reddit.com/r/youtube/comments/8mfec3/if_youtube_kills_the_chronological_sub_feed_it/">https://www.reddit.com/r/youtube/comments/8mfec3/if_youtube_kills_the_chronological_sub_feed_it/</a>
</p></div></div>

<div class="footdef"><sup><a id="fn.2" class="footnum" href="https://momi.ca/#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
: <a href="https://en.wikipedia.org/wiki/RSS">https://en.wikipedia.org/wiki/RSS</a>
</p></div></div>


</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2018-04-06-qutebrowser.html</guid>
<link>https://momi.ca/posts/2018-04-06-qutebrowser.html</link>
<pubDate>Fri, 06 Apr 2018 00:00:00 -0700</pubDate>
<title>Fix qutebrowser high cpu usage</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Fix qutebrowser high cpu usage</h1>
<p class="date">Published 2018-04-06 on <a href="https://momi.ca/">Anjan's Homepage</a></p>


<p>
I love qutebrowser for its vim keys but I found that qutebrowser&rsquo;s cpu usage was too high.
Indeed, the cpu usage reached 80% on my sandy bridge i7 laptop when I had one archwiki tab open.
To fix the high cpu usage, I disabled software rendering. Here are the steps I followed:
</p>

<ol class="org-ol">
<li>Open qutebrowser</li>
<li>Type in <code>:set</code></li>
<li>Look for <code>qt.force_software_rendering</code> and set the option to <code>false</code></li>
<li>Restart qutebrowser</li>
</ol>

<p>
Keep in mind that if you use Nouveau drivers you must have software rendering enabled and this fix will probably not work for you.
</p>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2017-11-19-Labview.html</guid>
<link>https://momi.ca/posts/2017-11-19-Labview.html</link>
<pubDate>Sun, 19 Nov 2017 00:00:00 -0800</pubDate>
<title>Labview ICT Notes</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Labview ICT Notes</h1>
<p class="date">Published 2017-11-19 on <a href="https://momi.ca/">Anjan's Homepage</a></p>


<div id="outline-container-org1f3af1e" class="outline-2">
<h2 id="org1f3af1e">Required Readings</h2>
<div class="outline-text-2" id="text-org1f3af1e">
<ul class="org-ul">
<li><a href="http://www.ni.com/white-paper/14565/en/">Multicore Programming with NI Labview</a></li>
<li><a href="http://zone.ni.com/reference/en-XX/help/371361H-01/glang/wait_ms/">Wait (ms) Function</a></li>
<li><a href="http://zone.ni.com/reference/en-XX/help/371361N-01/glang/high_res_rel_sec/">High Resolution Relative Seconds VI</a></li>
<li><a href="https://zone.ni.com/reference/en-XX/help/371361M-01/ptbypt/boolean_crossing_ptbypt/">Boolean Crossing PtByPt VI</a></li>
<li><a href="http://zone.ni.com/reference/en-XX/help/371599J-01/lvfpgahelp/using_sampling_probe/">Probes</a></li>
</ul>
</div>
</div>

<div id="outline-container-org2afa567" class="outline-2">
<h2 id="org2afa567">Important Notes</h2>
<div class="outline-text-2" id="text-org2afa567">
<ul class="org-ul">
<li>&ldquo;Wiring a value of 0 to the milliseconds to wait input forces the current thread to yield control of the CPU.&rdquo; - See &ldquo;wait (ms)&rdquo; in required readings</li>
<li>Using wait (ms) block causes timing issues.</li>
<li>Use a global timer</li>
<li>Avoid using sequences</li>
</ul>

<iframe title="Labview ICT Widget Assembler" src="https://diode.zone/videos/embed/15a93401-f711-49c1-b3b0-68cfcd97ccd9" allowfullscreen="" sandbox="allow-same-origin allow-scripts allow-popups" width="560" height="315" frameborder="0"></iframe>
</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2017-10-28-Arch-npt-Patch.html</guid>
<link>https://momi.ca/posts/2017-10-28-Arch-npt-Patch.html</link>
<pubDate>Sat, 28 Oct 2017 00:00:00 -0700</pubDate>
<title>Patch NPT For Ryzen CPU Arch Linux</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Patch NPT For Ryzen CPU Arch Linux</h1>
<p class="date">Published 2017-10-28 on <a href="https://momi.ca/">Anjan's Homepage</a></p>


<p>
<b><b>Note: This patch has been merged with upstream. Simply update your archlinux machine and npt should just work.</b></b>
</p>

<p>
The new npt patch allows you to enable npt on ryzen cpus and get native performance in a virtual machine. Please be advised that this patch is not mainline and may cause other problems. As always, make backups.
</p>

<p>
For this procedure we will be using the Arch Build System so that pacman will manage all of the files and so we can rollback a kernel by looking into <code>/var/cache/pacman/pkg/</code> and using <code>pacman -U</code>.
</p>

<div class="org-src-container">
<pre class="src src-bash"><span style="color: #ECBE7B;">mkdir</span> builds
<span style="color: #ECBE7B;">cd</span> builds
</pre>
</div>

<p>
Make sure you have subversion installed and then:
</p>

<div class="org-src-container">
<pre class="src src-bash">svn checkout --depth=empty svn://svn.archlinux.org/packages
<span style="color: #ECBE7B;">cd</span> packages
svn update linux
<span style="color: #ECBE7B;">cd</span> linux/repos/core-x86_64/
</pre>
</div>

<p>
Edit the <code>PKGBUILD</code> file to include the following near <code>prepare(){</code>
</p>

<div class="org-src-container">
<pre class="src src-bash"><span style="color: #5B6268;"># </span><span style="color: #5B6268;">add upstream patch</span>
patch -p1 -i ../patch-$<span style="color: #51afef;">{</span><span style="color: #dcaeea;">pkgver</span><span style="color: #51afef;">}</span>

<span style="color: #5B6268;"># </span><span style="color: #5B6268;">ADD THE FOLLOWING LINE TO THE PKGBUILD</span>
patch -p1 -i ../patch-ryzen
</pre>
</div>

<p>
Next, we put the npt patch into the src folder.
</p>

<div class="org-src-container">
<pre class="src src-bash"><span style="color: #ECBE7B;">cd</span> src
vim patch-ryzen
</pre>
</div>

<p>
and copy paste the following lines:
</p>

<div class="org-src-container">
<pre class="src src-c">diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index af256b786a70..af09baa3d736 <span style="color: #da8548; font-weight: bold;">100644</span>
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -<span style="color: #da8548; font-weight: bold;">3626</span>,<span style="color: #da8548; font-weight: bold;">6</span> +<span style="color: #da8548; font-weight: bold;">3626</span>,<span style="color: #da8548; font-weight: bold;">13</span> @@  <span style="color: #51afef;">static</span> <span style="color: #ECBE7B;">int</span> svm_set_msr(<span style="color: #51afef;">struct</span> <span style="color: #ECBE7B;">kvm_vcpu</span> *<span style="color: #dcaeea;">vcpu</span>, <span style="color: #51afef;">struct</span> <span style="color: #ECBE7B;">msr_data</span> *<span style="color: #dcaeea;">msr</span>)
    <span style="color: #ECBE7B;">u32</span> <span style="color: #dcaeea;">ecx</span> = msr-&gt;index;
    <span style="color: #ECBE7B;">u64</span> <span style="color: #dcaeea;">data</span> = msr-&gt;data;
    <span style="color: #51afef;">switch</span> (ecx) {
+   <span style="color: #51afef;">case</span> MSR_IA32_CR_PAT:
+       <span style="color: #51afef;">if</span> (<span style="color: #51afef; font-weight: bold;">!</span>kvm_mtrr_valid(vcpu, MSR_IA32_CR_PAT, data))
+           <span style="color: #51afef;">return</span> <span style="color: #da8548; font-weight: bold;">1</span>;
+       vcpu-&gt;arch.pat = data;
+       svm-&gt;vmcb-&gt;save.g_pat = data;
+       mark_dirty(svm-&gt;vmcb, VMCB_NPT);
+       <span style="color: #51afef;">break</span>;
    <span style="color: #51afef;">case</span> MSR_IA32_TSC:
        kvm_write_tsc(vcpu, msr);
        <span style="color: #51afef;">break</span>;
</pre>
</div>

<p>
Finally, in order to build the package and install the new patched kernel:
</p>

<div class="org-src-container">
<pre class="src src-bash"><span style="color: #ECBE7B;">cd</span> ..
makepkg -si
</pre>
</div>

<p>
Make sure `/etc/modprobe.d/kvm<sub>amd.conf</sub>` has npt enabled:
</p>

<div class="org-src-container">
<pre class="src src-bash">options kvm_amd <span style="color: #dcaeea;">npt</span>=<span style="color: #da8548; font-weight: bold;">1</span>
</pre>
</div>

<p>
and reboot
</p>

<p>
References:
</p>

<p>
<a href="https://wiki.archlinux.org/index.php/Creating_packages">https://wiki.archlinux.org/index.php/Creating_packages</a>
</p>

<p>
<a href="https://wiki.archlinux.org/index.php/Arch_Build_System">https://wiki.archlinux.org/index.php/Arch_Build_System</a>
</p>

<p>
<a href="https://level1techs.com/article/patch-npt-ryzen-better-performance">https://level1techs.com/article/patch-npt-ryzen-better-performance</a>
</p>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2017-05-01-Matrix.html</guid>
<link>https://momi.ca/posts/2017-05-01-Matrix.html</link>
<pubDate>Mon, 01 May 2017 00:00:00 -0700</pubDate>
<title>Matrix</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Matrix</h1>
<p class="date">Published 2017-05-01 on <a href="https://momi.ca/">Anjan's Homepage</a></p>


<p>
I recently installed a matrix (synapse) on the server.
It has encryption, high quality image uploads, bots, and all the data is stored on my own server. In order to use the chat service:
</p>

<ol class="org-ol">
<li>Message me to make you an account</li>
<li>Go to <a href="https://riot.im/app/#/login">riot</a></li>
<li><p>
Press custom server
</p>

<p>
Home server URL: <code>https://momi.ca:8448</code>
</p>

<p>
Leave identity server URL as <code>https://vector.im</code>
</p></li>
<li>Enter the username and password I gave to you</li>
<li>When you join a room with encryption, you will be asked to accept keys. For now, tell everyone that you&rsquo;re signing in from a new device and tell them to accept the keys.</li>
</ol>

<p>
<a href="https://play.google.com/store/apps/details?id=im.vector.alpha">Android app</a>
</p>

<p>
<a href="https://riot.im/app/#/login">Desktop clients</a>
</p>

<p>
Enter the same credentials as described above in the desktop or android clients.
</p>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2016-12-22-Calender.html</guid>
<link>https://momi.ca/posts/2016-12-22-Calender.html</link>
<pubDate>Thu, 22 Dec 2016 00:00:00 -0800</pubDate>
<title>Setting up contact and calendar syncing with baikal</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Setting up contact and calendar syncing with baikal</h1>
<p class="date">Published 2016-12-22 on <a href="https://momi.ca/">Anjan's Homepage</a></p>


<p>
I recently added baikal to my suite of services offered here on momi.ca.
If you know me personally, email me in order to get an invite. In this post, I will be describing how to setup syncing and backup with the service.
I set this up because I like opentasks&amp;rsquo; todo list much more than google&amp;rsquo;s.
</p>

<div id="outline-container-orgbe02ef5" class="outline-2">
<h2 id="orgbe02ef5">Android</h2>
<div class="outline-text-2" id="text-orgbe02ef5">
<ol class="org-ol">
<li>Download and install the <a href="https://f-droid.org/en/packages/se.lublin.mumla/">F-droid appstore</a>. This appstore allows us to get open source apps for free when we would have to otherwise pay for them. Make sure you allow unknown sources when you are prompted to do so.</li>

<li>Click the three dots on the top right and tap &ldquo;update repos&rdquo;</li>

<li>Search for and install <b><b>DAVdroid</b></b> and <b><b>OpenTasks</b></b></li>

<li>Open up DAVdroid, press the + icon in the bottom right, tap &ldquo;Log in with URL and user name&rdquo; and enter:

<ol class="org-ol">
<li>cal.momi.ca for base url</li>

<li>your given user name for User name</li>

<li>your given password for Password</li>
</ol></li>

<li>Login and make sure to select default address book and default calendar.</li>
</ol>

<p>
Press the sync icon on the top right whenever you wish to sync
</p>
</div>

<div id="outline-container-org1c401b2" class="outline-3">
<h3 id="org1c401b2">Contact Syncing</h3>
<div class="outline-text-3" id="text-org1c401b2">
<p>
<b><b>Only proceed if you want to sync your contacts with my server rather than google</b></b>
</p>

<p>
Your contacts with your current setup will not sync with DavDroid.
In order to sync contacts with Davdroid, they must be assigned to the Davdroid account rather than your google account.
In order to assign your contacts to the DAVdroid account:
</p>

<ol class="org-ol">
<li>Export your contacts to a .vcf file from your &ldquo;contacts&rdquo; app</li>
<li>Delete all your contacts from the &ldquo;contacts&rdquo;. (Do <b><b>NOT</b></b> delete the exported .vcf file)</li>
<li>Import your contacts from the vcf file in your &ldquo;contacts&rdquo; app and assign to DAVdroid when prompted.</li>
</ol>

<p>
Use opentasks in order to add things to your todo list and calendar. No extra steps required.
</p>

<p>
You may tap on your account in DAVdroid and press the sync icon anytime you want to sync your calendar and contacts.
</p>
</div>
</div>
</div>

<div id="outline-container-org68f93e4" class="outline-2">
<h2 id="org68f93e4">Windows</h2>
<div class="outline-text-2" id="text-org68f93e4">
<p>
To view your contacts and calendar on windows, I recommend using <a href="https://www.mozilla.org/en-US/thunderbird/">thunderbird</a>.
Although not required, it is also nice to have your email setup with thunderbird as it sends you desktop notifications whenever you get an email. 
(Google: &ldquo;[university name/organization name] thunderbird&rdquo;)
</p>
</div>

<div id="outline-container-orgf4580e7" class="outline-3">
<h3 id="orgf4580e7">Setup calendar:</h3>
<div class="outline-text-3" id="text-orgf4580e7">
<p>
Events and tasks on the menu bar &gt; Tasks
</p>

<p>
Right click on the bottom left right under the &ldquo;Home&rdquo; calendar &gt; &ldquo;New calendar&rdquo;
</p>

<p>
&ldquo;Select On the Network&rdquo; &gt; &ldquo;CalDav&rdquo; &gt; Location: <code>https://cal.momi.ca/dav.php/calendars/&lt;YOUR USERNAME&gt;/default</code>
</p>

<p>
Select the other options according to your preferences and press next. You will be prompted for your username and password.
</p>

<p>
To setup contacts:
</p>
<ol class="org-ol">
<li>Download the <a href="https://sogo.nu/files/downloads/SOGo/Thunderbird/sogo-connector-31.0.3.xpi">SoGo connector plugin</a></li>
<li>Tools &gt; addons</li>
<li>Click extensions on the sidebar and drag and drop the Sogo connector plugin into there.</li>
<li>Tools on the menu bar &gt; Address Book</li>
<li>Tools on new window(adress book)&amp;rsquo;s menu bar &gt; File &gt; New &gt; Remote Address Book</li>
<li>Enter Location: <code>https://cal.momi.ca/baikal/card.php/addressbooks/&lt;YOUR USERNAME&gt;/default</code></li>
</ol>

<p>
If you wish to setup contacts with another application, the url is:
<code>https://cal.momi.ca/baikal/card.php/addressbooks/&lt;YOUR USERNAME&gt;/default</code>
</p>
</div>
</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2016-11-02-SwayMultimonitor.html</guid>
<link>https://momi.ca/posts/2016-11-02-SwayMultimonitor.html</link>
<pubDate>Wed, 02 Nov 2016 00:00:00 -0700</pubDate>
<title>Setup Multiple Monitors in Sway (Wayland)</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Setup Multiple Monitors in Sway (Wayland)</h1>
<p class="date">Published 2016-11-02 on <a href="https://momi.ca/">Anjan's Homepage</a></p>
<p>
Sway boasts about its close compatibility with your previous i3 config.
However, if you used xrandr or arandr to setup the location of your monitors, your monitors will most likely not be in the correct location when you open up sway.
There is a simple fix to this:
</p>

<p>
Get the names of your outputs by running:
</p>

<div class="org-src-container">
<pre class="src src-bash">swaymsg -t get_outputs
</pre>
</div>

<p>
I have two monitors: one 1440p monitor plugged into the dvi port (called `DVI-I-0` in swaymsg) and one 1080p monitor plugged into my HDMI port (called `HDMI-A-1` in swaymsg). Therefore, I would write the following in my config:
</p>

<div class="org-src-container">
<pre class="src src-bash">output DVI-I-0 resolution 2560x1440 position 0,0
output HDMI-A-1 resolution 1920x1080 position 2560,480
</pre>
</div>

<p>
I have the HDMI monitor set at y position of 480 because I have the HDMI monitor on a stack of books. If put y position as 0, my mouse jumps lower to where it was on the DVI monitor when I move across screens. Changing this to 480 makes it so I have consistent movement when moving between monitors. Adjust the y value if you have monitors of different resolutions.
</p>


<div id="outline-container-org5ef868c" class="outline-2">
<h2 id="org5ef868c">Other things you probably want to fix</h2>
<div class="outline-text-2" id="text-org5ef868c">
<p>
If you assigned different workspaces to different monitors, you may want to change this now:
</p>

<div class="org-src-container">
<pre class="src src-bash">workspace <span style="color: #da8548; font-weight: bold;">1</span> output DVI-0
</pre>
</div>

<p>
Would be changed to:
</p>

<div class="org-src-container">
<pre class="src src-bash">workspace <span style="color: #da8548; font-weight: bold;">1</span> output DVI-I-0
</pre>
</div>

<p>
Similarly, throughout the config where you would have used your old display name (in the example DVI-0), you may now use your new display name (in the example DVI-I-0).
</p>

<p>
Feh no longer works to set wallpaper. Use the following command in your config for sway to set the wallpaper:
</p>

<div class="org-src-container">
<pre class="src src-bash">output HDMI-A-1 bg ~/wallpaper.png stretch
output DVI-I-0 bg ~/wallpaper2.png stretch
</pre>
</div>
</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2016-04-28-mpd.html</guid>
<link>https://momi.ca/posts/2016-04-28-mpd.html</link>
<pubDate>Thu, 28 Apr 2016 00:00:00 -0700</pubDate>
<title>How to Stream MPD and Setup Mpdroid</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">How to Stream MPD and Setup Mpdroid</h1>
<p class="date">Published 2016-04-28 on <a href="https://momi.ca/">Anjan's Homepage</a></p>


<p>
MPD is great for handling a large music collection. It even has a feature where it can stream your music output over http. However, I found that there wasn&rsquo;t a good guide on setting http streaming up. Furthermore, I found a work-around to a bug in mpdroid that no google search revealed. Therefore, I thought that writing a guide on setting up http streaming would help alot of people out. Here&rsquo;s what I did to setup mpd and mpdroid:
</p>

<div id="outline-container-org4ea2867" class="outline-2">
<h2 id="org4ea2867">Installing MPD</h2>
<div class="outline-text-2" id="text-org4ea2867">
<p>
Start by installing mpd and mpc on your selected distribution. On debian it would be:
</p>

<div class="org-src-container">
<pre class="src src-bash"><span style="color: #ECBE7B;">sudo</span> apt-get install mpd mpc
</pre>
</div>

<p>
Then, make a new user to run mpd so you don&rsquo;t have to run mpd as root:
</p>

<div class="org-src-container">
<pre class="src src-bash"><span style="color: #ECBE7B;">sudo</span> adduser mpdstream
</pre>
</div>

<p>
Switch to the new user:
</p>

<div class="org-src-container">
<pre class="src src-bash">su - mpdstream
</pre>
</div>

<p>
Create the files for mpd&rsquo;s data and config:
</p>

<div class="org-src-container">
<pre class="src src-bash"><span style="color: #ECBE7B;">mkdir</span> .mpd
<span style="color: #ECBE7B;">mkdir</span> .mpd/playlists
<span style="color: #ECBE7B;">touch</span> .mpd/<span style="color: #51afef;">{</span>mpd.conf,mpd.pid,mpd.db,mpdstate,mpd.log<span style="color: #51afef;">}</span>
</pre>
</div>

<p>
Open <code>.mpd/config</code> in your favourite text editor and copy paste the following config in there:
</p>

<pre class="example">
music_directory "/mnt/AAE0DC50E0DC247B/Music"
playlist_directory "/home/mpdstream/.mpd/playlists"
db_file      "/home/mpdstream/.mpd/mpd.db"
log_file      "/home/mpdstream/.mpd/mpd.log"
pid_file      "/home/mpdstream/.mpd/mpd.pid"
state_file     "/home/mpdstream/.mpd/mpdstate"

audio_output {
     type  "alsa"
     name  "whatever you want"
     mixer_type "software"
     mixer_control "PCM"
 
}

audio_output {    
    type        "httpd"    
    name        "My HTTP Stream"    
    encoder     "lame"          # optional, vorbis or lame    
    port        "8001"    
    quality     "5.0"           # do not define if bitrate is defined    
#   bitrate     "320"           # do not define if quality is defined    
#   format      "44100:16:1"    
}

filesystem_charset             "UTF-8"
user                "mpdstream"
password                        "YOURPASSWORD@read,add,control,admin"
bind_to_address         "0.0.0.0"
</pre>

<p>
I will only explain the options you will need to change in order to ensure everything works. If you&rsquo;d like to learn about the other options I entered, please read the documentation for mpd. 
</p>

<p>
<code>music_directory "/mnt/AAE0DC50E0DC247B/Music"</code>
</p>

<p>
Replace <code>/mnt/AAE0DC50E0DC247B/Music</code> with your music directory.
</p>

<p>
<code>type  "alsa"</code> 
</p>

<p>
Enter your audio output (<code>alsa</code> or <code>pulse</code>).
</p>

<p>
<b><b>The second audio output defines the settings for the web output of mpd. Mpd supports playing to multiple outputs so the alsa/pulse output and <code>httpd</code> output can coexist in the same config file.</b></b>
</p>

<p>
<code>encoder "lame"</code> 
</p>

<p>
I will only go over how to use lame in this guide as it is the most common, it is the most likely encoder to work with your phone (see mpdroid setup), and it is the easiest to install.
</p>

<p>
<code>port "8001"</code> 
</p>

<p>
Change this if you want and make note of it.
</p>

<p>
<code>quality "5.0"</code> 
</p>

<p>
This quality integer is a good compromise for me when it comes to bandwidth used vs. quality.
</p>

<p>
<code>password                        "YOURPASSWORD@read,add,control,admin"</code> 
</p>

<p>
Finally, set your password where it says <code>YOURPASSWORD</code> before the <code>"@read,add,control,admin"</code>. If my password was <code>spiderman</code>, this line would become:
</p>

<p>
<code>password                        "spiderman@read,add,control,admin"</code>
</p>

<p>
Write and close the config file.
</p>

<p>
Install lame by running:
</p>
<div class="org-src-container">
<pre class="src src-bash"><span style="color: #ECBE7B;">sudo</span> apt-get install lame
</pre>
</div>

<p>
Make sure you allow the ports for httpd and mpd through your firewall.
In my case, the httpd port is 8001 and the mpd port is 6000. So, I ran:
</p>

<div class="org-src-container">
<pre class="src src-bash"><span style="color: #ECBE7B;">sudo</span> ufw allow 6600/tcp
<span style="color: #ECBE7B;">sudo</span> ufw allow 8001/tcp
</pre>
</div>

<p>
Also, if you&rsquo;d like to use mpd httpd outside of your network, forward these ports in your router.
</p>

<p>
Make sure no instances of mpd are running by typing <code>killall mpd</code> into the terminal.
</p>

<p>
Then, type <code>mpd</code> into terminal in order to to start mpd as the user <code>mpdstream</code>.
</p>
</div>
</div>

<div id="outline-container-orgf6f636d" class="outline-2">
<h2 id="orgf6f636d">Setting up Mpdroid</h2>
<div class="outline-text-2" id="text-orgf6f636d">
<p>
<a href="https://play.google.com/store/apps/details?id=com.namelessdev.mpdroid&amp;hl=en">Download mpdroid from playstore</a>
</p>

<p>
Tap on <code>Default connection settings</code>
</p>

<p>
For <code>Host</code>, enter the ip of your router if you&rsquo;re outside your network. If you&rsquo;re inside your network, enter the ip of the computer you&rsquo;re running the mpd server on.
</p>

<p>
For <code>Port</code>, enter your mpd server port (Since I didnt change it in my config, it&rsquo;s 6600)
</p>

<p>
Enter the password for your mpd server
</p>

<p>
For <code>Streaming host</code>, enter the same ip as you entered for <code>Host</code>.
</p>

<p>
For <code>Streaming port</code>, enter your mpd streaming port (In my case, it&rsquo;s 8001).
</p>

<p>
For <code>streaming url suffix</code> enter <code>mpd.mp3</code> if you&rsquo;re using lame as this guide describes. Enter mpd.ogg if you&rsquo;re using vorbis.
</p>

<p>
Press back a couple times once you are done configuring and it will try to connect to your server. 
</p>

<p>
Once connected, try to play something and tap the bottom bar with the title of the current song playing. Click the three dots on the top right of the screen and check streaming. If sound doesnt play, know that this is a <a href="https://github.com/abarisain/dmix/issues/135">common bug on android</a>. However, I came up with a work-around:
</p>
</div>
</div>

<div id="outline-container-orgb9ab6cf" class="outline-2">
<h2 id="orgb9ab6cf">No sound from Mpdroid when streaming</h2>
<div class="outline-text-2" id="text-orgb9ab6cf">
<p>
Download vlc from the playstore.
</p>

<p>
Tap the three horizontal lines on the top left of vlc and tap stream.
</p>

<p>
For network address, type <code>http://YOUR_STREAMING_HOST_IP:YOUR_STREAMING_PORT/mpd.mp3</code>
</p>

<p>
In my case, this would be:
</p>

<p>
<code>http://192.168.1.100:8001/mpd.mp3</code> if I was on my internal network. 
</p>

<p>
Now, when you have a song playing in mpdroid, you can tap the ip of your server to listen to it. You treat mpdroid as the remote to pause/change songs and vlc as the app that plays the streamed data. 
</p>
</div>
</div>

<div id="outline-container-org27c4da5" class="outline-2">
<h2 id="org27c4da5">Reccomended further readings:</h2>
<div class="outline-text-2" id="text-org27c4da5">
<p>
<a href="https://wiki.archlinux.org/index.php/Music_Player_Daemon/Tips_and_tricks">Music Player Daemon/Tips and Tricks</a>
</p>
</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2016-04-26-mumble.html</guid>
<link>https://momi.ca/posts/2016-04-26-mumble.html</link>
<pubDate>Tue, 26 Apr 2016 00:00:00 -0700</pubDate>
<title>Mumble Client Usage</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Mumble Client Usage</h1>
<p class="date">Published 2016-04-26 on <a href="https://momi.ca/">Anjan's Homepage</a></p>
<p>
If you&rsquo;re seeing this, that means we&rsquo;ve invited you to mumble. In this post, we will explain what mumble is, why you would want to use it, and how to set it up if you&rsquo;re having trouble.
</p>

<div id="outline-container-orgfaa6b9a" class="outline-2">
<h2 id="orgfaa6b9a">Reasons to use mumble:</h2>
<div class="outline-text-2" id="text-orgfaa6b9a">
<ul class="org-ul">
<li>Lowest latency</li>
<li>Best voice quality</li>
<li>The host is a dedicated computer, not someone in the call. 
<ul class="org-ul">
<li>If someone leaves call, the call doesnt end.</li>
<li>No one in call has to experience higher latency in game cause theyre host</li>
<li>No dropped calls</li>
</ul></li>
<li>Little lag for people talking from across the country</li>
<li>It&rsquo;s like a group chat that never ends. You meet new people and it&rsquo;s fun.</li>

<li>We have a bot that blasts K-Pop into the server</li>
<li>There is a text to voice bot that will say ANYTHING you type into chat. (you can turn this off if it&rsquo;s annoying)</li>
</ul>
</div>
</div>

<div id="outline-container-orgad9ce27" class="outline-2">
<h2 id="orgad9ce27">How to use mumble on desktop</h2>
<div class="outline-text-2" id="text-orgad9ce27">
<ul class="org-ul">
<li>Download mumble (stable release) for your OS from <a href="https://wiki.mumble.info/wiki/Main_Page">here</a>.</li>

<li>Click next, next, next through install wizard.</li>

<li>Open mumble:</li>
</ul>

<p>
<b><b>These next settings are important. Please read the recommended settings for the server above each image of the setting</b></b>
</p>

<ul class="org-ul">
<li>Click next</li>
</ul>
<img src="https://momi.ca/images/2016-4-26-mumble/1.png">

<ul class="org-ul">
<li>Select your mic and speaker</li>
</ul>
<img src="https://momi.ca/images/2016-4-26-mumble/2.png">

<ul class="org-ul">
<li>Click next</li>
</ul>
<img src="https://momi.ca/images/2016-4-26-mumble/3.png">

<ul class="org-ul">
<li>Adjust slider such that the bar always stays in green area even when your talking quietly (not wanting to wake anyone) or yelling/annoyed. Try your best, if you can&rsquo;t get it perfect, it&rsquo;s fine.</li>
</ul>
<img src="https://momi.ca/images/2016-4-26-mumble/4.png">

<ul class="org-ul">
<li>Choose when you want mumble to transmit your voice.</li>
</ul>
<p>
Push to talk - Only send my voice through channel while I hold down a button. Perfect if you always have music playing or family talking. Click on the grey box and press the button you wanna hold down to talk. (I reccomend caps lock as push to talk button)
</p>

<p>
The other two options basically compare how much sound is coming through mic and transmit if you get loud enough.
</p>
<img src="https://momi.ca/images/2016-4-26-mumble/5.png">

<ul class="org-ul">
<li>Leave these settings default.</li>
</ul>
<img src="https://momi.ca/images/2016-4-26-mumble/6.png">

<ul class="org-ul">
<li>Do you have headphones?</li>
</ul>
<img src="https://momi.ca/images/2016-4-26-mumble/7.png">

<ul class="org-ul">
<li>Choose whether you&rsquo;d like to send stats to mumble</li>
</ul>
<img src="https://momi.ca/images/2016-4-26-mumble/8.png">

<ul class="org-ul">
<li>Click on the globe on the top left to connect to my server</li>
</ul>
<img src="https://momi.ca/images/2016-4-26-mumble/globe.png">

<ul class="org-ul">
<li>Click Add New</li>
</ul>
<img src="https://momi.ca/images/2016-4-26-mumble/9.png">

<ul class="org-ul">
<li>Enter the credentials we sent to you. (You may choose whatever username and lable you want. I chose momi as my label for the server)</li>
</ul>
<img src="https://momi.ca/images/2016-4-26-mumble/10.png">

<ul class="org-ul">
<li>Click connect while having your label for my server selected.</li>
</ul>
<img src="https://momi.ca/images/2016-4-26-mumble/11.png">

<ul class="org-ul">
<li>Accept the certificate for my server by clicking yes. You will have to do this once.</li>
</ul>
<img src="https://momi.ca/images/2016-4-26-mumble/12.png">
</div>
</div>

<div id="outline-container-org26abf9b" class="outline-2">
<h2 id="org26abf9b">How to use mumble on mobile</h2>
<div class="outline-text-2" id="text-org26abf9b">
<p>
<a href="https://f-droid.org/en/packages/se.lublin.mumla/">Install Mumla from Fdroid</a>
</p>

<p>
<a href="https://play.google.com/store/apps/details?id=se.lublin.mumla">Install Mumla from Google Play Store</a>
</p>

<p>
<a href="https://apps.apple.com/us/app/mumble/id443472808?ls=1">Install Mumble from Apple App Store</a>
</p>
</div>
</div>

<div id="outline-container-orge237b8d" class="outline-2">
<h2 id="orge237b8d">After Installing</h2>
<div class="outline-text-2" id="text-orge237b8d">
<p>
Thats it! you should be in my server talking now. If you ever need to reconfigure your sound, click configure on the top bar and then click audio wizard.
</p>

<p>
If you need a private room, message me on steam or email me and I can make a private room for you with a password.
</p>
</div>
</div>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>

<item>
<guid>https://momi.ca/posts/2016-04-26-Hello-World.html</guid>
<link>https://momi.ca/posts/2016-04-26-Hello-World.html</link>
<pubDate>Tue, 26 Apr 2016 00:00:00 -0700</pubDate>
<title>Hello World</title>
<description><![CDATA[

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Anjan's Homepage</title>
        <link rel="icon" type="image/svg+xml" href="https://momi.ca/favicon.svg">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/base.css">
        <link rel="stylesheet" type="text/css" href="https://momi.ca/css/dark.css">
        <link rel="alternate" type="application/atom+xml" href="https://momi.ca/feed.xml">
    </head>
    <body>
        <div class="container">
            <div class="content">
<h1 class="page-title">Hello World</h1>
<p class="date">Published 2016-04-26 on <a href="https://momi.ca/">Anjan's Homepage</a></p>

<p>
Hello there! Welcome to my site. I thought of installing more services after reinstalling debian on the server I use for backups. However, it was getting cumbersome to explain to all my friends how to access the services I started. Therefore, I thought starting a blog would be a nice way to have a centralized place for documentation on how to use the services that I run.
</p>
<p class="text-muted">
    Have a comment on one of my posts? Start a discussion in my
    <a href="https://lists.sr.ht/~anjan/public-inbox">public inbox</a>
    by sending an email to
    <a href="mailto:~anjan/public-inbox@lists.sr.ht?Subject=Re%3A%20Software%20Freedom%20and%20Scholarship%20-%20Reproducible%20Research">
        ~anjan/public-inbox@lists.sr.ht
    </a>
    <small style="padding-left: 2px">
        [<a href="https://man.sr.ht/lists.sr.ht/etiquette.md">mailing list etiquette</a>]
    </small>
</p>
<section class="webring">
    <h3>Articles from blogs I follow around the net</h3>
    These articles/blogs do not represent my own opinions or views.
    <section class="articles">
        
        <div class="article">
            <h4 class="title">
                <a href="https://proycon.anaproy.nl/posts/todo/" target="_blank" rel="noopener">Todo.txt-more: Efficiently managing your todo list and your time</a>
            </h4>
            <p class="summary">Todo.txt More: Efficiently managing your todo list and your time
Introduction
I tend to get fairly enthusiastic when it comes to lists, even more so when there&#39;s a chance to optimise my productivity. The end of the year is a time for looking backward an…</p>
            <small class="source">
                via <a href="https://proycon.anaproy.nl">Proycon&#39;s website</a>
            </small>
            <small class="date">December 31, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://tuxphones.com/pinetab2-rk3586-linux-tablet-juno-tablet-fydetab-duo/" target="_blank" rel="noopener">The PineTab2 is a new, faster Linux tablet - and it&#39;s not alone</a>
            </h4>
            <p class="summary">In their December update, Pine64 announced the PineTab2, which is the successor to their PineTab from 2018. As a major change, the PineTab2 upgrades the slow A53-based A64 SoC with an A55-based Rockchip RK3566, the same chip that was used for the Quartz64…</p>
            <small class="source">
                via <a href="https://tuxphones.com/">TuxPhones - Linux phones, tablets and portable devices</a>
            </small>
            <small class="date">December 19, 2022</small>
        </div>
        
        <div class="article">
            <h4 class="title">
                <a href="https://drewdevault.com/2022/12/01/I-shall-toil-quietly.html" target="_blank" rel="noopener">I shall toil at a reduced volume</a>
            </h4>
            <p class="summary">Over the last nine years I have written 300,000 words for this blog on the
topics which are important to me. I am not certain that I have much left to say.
I can keep revisiting these topics for years, each time adding a couple more
years of wisdom and impro…</p>
            <small class="source">
                via <a href="https://drewdevault.com">Drew DeVault&#39;s blog</a>
            </small>
            <small class="date">December 1, 2022</small>
        </div>
        
    </section>
    <p class="attribution">
        Generated by
        <a href="https://git.sr.ht/~sircmpwn/openring">openring</a>
    </p>
</section>
</div>
<div class="sidebar">
    <hr class="visible-xs" />
    Subscribe via <a href="https://momi.ca/feed.xml">RSS</a>
    <h3>Pages</h3>
    <p>
        <a href="https://momi.ca/index.html">Homepage</a><br>
    <a href="https://momi.ca/projects.html">Projects</a><br>
    <a href="https://momi.ca/cv.pdf">Resume</a><br>
    <h4>Services</h4>
    <a href="https://momi.ca/xmpp.html">XMPP</a><br>
    <a href="https://momi.ca/email.html">Email</a>
    <div class="external-links">
      <p>
          <span class="context">irc nick (<a href="https://new.oftc.net/">OFTC</a>, <a href="https://libera.chat/">libera.chat</a>)</span>
          anjan
      </p>
      <p>
        <span class="context">sourcehut</span>
        <a href="https://git.sr.ht/~anjan" rel="me">~anjan</a>
      </p>
      <p>
        <span class="context">XMPP/Jabber</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">Matrix</span>
          <a href="https://matrix.to/#/@anjan:postmarketos.org" rel="me">@anjan:postmarketos.org</a>
      </p>
      <p>
        <span class="context">email</span>
        anjan -at- momi.ca
      </p>
      <p>
          <span class="context">pgp<sup><a href="https://emailselfdefense.fsf.org/en/">?</a></sup></span>
          <a href="https://momi.ca/publickey.txt" rel="me">BF5CD7823BA2B218</a>
      </p>
      <p>
        <span class="context">gitlab</span>
        <a href="https://gitlab.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">github</span>
        <a href="https://github.com/anjandev" rel="me">anjandev</a>
      </p>
      <p>
        <span class="context">donate to me - liberapay</span>
        <a href="https://liberapay.com/anjan" rel="me">anjan</a>
      </p>
    </div>

    <h3>License</h3>
    <p style="font-size: 10pt">
    <a href="https://git.sr.ht/~sircmpwn/drewdevault.com">Website theme</a> © 2015 Drew DeVault
    <br>
    <a href="https://www.romanzolotarev.com/ssg.html">ssg5</a> © 2018-2019 Roman Zolotarev
    <br>
    <a href="https://www.romanzolotarev.com/rssg.html">rssg</a> © 2018 Roman Zolotarev
    <br>
    <br>
    This website's <a href="https://git.sr.ht/~anjan/momi.ca">code</a> is
    <br>
    released under <a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-or-later</a>.
    <br>
    The content for this site is
    <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a>
    unless otherwise noted.
    <br>
    <a href="https://momi.ca/posts/2020-08-23-analytics.html">Privacy Policy</a>
    </p>
    <div class = "container" style="display:flex;justify-content:space-evenly;">
    <a href="https://alpinelinux.org/" target="_blank" >
        <img src="https://momi.ca/images/alpine.svg"
             alt="Powered by Alpine Linux"
             style="width:80px;height:auto">
    </a>
    <a href="https://prosody.im/" target="_blank">
        <img src="https://momi.ca/images/powered_by_prosody_80x30.png"
             alt="Powered by Prosody XMPP server">
    </a>
    </div>
    <br>
    <a href="https://sfconservancy.org/sustainer/">
      <img src="https://sfconservancy.org/img/supporter-badge.png" width="194" height="90" alt="Become a Conservancy Sustainer!" border="0"/>
    </a>
    <div class="spacer" style="margin-top: 50px;"></div>
</div>
</div>
</body>
</html>

]]></description>
</item>
</channel></rss>
