RSSAmplifier

Blog

Anjan's Blog

Recent content on Anjan's Blog

/RSS feed ↗49 posts

Latest posts

Using Hugo

I customized a static site generator written in shell script 5 years ago: Minimal Blogging Setup with Orgmode and ssg5 .
Last year, I reinstalled my operating system.
On Monday this week, I tried to build this website and the website would not build.
After a whole night of debugging my script, I gave up and decided to migrate to Hugo.
Here is what I learned while migrating the…

I will be at FOSDEM 2025!

I will be doing a postmarketOS tabling with the postmarketOS folks at FOSDEM 2025 in Brussels: 
 
https://fosdem.org/2025/ 
 
The conference is happening February 1st and 2nd. Also, I will be giving a talk: 
 
https://fosdem.org/2025/schedule/event/fosdem-2025-6187-introduction-to-pmbootstrap/ 
 
Come to Brussels if you want to hang out and chat about…

FOSSY 2023 Talk: Thoughts after daily driving postmarketOS for 3 years

I did a talk at FOSSY 2023 and forgot to post the published video on my blog last year.
Here it is! Most of the information is still correct in 2024 and the demos are still relevant. 
 
Enjoy: 
 
 
Link: https://archive.org/details/fossy2023_Thoughts_after_daily_driving_p

SeaGL 2024 Talk: Introduction to postmarketOS

I did a talk at SeaGL 2024 this November - Introduction to postmarketOS.
This talk aims to show the flexibility of postmarketOS and it's amazing tooling. 
 
The talk overview is here:
 https://pretalx.seagl.org/2024/talk/983CCA/ 
 
You can watch the talk here: 
 
 
Link: https://www.youtube.com/live/wJfbS8f2Zio?si=2EAQASmC-3OcZ4yk&t=3084

I will be at SeaGL 2024!

I will be doing a postmarketOS tabling with Clayton Craft at SeaGL 2024 in Seattle: 
 
https://seagl.org/ 
 
The conference is happening November 8th and 9th. Also, I will be giving a talk: 
 
https://pretalx.seagl.org/2024/talk/983CCA 
 
Come to Seattle if you want to hang out and chat about postmarketOS!
Here are the relevant notes for the talk: 
 
…

Introducing Honeybee: Calling via XMPP


 
Problem Statement
 
 
 
The main issue most people have when daily driving mobile linux is call and text reliability.
A lot of work has been done to get us close to 100% reliability but if I want the best reliability, I have to use android.
On postmarketOS, audio routing has alot of moving parts and for your phone to ring, callaudiod, modemmanager, and the audio…

The Pinephone Pro, PostmarketOS, and Why Mainlining Phones is Important

In #sxmo on OFTC, users often ask why the pinephone pro is less functional on postmarketOS than other distros.
PostmarketOS uses a mainline pinephone pro kernel 1 .
There exists a heavily patched fork of the linux kernel called the megi kernel with broader support for the functionality of the pinephone pro 2 .
In this blog post, I will explain why postmarketOS has mainline-first…

Why we must insist on Free Network Services

There has been renewed interest in the fediverse 1 .
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…

Sxmo on the poco f1

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 1 . 
 
On the look out for a replacement device, I saw the poco f1 and oneplus 6 have gained support for calling in postmarketOS…

Sxmo Libreplanet 2022 Presentation

I recently gave a talk about Sxmo at the Free Software Foundation 's Libreplanet 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 postmarketOS (a Linux distribution).
It's incredible how far Sxmo has come since our presentation at last year's Alpineconf .
Thanks to…

Sxmo Project Goals and the sxmo_migrate.sh on Upgrades Flaw

In every release of Sxmo, we have a message in the release notes stating the following: 
 
 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 sxmo_migrate.sh as soon as you upgrade. 
 
 
Users often do not read the release notes and join the irc channel to ask why their…

Onboarding New Contributors: Good First Issue Label

People sometimes ask me “how do I get into contributing to Free software”.
Contributing to Free software can be as difficult as starting a new job - you don’t know where to start, the abbreviations everyone uses are foreign to you, and you’re worried about embarrassing yourself 1 .
Your motivation might vary but I got into Free software to learn and because it is…

Ditch plex/jellyfin/kodi (or worse Netflix)! My favorite mpv scripts

mpv is my favorite video player.
It has a lot of user scripts written in a variety of programming languages.
Many people install jellyfin, plex, or kodi to emulate a netflix-like experience.
Here's how I am able to emulate a netflix-like experience with mpv using user scripts: 
 
 
skiptofade.lua
 
 
 
 skiptofade.lua skips til a black screen…

Stuck on grub menu after Luks Full Disk Encryption (coreboot)

I used ivyra1n to install skulls with seabios payload on my x230.
However, after installing coreboot, I could not boot into a lot of distros after installing with their full disk encryption 1 .
Here is fix and a potential workaround. 
 
So I recently decided to try out Devuan because I don't like systemd on Debian.
I followed devuan's Full Disk Ecryption guide .
The install…

Sourcehut multiple documentation versions

When using man.sr.ht for Sxmo’s documentation we wanted to have three versions: 
 
 Documentation for the latest tagged stable release of the code in edge 
 Documentation for the latest git HEAD version of the code 
 Documentation for the latest tagged stable release in postmarketOS stable 
 
 Having three versions allows us to document features as we add them to the…

Setup xinitrc (startx) and connect to DBUS (set DBUS_SESSION_BUS_ADDRESS) on Debian 11

I recently installed Debian 11 on a workstation and the .xinitrc I usually use on Gentoo (with openrc) and Alpine (also openrc) did not properly setup dbus ( $DBUS_SESSION_BUS_ADDRESS env variable was empty).
I tried putting export $(dbus-launch) in my .xinitrc as stackexchange recommended but this did not fix the dbus environmental variables being unset.
 $DBUS_SESSION_BUS_ADDRESS not…

Sxmo Alpineconf 2021 Presentation

I recently gave a talk about Sxmo 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. 
 
You can watch a presentation of…

How and Why the Benefits of Mass Surveillence are Overestimated While the Costs are Undermined


 
How much surveillance till we are safe?
 
 
 
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 'trade off', there is no criterion for when…

sendxmpp as a replacement for mail(1)

Tools like cron use mail(1) to notify the server admin of failing services.
It is trivial to configure postfix to only send mail .
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 msmtp to have my email service provider (migadu, gmail, etc.) send my emails for me but…

GoAccess - You do not need proprietary javascript to get analytics

I run noscript 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…

Latex New Line

In latex, a sentence will only be added to a new paragraph if it is double spaced from the line before. 
 
For example, the following latex code: 
 
 % These two sentences will be in the same paragraph in the compiled result
 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
 Ut enim ad minim veniam,…

Technology is Political and the Political Ramifications of Free Culture

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…

Minimal Blogging Setup with Orgmode and ssg5


 
My Old Setup
 
 
 
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: M-x org-publish .
org-publish is much more powerful and reliable than any markdown converter I have used. 
 
Since 2016, I…

Projects


Here is a list of projects I have worked on or am currently working on.
Currently, I am mostly busy with Alpine Linux/postmarketOS and sxmo - a user interface for linux phones. 
 
 
SFU Team Satellite
 
 
 
I was a part of the SFU Team Satellite from Summer of 2019 to Summer 2020. 
In 2020, I served as the power team lead .
As a part the power team, I…

Compiling crust for pinephone on Postmarketos


 Crust is now available from postmarketos' official repos! This post is now obsolete but is kept as an archive for how to test new kernels. Use at your own risk 
 
 Crust 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…

Why VoidLinux is Better than Arch - A Former Arch User's Perspective


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 1 .
The Arch to VoidLinux pipeline is somewhat a joke and maybe I'm leaning into that joke with this blog post.
Anyway, here are some reasons for…

Recommended Watch/Read: Free Software Needs Free Tools

Signal boosting the excellent blog post and talk 'Free Software Needs Free Tools' by Benjamin Mako Hill in which he gives the story of how git was created. 
 
 
I agree with most if not all his recommendations following the story.
Personally, I have been paying for a sourcehut membership for a while now and this story is the reason I continuously renew my paid account (aside from…

Two Factor Authentication App on Pinephone


I picked up the pinephone but it wasn'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. 
 
 
Issues with gnome-authenticator
 
 
 
On postmarketos, gnome-authenticator is my preferred two factor…

3D Printing MASK STRAPS Ear Savers

The BC COVID-19 3D Printing Group has a list of designs they would like people to help print to ensure medical personnel are protected during the COVID-19 epidemic. 
 This post has two purposes: 
 
 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. 
 Share my tips for “mass…

OpenBSD's doas on Voidlinux


OpenBSD's doas is a minimal replacement for sudo . If you run a single user
linux box, you can replace sudo with doas in order to have a simpler sudo 
configuration and usage experience. 
 
First, install doas using xbps-install . 
 
 sudo xbps-install opendoas 
 
 
Doas rules have the following format: 
 
 permit|deny [options] identity [as target]…

Tips for PCI Passthrough


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. 
 
 
AMD GPU Guest Driver Install Black Screen at 40%
 
 
 
This was the most frustrating issue I ran into. When I tried to install the
latest AMD driver for my…

Sourcehut Android Gradle Continuous Integration


 
Introduction to Sourcehut
 
 
 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. 
 
 
 
 
Secrets
 
 
 Before we begin, we need to create the android-sdk-license build secret.
This file…

Software Freedom and Scholarship: Reproducible Research


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 1 . The subsequent trials can reveal the random variation, and hint at the true quantity being sought. 
 
Reproducibility is no guarantee of correctness. It will never indicate if the correct…

Why you will regret putting your creative works on Instagram, Linkedin, Facebook, etc


 
 Source: xkcd.com 
 
 License: Attribution-NonCommercial 2.5 Generic (CC BY-NC 2.5) 
 
I often have friends recommend me their art pages or creative works that solely
exist on the corporate social media websites: 
 
 instagram 
 medium 
 facebook 
 tumblr 
 wix 
 
 If you care about discoverability and long term viability of your…

MSE312 One Degree of Freedom Pick and Place Robot


 
Abstract
 
 
 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…

MSE428 Project Demo Mario Kart


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. 
 
 An automaton ( ɔːˈtɒmətən ; 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…

How to fix youtube sub feed


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 1 . In this post,
I will be explaining how to make a better youtube sub feed. 
 
 
Introducting RSS
 
 
 
RSS (Rich Site Summary; originally…

Fix qutebrowser high cpu usage


I love qutebrowser for its vim keys but I found that qutebrowser'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: 
 
 Open qutebrowser 
 Type in :set 
 Look for qt.force_software_rendering and set the option…

Labview ICT Notes

Required Readings 
 
 Multicore Programming with NI Labview 
 Wait (ms) Function 
 High Resolution Relative Seconds VI 
 Boolean Crossing PtByPt VI 
 Probes 
 
 Important Notes 
 
 “Wiring a value of 0 to the milliseconds to wait input forces the current thread to yield control of the CPU.” - See “wait (ms)” in required readings 
…

Patch NPT For Ryzen CPU Arch Linux

Note: This patch has been merged with upstream. Simply update your archlinux machine and npt should just work. 
 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. 
 For this procedure we will be using the Arch Build System so that…

Matrix

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: 
 
 
 Message me to make you an account 
 
 
 Go to riot 
 
 
 Press custom server 
 Home server URL: https://momi.ca:8448 
 Leave identity server URL as…

Setting up contact and calendar syncing with baikal

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’ todo list much more than google’s. 
 Android 
 
 
 Download and install the F-droid appstore . This…

Setup Multiple Monitors in Sway (Wayland)

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: 
 Get the names of your outputs by running: 
 swaymsg -t get_outputs
 I have two monitors: one 1440p monitor…

How to Stream MPD and Setup Mpdroid


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'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.…

Hello World

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.

Mumble Client Usage


If you're seeing this, that means we'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're having trouble. 
 
 
Reasons to use mumble:
 
 
 
 Lowest latency 
 Best voice quality 
 
 The host is a dedicated computer, not someone in the call. 
 
 If someone leaves call,…

About


 
Hello! This website is a collection of my ideas, documentation, and projects. 
 
Me on the web: 
 
 Subscribe to this site via RSS 
 sourcehut: ~anjan 
 xmpp/jabber: anjan -at- momi.ca 
 matrix: @anjan:postmarketos.org 
 
 email: anjan -at- momi.ca 
 
 public key: BF5CD7823BA2B218 ? 
 
 
 github: anjandev 
 liberapay: anjan…

Email

&#xA; &#xA;Third-party Apps&#xA; &#xA; &#xA; &#xA; Use IMAP &#xA; The email server details for mobile/desktop clients are given here: https://www.migadu.com/guides/#generic-settings &#xA; Username : <your-name>@momi.ca &#xA; &#xA; &#xA;

XMPP Server

&#xA; &#xA; &#xA;How to invite someone else&#xA; &#xA; &#xA; &#xA;If you want to invite someone else to momi.ca, just message the admins (xmpp: anjan -at- momi.ca or colinl@momi.ca) and they will get an invite link for you.&#xA;Note: you can chat with users from other servers on the XMPP network (@anydomain) with your @momi.ca account. &#xA; &#xA; &#xA; &#xA; &#xA;Android&#xA; &#xA; &#xA; &#xA;…