<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>sahilister&#39;s Reimagined Doodle</title>
    <link>https://blog.sahilister.in/</link>
    <description>Recent content on sahilister&#39;s Reimagined Doodle</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>

    
    <lastBuildDate>Mon, 27 Apr 2026 08:10:59 +0530</lastBuildDate>
    
    <atom:link href="https://blog.sahilister.in/index.xml" rel="self" type="application/rss+xml" />
    
    
    
    <item>
      <title>Weekly Notes</title>
      <link>https://blog.sahilister.in/2026/04/weekly-notes/</link>
      <pubDate>Mon, 27 Apr 2026 08:10:59 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2026/04/weekly-notes/</guid>
      <description>&lt;p&gt;Weekly notes is a genre where people chronicle their week on their blogs. Weekly notes are like a window. I love going through these, as they&amp;rsquo;re a steady stream of week on week happenings and progress in people&amp;rsquo;s lives. It shows people making efforts to improve: from basic things like learning to swim or drive, to planning long-term goals such as vacations, moving house, states, or even countries. In some cases, they carry internal monologues, thoughts, and anxieties. These are like a constant nudge for me to work on myself, like them.&lt;/p&gt;
&lt;p&gt;These are the weekly notes I read nowadays:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://adhavansivaraj.xyz/tags/weekly-notes/&#34;&gt;https://adhavansivaraj.xyz/tags/weekly-notes/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://learningwala.in/tags/weekly-notes/&#34;&gt;https://learningwala.in/tags/weekly-notes/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://thejeshgn.com/category/weekly-notes/&#34;&gt;https://thejeshgn.com/category/weekly-notes/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://shrayas.com/tagged/weeknotes&#34;&gt;https://shrayas.com/tagged/weeknotes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tracydurnell.com/category/weeknotes/&#34;&gt;https://tracydurnell.com/category/weeknotes/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sathyabh.at/&#34;&gt;https://sathyabh.at/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Most are there on Thejesh&amp;rsquo;s &lt;a href=&#34;https://thejeshgn.github.io/weekly-notes-planet/&#34;&gt;weekly notes planet&lt;/a&gt; which autoupdates when new posts arrive, usually starting on Friday evenings, and by Monday, almost everyone has posted.&lt;/p&gt;
&lt;p&gt;It reminds of a word from The Dictionary of Obscure Sorrows -
&lt;a href=&#34;https://www.thedictionaryofobscuresorrows.com/word/kenaway&#34;&gt;&lt;em&gt;Kenaway&lt;/em&gt;&lt;/a&gt; :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;the longing to see how other people live their lives when they’re not in public; wishing you could tune in to the raw feed of another human existence, in all its messiness and solitude—shimmying in place while brushing their teeth, squabbling over where to put the shoes, talking out their problems on solitary commutes—if only to give you something to compare your own life against, and figure out whether you’re bizarrely normal or normally bizarre.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Close enough.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>What is Life (to you)?</title>
      <link>https://blog.sahilister.in/2026/04/what-is-life-to-you/</link>
      <pubDate>Thu, 16 Apr 2026 23:29:00 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2026/04/what-is-life-to-you/</guid>
      <description>&lt;p&gt;It started with a thought: to understand people&amp;rsquo;s perspectives on life and its meaning. So I texted folks, &amp;ldquo;What is life (to you)?&amp;rdquo;. Each of the following list items (-) is a response from a different individual, mostly verbatim.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- A lot&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- Everyone has a few universal basic qualities, and some special qualities. To me life is pursuit of exploring world based on those qualities and maturing those qualities as one goes on about exploring world/life with those qualities. &lt;br&gt;
Discovering and enhancing experiences as one goes through them.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- life is endless suffering&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- my answer might change daily, but this is what I&amp;rsquo;ve noticed and feel recently.
Life is a spectrum with two distinct ends: what we control and what we don&amp;rsquo;t. At birth, the spectrum is largely tilted toward control, but throughout our lives, it gradually shifts toward the other side. Ultimately, as we approach death, we lose all control over any aspect of our existence, reaching the other end of the spectrum. &lt;br&gt;
tho this isn&amp;rsquo;t universal, privilege plays a huge part in what you control tho i believe it holds true for the majority &lt;br&gt;
but yeah man, meaning and purpose are dynamic, it&amp;rsquo;s in their nature to change
i can give you a different answer this evening itself xD&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- Funeral Monologue from Synecdoche, New York. &lt;a href=&#34;https://www.youtube.com/watch?v=Z9PzSNy3xj0&#34;&gt;https://www.youtube.com/watch?v=Z9PzSNy3xj0&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- Zindagi ek nadiya hai,
Aur mujhe tairna nahi aata &lt;br&gt; (translation - Life is a river,
and I don’t know how to swim)&lt;br&gt;
On a more serious note, Life is what you make it out for yourself.
The only established truth is that it will end. We can never know if there is something after or if there was something before.
So try to live a life that you feel aspired by?
But this question was beautifully answered by that book which you had about that dying professor &lt;br&gt;
(Me - He was talking about Tuesday&amp;rsquo;s with Morrie)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- My answer is 42&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- One, it&amp;rsquo;s living on your own terms, you define everything for yourself, success, normal, whatever. You get to curate your version of it no matter the societal norms. &lt;br&gt;
It&amp;rsquo;s an accumulation of experiences - friends, parents, work, activities, doing shit loads. Sab try karo- travel, zumba, art, music, workout, sports, dil kara ye karna hai karlo. (translation - If your heart wants to do it, just do it.) &lt;br&gt;
Then I think relationships - all that you&amp;rsquo;ve nurtured, people forget maintaining people because of work. It takes efforts to keep people in your life, everyone that comes has a place in yours, how well thats stays is upto you. You also get to curate your people, who stays who don&amp;rsquo;t. Family toh hai hi (translation - family is there) but everyone else that comes along can make it pretty good. &lt;br&gt;
So I don&amp;rsquo;t want to be 50 and be like chalo ab kuch apne liye karte hai&amp;hellip; (translation - Come on, now let’s do something for ourselves) Do whatever shit you want today. Not everything costs money, and if it does get thrifty &lt;br&gt;
But do keep healthy while doing all of that&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- Being alive so that my daughter can grow up and i can help raising her kids as well.
Raising kids without mother is tough :P&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- Definitively, I feel like Life is a by product of proteins and energy working together.
But in a more personal sense, Life is a dumb joke played onto us. It’s a rat race.
But rats exists because of life and then it becomes a chicken-egg problem &lt;br&gt;
Honestly, I don’t give good answers to life questions. I’m generally the one asking &lt;br&gt;
Life can be like a box of chocolates, you don’t know what you’re gonna get untill you experience the chocolate(assuming the chocolates are heterogenous and contains a mix of everything) &lt;br&gt;
Camus once said, “Life is a revolt”, and one of his students added more spice to it like “Life is a revolt against the meaninglessness of existence&amp;quot; &lt;br&gt;
I kinda feel like Life is the pursuit of every person’s search for meaning&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- Imprisonment waiting for execution 😄 &lt;br&gt;
I have one more thought while we are on the topic , game with pre defined starting position and predefined destination , path to reach is a maze&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- A phase where you can have a really good time or really bad one, usually the mix of both.
A phase where you are prisoner to responsibility and materialistic wants. &lt;br&gt;
It&amp;rsquo;s a hell for you, where you try to create heaven for others.
Being born was never your choice, but ending is always in your hands but you are a prisoner. You fear that leaving this world behind will destroy the heavens you created for others and they will be back to hell. But eventually everyone moves on watching the hourglass of their life. &lt;br&gt;
Once you are left with no desires or no one to create heavens for, you look arround yourself. You see everyone chasing something, everyone scared of their limitted life time sliping away yet you want it to end sooner. &lt;br&gt;
Doesn&amp;rsquo;t matter if it was all good till now, or all bad. The other half is waiting for redemption.
If it was all good, it&amp;rsquo;s best time to die don&amp;rsquo;t wait for the bad to start. If was all bad, it&amp;rsquo;s still the best time to die what if it was the good one and more worst is waiting for you.
We desire to be remembered, yet we want to free from this loop of suffering. &lt;br&gt;
Someone once said, life is a suffering, chose your sufferings.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- Life to me is to live without regrets and live with freedom. &lt;br&gt;
Life is always unpredictable and this unpredictability makes it more interesting and worth it.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- As of now, for the state of mind that I am in , I think for me life is about subtle struggle, subtle inconveniences and yet moving forward cause that&amp;rsquo;s all I know. &lt;br&gt;
I am not sure if any of this has any meaning, but  sometimes I feel I was born of a purpose and that the universe has my back. &lt;br&gt;
For me it&amp;rsquo;s about raising my consciousness, understanding people to their depths, gaining moderate material success and helping people to some extend. &lt;br&gt;
I have tried to seek a grander meaning but I have failed. &lt;br&gt;
Life for me is what I make out it. &lt;br&gt;
In my times of great success i rarely think about life for I am busy enjoying it, whatever you may call that state of mind.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- For me its the little things that you enjoy with YOUR people&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- Life to me is about living and loving, and doing it in a way that sustains. It&amp;rsquo;s the people who shape you, the work you get absorbed in, the quiet moments in between. There&amp;rsquo;s also the wanting, the drive to figure out what&amp;rsquo;s worth going after and how to get there, but that&amp;rsquo;s just one part of it, not the point of it. And none of it happens in a vacuum. I&amp;rsquo;m aware of the privileges that let me live this way, and I try to hold on to that gratitude. In the end, life has both a material and a non-material side, and a lot of what we do is chasing material things in an attempt to satisfy something non-material within us&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- Mere liye (translation - for me) life is staying at my home and studying random economics papers. That&amp;rsquo;s when I enjoy myself the most.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- Very complicated &lt;br&gt;
Some days I wish this life never ended and some time I feel it would be better if it stopped at that moment. &lt;br&gt;
It all depends on the events that happen in the so called &amp;ldquo;life&amp;rdquo;. &lt;br&gt;
So life to me is a string of events that happen anyway and you get to make some decisions which can turn it in any direction and then you wonder how did that happen.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- not forgetting to breathe, learn, eat, game, take a good shit, love, sleep.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- To be honest it changed with time!
At 19 it was about freedom, wasn’t sure what freedom meant but i wanted that! To be free from everything, maybe because parents still controlled a part of my life.
Then came 22-24 where i was working, trying to figure out what i want, the meaning changed from freedom to living for myself. To earn more, to be greedy about myself and pursue whatever would help me gain more steps in my career. &lt;br&gt;
Came my mba life, switched my life from doing for myself to trying everything out to have no regrets. Life meaning was just about living with no regrets, invested, gambled, did everything to earn that tag of “yeah, have tried that”.
Now it has all switched to, it was all just a fake facade. Life turned to having a meaningful life rather than finding meaning in what i am doing. Living for people around me, chhoti chhoti cheezo m khushi (translation - happiness in small things(?)) isn’t really a topic of conversation but more of happy thing for me.
So it changed, and m quite happy to be honest. Life did show me a lot of failures, but was privileged enough to face those failures. Gained a lot of learnings if not money😂 &lt;br&gt;
Hopeful for more learnings and change meaning of life with time&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- A task.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- You have different answers at different times
You learn different meanings at different times
When you are studying, basically it is about job, finding a partner
then it becomes, house, car other things based on your income
in between, there can be passion too &lt;br&gt;
Free Software was a passion, electoral politics too, but both kind of faded and I want cooperative and user driven development now (prav - something that motivates me every day) and these days learning Chinese and watching Cdrama takes a huge part of my leisure time
it is heavily subjective
and also influences by previous experiences
people around you, how much influence they have on you &lt;br&gt;
it also depends on if they had to struggle in their life or not, for some life did not give much troubles
and trouble itself can be relative
people who never had to struggle may find even smallest challenges as troubles
like if you own a car, your worry is finding a parking slot&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- I am too young to think about lyfe&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- A ticket to see the show on earth, I guess 😀  &lt;br&gt;
I guess life is different depending on the mood. It is a very broad question. &lt;br&gt;
(Me - What is it in this present mood?) &lt;br&gt;
Learning stuff (like I am learning a new language) and being happy but also to regulate emotions in a world where being optimistic is getting harder each day. &lt;br&gt;
Life is also having a unique set of glasses you wear. Both in terms of looking from your eyeballs and your psychological perspective. Both are unique and cannot be replicated. &lt;br&gt;
It is interesting what people on their deathbed think of life.  If I know I am dying, my perspective would change a whole lot. &lt;br&gt;
Life is finishing reading books while we are alive 😉 &lt;br&gt;
Life is sleeping after a good XMPP chat 😉&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- Dukh dard peeda (translation - surrow pain suffering)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- uhh to word it? life is just like a journey from A to somewhere and its all about what paths you take and what line you get on to me, just a series of short adventures that all connect to a larger sequence until you can&amp;rsquo;t have any more adventures-&lt;br&gt;
(Me - eee, THE END. drop dead, like a coin) &lt;br&gt;
yeaaaah- I am not really for spirituality of an afterlife, to me life just ends at some point, after which point there fails to remain a discernable &lt;em&gt;you&lt;/em&gt;, and some X time after which, you will be last remembered, try to make that last time a good one I guess? &lt;br&gt;
(Me -  no soul?) &lt;br&gt;
uhhh not in the way most people think of it i guess? &lt;br&gt;
theres just a lot of &lt;code&gt;you&lt;/code&gt;s, theres the physical you, there is the idea of you, there is the expectation of you, and one of the undefinable you I would label as the soul maybe? like the part thats not physically you, but also certainly you &lt;br&gt;
(Me - can&amp;rsquo;t say I understood part, but I get you in this sense) &lt;br&gt;
mhm- well its about just questioning who you are more so questioning what life is-, I have sadly spent way too much time trying to figure that out&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- Making the best of the time you have&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- living a full range of experiences and embracing the good ones, seeing all that the world has to offer. In the end we were always just stardust. Might as well enjoy it when we are stardust with a consciousness of our own.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- For some reason or the Universe&amp;rsquo;s /dev/random I was born here as a biological being, and from my experience I understood living is hard and the best way to live is by embracing it. Loving everyone and everything around you. Be happy and joyful until you naturally say good bye to this world.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- Life is being fucked by everything and you just have to figure out and try to stick to the things worth being fucked for&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Note: Following was transcribed from a audio message.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;- There are five conditions to become a life to survive in the environment. I think there&amp;rsquo;s five conditions by the biological definitions and reproduction is one of the factor virus is not considered a life form because it cannot reproduce on its own but technically it&amp;rsquo;s kind of a life because it reproduces using the DNA ability this is the biological definition.
Do you want a philosophical definition? &lt;br&gt;
My definition is kind of the same except that you get life experiences along with it as a human.
Extra benefits is that you are not an NPC. All other organisms are NPCs.
But humans can interpret the world and change it to their liking.
That is life in the case of a human.
But then many humans are mostly NPCs.
But they still can change the life.
Okay, fuck this. Where is this even going? &lt;br&gt;
A human is an exception in the case of life, because human is not an NPC.
Human can interrupt the world, human can change it to its liking,
which is why we are such a successful organism on this planet.
That is life to me. That&amp;rsquo;s a human.
But all of this is kind of meaningless, because
the biological impurity of a human being still exists, so you still have the
urges to reproduce, which kind of makes
it like just another organism. But then, humans are yet to evolve
to overcome that biological imperative.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&amp;rsquo;m grateful for all the replies, outlooks, and subsequent conversations I got to have after this question with everyone. After all, it was a deeply personal question. It does fit in nicely with &lt;em&gt;my&lt;/em&gt; definition of life: &lt;br&gt; &lt;em&gt;&amp;ldquo;Life is all about experiences and all the transient relationships one gets to have with folks we meet on the way.&amp;rdquo;&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>MiniDebConf Kanpur 2026</title>
      <link>https://blog.sahilister.in/2026/03/minidebconf-kanpur-2026/</link>
      <pubDate>Mon, 30 Mar 2026 07:54:57 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2026/03/minidebconf-kanpur-2026/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://kanpur2026.mini.debconf.org/&#34;&gt;MiniDebConf Kanpur 2026&lt;/a&gt; was held on 14th and 15th March 2026 at the Indian Institute of Technology Kanpur.&lt;/p&gt;
&lt;p&gt;Having a Debian conference in the North was something many folks wanted. &lt;a href=&#34;https://ravidwivedi.in/&#34;&gt;Ravi&lt;/a&gt; started the discussion (with IIT Kanpur folks) almost 7 months before the conference. Lots of folks from Debian India joined in organizing the conference, which was nice. All the meeting notes and discussions were posted on the Debian India mailing list, a first.&lt;/p&gt;
&lt;p&gt;Despite all the efforts, the conference start was delayed due to logistical issues. Things went fine post Day 1 lunch. We had two days of almost &lt;a href=&#34;https://kanpur2026.mini.debconf.org/schedule/&#34;&gt;full schedules&lt;/a&gt;. disaster&amp;rsquo;s &lt;a href=&#34;https://kanpur2026.mini.debconf.org/talks/20-decentralising-indian-communication/&#34;&gt;&lt;em&gt;Decentralising Indian Communication&lt;/em&gt;&lt;/a&gt; was an interesting talk, diving into decentralised communication.&lt;/p&gt;
&lt;p&gt;IIT Kanpur is a huge campus with nice footpaths and greenery. We got the opportunity to explore their &lt;a href=&#34;https://www.iitk.ac.in/hpc/paramsanganak&#34;&gt;HPC&lt;/a&gt; at the Computer Center post conference.&lt;/p&gt;
&lt;p&gt;Work has already started for MiniDebCamp Kochi. More details can be found on the &lt;a href=&#34;https://wiki.debian.org/DebianEvents/in/2026/MiniDebCampKochi&#34;&gt;wiki&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Working to make this conference happen was different with all the challenges involved, but overall, everyone was happy with the outcome.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/mdc-k-2026-group-photo.png&#34; alt=&#34;MDC K group photo&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;
    Group photo. &lt;a href=&#34;https://blog.sahilister.in/img/mdc-k-2026-group-photo.png&#34;&gt;Click to enlarge&lt;/a&gt;
    &lt;/i&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Publicly Available NKN Data Traffic Graphs</title>
      <link>https://blog.sahilister.in/2026/02/publicly-available-nkn-data-traffic-graphs/</link>
      <pubDate>Wed, 25 Feb 2026 19:08:36 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2026/02/publicly-available-nkn-data-traffic-graphs/</guid>
      <description>&lt;p&gt;National Knowledge Network (NKN) is one of India&amp;rsquo;s main National Research and Educational Network (NREN). The other being, the less prevalent Education and Research Network (ERNET).&lt;/p&gt;
&lt;p&gt;This post grew out of &lt;a href=&#34;https://toots.sahilister.in/@sahil/115308911066583184&#34;&gt;this Mastodon thread&lt;/a&gt; where I kept on adding various public graphs (from various global research and educational entities) that connect with NKN. This was to get some purview about traffic data between them and NKN.&lt;/p&gt;
&lt;h3 id=&#34;cern&#34;&gt;CERN&lt;/h3&gt;
&lt;p&gt;CERN, birthplace of the World Wide Web (WWW) and home of the Large Hadron Collider (LHC).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Graph - &lt;a href=&#34;https://monit-grafana-open.cern.ch/d/XoND3VQ4k/nkn?orgId=16&amp;amp;from=now-30d&amp;amp;to=now&amp;amp;timezone=browser&amp;amp;var-source=raw&amp;amp;var-bin=5m&#34;&gt;https://monit-grafana-open.cern.ch/d/XoND3VQ4k/nkn?orgId=16&amp;amp;from=now-30d&amp;amp;to=now&amp;amp;timezone=browser&amp;amp;var-source=raw&amp;amp;var-bin=5m&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Connection seems to be 2x10 G through CERNLight.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;India participates in various CERN projects, for which data is carried over these links for scientific research purposes. &lt;a href=&#34;https://indico.cern.ch/event/1411901/contributions/6017912/attachments/2919948/5125000/KolkataTier2_ATCFatTIFR2024.pdf&#34;&gt;This presentation from Vikas Singhal&lt;/a&gt; from Variable Energy Cyclotron Centre (VECC), Kolkata, at the 8th Asian Tier Center Forum in 2024 gives some details.&lt;/p&gt;
&lt;h3 id=&#34;géant&#34;&gt;GÉANT&lt;/h3&gt;
&lt;p&gt;GÉANT is pan European Union&amp;rsquo;s collaboration of NRENs.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Graph &lt;a href=&#34;https://public-brian.geant.org/d/ZyVgYFgVk/nkn?orgId=5&amp;amp;from=now-30d&amp;amp;to=now&#34;&gt;https://public-brian.geant.org/d/ZyVgYFgVk/nkn?orgId=5&amp;amp;from=now-30d&amp;amp;to=now&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;NKN connects at Amsterdam POP.&lt;/li&gt;
&lt;li&gt;From the &lt;a href=&#34;https://web.archive.org/web/20161013145202/https://www.geant.org/News_and_Events/Pages/New-NKN-international-network-to-boost-EU-India-collaboration.aspx&#34;&gt;2016 press release&lt;/a&gt; from GÉANT, NKN seems to have 2x10 G capacity towards GÉANT. Things might have changed since.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;learn&#34;&gt;LEARN&lt;/h3&gt;
&lt;p&gt;Lanka Education and Research Network (LEARN) is Sri Lanka&amp;rsquo;s NREN.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Graph &lt;a href=&#34;https://kirigal.learn.ac.lk/traffic/details.php?desc=slt-b1-new&amp;amp;data_id=1788&amp;amp;data_id_v6=&amp;amp;sub_bw=1000&amp;amp;name=National%20Knowledge%20Network%20of%20India%20(1G)&amp;amp;swap_inout=&#34;&gt;https://kirigal.learn.ac.lk/traffic/details.php?desc=slt-b1-new&amp;amp;data_id=1788&amp;amp;data_id_v6=&amp;amp;sub_bw=1000&amp;amp;name=National%20Knowledge%20Network%20of%20India%20(1G)&amp;amp;swap_inout=&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Connection seems to be 1 G.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;nordunet&#34;&gt;NORDUnet&lt;/h3&gt;
&lt;p&gt;NREN for Nordic countries.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Graph &lt;a href=&#34;https://stats.nordu.net/stat-q/r-all?q=all&amp;amp;name=NKN&#34;&gt;https://stats.nordu.net/stat-q/r-all?q=all&amp;amp;name=NKN&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I couldn&amp;rsquo;t find any public live data transfer graphs from NKN side. If you know any other graphs, do let me know.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update (26/04/2026) - During &lt;a href=&#34;https://indico.cern.ch/event/1354604/&#34;&gt;
WLCG-India Monthly meeting
&lt;/a&gt; in December 2023, &lt;a href=&#34;indico.cern.ch/event/1354604/contributions/5704029/attachments/2776596/4839265/NKN%20PPT%20-%20dated%2007-12-2023.pdf&#34;&gt;&amp;ldquo;The NKN: Past Present Future&amp;rdquo;&lt;/a&gt; talk was presented, which shows, among various other things, VLCC, TIFR and other institutions&amp;rsquo; traffic usage patterns via NKN.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Conferences, why?</title>
      <link>https://blog.sahilister.in/2026/01/conferences-why/</link>
      <pubDate>Tue, 20 Jan 2026 07:57:03 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2026/01/conferences-why/</guid>
      <description>&lt;p&gt;Back in December, I was working to help organize multiple different conferences. One has already happened; the rest are still works in progress. That&amp;rsquo;s when the thought struck me: why so many conferences, and why do I work for them?&lt;/p&gt;
&lt;p&gt;For most conference discussions now, I just show up without a set role (DebConf is probably an exception to it). It usually involves talking to folks, suggesting what needs to be done, doing a bit of it myself, and finishing some last-minute stuff during the actual thing.&lt;/p&gt;
&lt;p&gt;I have been fairly active in the scene since 2020. For most conferences, I usually arrive late in the city on the previous day and usually leave the city on conference close day. Conferences for me are the place to meet friends and new folks and hear about them, their work, new developments, and what&amp;rsquo;s happening in their interest zones. I feel naturally happy talking to folks. In this case, people inspire me to work. Nothing can replace a passionate technical and social discussion, which stretches way into dinner parties and later.&lt;/p&gt;
&lt;p&gt;Having more of these conferences and helping make them happen naturally gives everyone space to come together, meet, talk, and work on something.&lt;/p&gt;
&lt;p&gt;No doubt, one reason for all these conferences is evangelism for, let&amp;rsquo;s say Free Software, OpenStreetMap, Debian etc. which is good and needed for the pipeline. But for me, the primary reason would always be meeting folks.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Full /8 IPv4 Address Block Holders in 2025</title>
      <link>https://blog.sahilister.in/2026/01/full-/8-ipv4-address-block-holders-in-2025/</link>
      <pubDate>Sun, 04 Jan 2026 13:11:36 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2026/01/full-/8-ipv4-address-block-holders-in-2025/</guid>
      <description>&lt;p&gt;Here, I tried to collect entities that owned full /8 IPv4 address block(s) in 2025.&lt;/p&gt;
&lt;p&gt;A more comprehensive and historical list can be found at &lt;a href=&#34;https://en.wikipedia.org/wiki/List_of_assigned_/8_IPv4_address_blocks&#34;&gt;https://en.wikipedia.org/wiki/List_of_assigned_/8_IPv4_address_blocks&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;3.0.0.0/8 - &lt;a href=&#34;https://bgp.tools/rir-owner/4a8a91b5b89d3f900098ebf73ca0b118&#34;&gt;Amazon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;6.0.0.0/8 - &lt;a href=&#34;https://bgp.tools/rir-owner/ARIN-USDDD&#34;&gt;US Department of Defense&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;7.0.0.0/8 - &lt;a href=&#34;https://bgp.tools/rir-owner/ARIN-USDDD&#34;&gt;US Department of Defense&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;11.0.0.0/8 - &lt;a href=&#34;https://bgp.tools/rir-owner/ARIN-USDDD&#34;&gt;US Department of Defense&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;12.0.0.0/8 - &lt;a href=&#34;https://bgp.tools/rir-owner/ARIN-AEL-360&#34;&gt;AT&amp;amp;T Services&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;17.0.0.0/8 - &lt;a href=&#34;https://bgp.tools/rir-owner/ARIN-APPLEC-1-Z&#34;&gt;Apple Inc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;19.0.0.0/8 - &lt;a href=&#34;https://bgp.tools/rir-owner/ARIN-FORDMO&#34;&gt;Ford Motor Company&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;21.0.0.0/8 - &lt;a href=&#34;https://bgp.tools/rir-owner/ARIN-USDDD&#34;&gt;US Department of Defense&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;22.0.0.0/8 - &lt;a href=&#34;https://bgp.tools/rir-owner/ARIN-USDDD&#34;&gt;US Department of Defense&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;25.0.0.0/8 - &lt;a href=&#34;https://bgp.tools/rir-owner/uk.mod&#34;&gt;UK Ministry of Defense&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;26.0.0.0/8 - &lt;a href=&#34;https://bgp.tools/rir-owner/ARIN-USDDD&#34;&gt;US Department of Defense&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;28.0.0.0/8 - &lt;a href=&#34;https://bgp.tools/rir-owner/ARIN-USDDD&#34;&gt;US Department of Defense&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;29.0.0.0/8 - &lt;a href=&#34;https://bgp.tools/rir-owner/ARIN-USDDD&#34;&gt;US Department of Defense&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;38.0.0.0/8 - &lt;a href=&#34;https://bgp.tools/rir-owner/ARIN-COGC&#34;&gt;Cogent Communications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;53.0.0.0/8 - &lt;a href=&#34;https://bgp.tools/rir-owner/de.daimler&#34;&gt;Mercedes-Benz Group AG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;55.0.0.0/8 - &lt;a href=&#34;https://bgp.tools/rir-owner/ARIN-USDDD&#34;&gt;US Department of Defense&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;73.0.0.0/8 - &lt;a href=&#34;https://bgp.tools/rir-owner/ARIN-CCCS&#34;&gt;Comcast Corporation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;214.0.0.0/8 - &lt;a href=&#34;https://bgp.tools/rir-owner/ARIN-USDDD&#34;&gt;US Department of Defense&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;215.0.0.0/8 - &lt;a href=&#34;https://bgp.tools/rir-owner/ARIN-USDDD&#34;&gt;US Department of Defense&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;some-notable-mentions&#34;&gt;Some notable mentions:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;I would have loved to include 4.0.0.0/8 and 8.0.0.0/8 with &lt;a href=&#34;https://bgp.tools/rir-owner/ARIN-LPL-141&#34;&gt;Lumen/Level 3&lt;/a&gt; or 9.0.0.0/8 with &lt;a href=&#34;https://bgp.tools/rir-owner/ARIN-IBM-1-Z&#34;&gt;IBM&lt;/a&gt; but parts of the address space have been handed out to other entities, like &lt;a href=&#34;https://bgp.tools/transfer-history/8.8.4.0/24&#34;&gt;8.8.4.0/24&lt;/a&gt; and &lt;a href=&#34;https://bgp.tools/transfer-history/8.8.8.0/24&#34;&gt;8.8.8.0/24&lt;/a&gt; for Google Public DNS and &lt;a href=&#34;https://bgp.tools/transfer-history/9.9.9.0/24&#34;&gt;9.9.9.0/24&lt;/a&gt; for Quad9. Both &lt;a href=&#34;https://bgp.tools/transfer-history/?org=IBM&#34;&gt;IBM&lt;/a&gt; and &lt;a href=&#34;https://bgp.tools/transfer-history/?org=Level%203%20Parent%2c%20LLC&#34;&gt;Lumen&lt;/a&gt; have started handing out this IP space.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Then there were other famous netblocks like 18.0.0.0/8 with MIT and 44.0.0.0/8 which was with Amateur Packet Radio Network broken and brought up by &lt;a href=&#34;https://bgp.tools/rir-owner/4a8a91b5b89d3f900098ebf73ca0b118&#34;&gt;Amazon&lt;/a&gt;. Amazon keeps on &lt;a href=&#34;https://bgp.tools/transfer-history/?org=Amazon.com%2c%20Inc.&#34;&gt;buying more and more of IPv4 address space&lt;/a&gt;. Right now, they&amp;rsquo;re the second highest IPv4 address space holder with &lt;a href=&#34;https://bgp.he.net/report/peers#_ipv4addresses&#34;&gt;168+ million addresses under them&lt;/a&gt;, right behind the US DoD, which has more due to legacy reasons.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Note - HE&amp;rsquo;s list mentions addresses originated (not just owned). Providers also advertise prefixes owned by their customers in Bring Your Own IP (BYOIP) setups. The number of address space owned by entity would &amp;ldquo;mostly&amp;rdquo; be more than their customer owned space (originated by the entity).&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There&amp;rsquo;s also 126.0.0.0/8 which is mostly &lt;a href=&#34;https://bgp.tools/rir-owner/A9153AE1&#34;&gt;Softbank&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>MiniDebConf Navi Mumbai 2025</title>
      <link>https://blog.sahilister.in/2025/12/minidebconf-navi-mumbai-2025/</link>
      <pubDate>Sat, 20 Dec 2025 22:35:51 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2025/12/minidebconf-navi-mumbai-2025/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://wiki.debian.org/DebianEvents/in/2025/MiniDebConfNaviMumbai&#34;&gt;MiniDebConf Navi Mumbai 2025&lt;/a&gt; which was MiniDebConf Mumbai, which in turn was the FOSSMumbai x MiniDebian Conference, happened on 13th and 14th December 2025, with &lt;a href=&#34;https://www.openstreetmap.org/way/130988081&#34;&gt;a hotel&lt;/a&gt; as Day 1 venue and &lt;a href=&#34;https://www.openstreetmap.org/way/937092528&#34;&gt;a college&lt;/a&gt; on Day 2.&lt;/p&gt;
&lt;p&gt;Originally planned for the 8th of November, it got postponed to December due to operational reasons. Most of on-ground logistics and other heavy lifting were done by Arya, Vidhya, MumbaiFOSS, and the Remigies Technologies team, so we didn&amp;rsquo;t have to worry much.&lt;/p&gt;
&lt;p&gt;I gave a talk on &lt;em&gt;&lt;a href=&#34;https://fossunited.org/c/mumbai/minidebconf2025/cfp/9e7cbsmo36&#34;&gt;Basics of a Free Software Mirror (and how Debian does it)&lt;/a&gt;&lt;/em&gt; (&lt;a href=&#34;https://blog.sahilister.in/talks/basics-of-a-free-software-mirror-deb-edition.pdf&#34;&gt;presentation URL&lt;/a&gt;). I had the idea for a while and gave a KDE version of it during KDE India Conf 2025. The gist was to explain how Free Software is delivered to users and how one can help. For MDC, I focused on Debian mirror network and who hosts mirrors in India and trends.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/mdc-nm-2025/talk-picture.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;
     Me during mirror talk &lt;br&gt;
     Credits - niyabits. Thanks for the pictures&lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;At the onset, someone mentioned my Termux mirror. Termux is a good project to get into mirror hosting. &lt;a href=&#34;https://blog.sahilister.in/2022/01/termux.sahilister.in-a-termux-mirror-is-live-now/&#34;&gt;I got into mirroring&lt;/a&gt; with it. It has low traffic requirement, (&lt;a href=&#34;https://2.mirrors.in.sahilister.net/stats/termux.html&#34;&gt;usually less than 20 GB/day&lt;/a&gt;) with high request count and can be done on an existing 6 USD Digital Ocean node. Q&amp;amp;A time turned out more interesting than I anticipated. Folks touched upon commercial CDNs inplace of community mirrors, supply chain security issues, and a bit of other stuff.&lt;/p&gt;
&lt;p&gt;We had quite a number of &lt;a href=&#34;https://fossunited.org/dashboard/schedule/mumbai/minidebconf2025&#34;&gt;interesting talks&lt;/a&gt; and I remember when Arya telling me during CFP time, &lt;em&gt;&amp;ldquo;Bro, we have too many talks now&amp;rdquo;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Preparations are underway for MiniDebConf Kanpur 2026, scheduled for March 14th and 15th at the IIT campus. If you want to help, see the &lt;a href=&#34;https://lists.debian.org/debian-dug-in/2025/12/msg00008.html&#34;&gt;following thread&lt;/a&gt;. See you in the next one.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/mdc-nm-2025/mdc-nm-d1.png&#34; alt=&#34;A group photo&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;
    Day 1 group photo. &lt;a href=&#34;https://blog.sahilister.in/img/mdc-nm-2025/mdc-nm-d1.png&#34;&gt;Click to enlarge&lt;/a&gt;
    &lt;/i&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/mdc-nm-2025/mdc-nm-d2.png&#34; alt=&#34;A group photo&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;
    Day 2 group photo. &lt;a href=&#34;https://blog.sahilister.in/img/mdc-nm-2025/mdc-nm-d2.png&#34;&gt;Click to enlarge&lt;/a&gt;
    &lt;/i&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Anchors in Life</title>
      <link>https://blog.sahilister.in/2025/11/anchors-in-life/</link>
      <pubDate>Tue, 18 Nov 2025 17:03:19 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2025/11/anchors-in-life/</guid>
      <description>&lt;p&gt;Just like a ship needs an anchor to stabilize and hold it to port, humans too, I feel require anchors to hold them in life. It could be an emotional anchor, a physical anchor or an anchor that stimulates your curiosity. They could be a family member, a friend, a partner or a spiritual being.&lt;/p&gt;
&lt;p&gt;An anchor holds you and helps you stabilize in stormy weather. An anchor can keep you going or stop you from going. An anchor orients you, helps you formulate your values and beliefs.&lt;/p&gt;
&lt;p&gt;An anchor could be someone or something or oneself (thanks &lt;a href=&#34;https://saswata.cc/&#34;&gt;Saswata&lt;/a&gt; for the thought). Writing here is one of my anchors; what&amp;rsquo;s your anchor?&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Special 26</title>
      <link>https://blog.sahilister.in/2025/11/special-26/</link>
      <pubDate>Tue, 11 Nov 2025 23:10:08 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2025/11/special-26/</guid>
      <description>&lt;p&gt;There&amp;rsquo;s this Bollywood movie by the name of Special 26, and I have been wishing all my friends turning 26 with this, hence the name Special 26. There isn&amp;rsquo;t anything particularly special about turning 26 though I&amp;rsquo;m realizing I&amp;rsquo;m closer to 30 than 20 now.&lt;/p&gt;
&lt;p&gt;The happenings on my birthday and subsequent home visits have made me more grateful and happy for having friends and family who care. With age, I have started noticing small gestures and all the extra efforts they have been doing for me forever, and this warms my heart. Thank you, everyone. I&amp;rsquo;m grateful for having you in my life. :)&lt;/p&gt;
&lt;p&gt;Learning-wise, Domain Name System (DNS), RFCs, and discovering the history of my native place have been my go-to things recently. I went heavy into DNS, which also translated to posting &lt;a href=&#34;https://blog.sahilister.in/2025/06/a-look-at-.ua-cctld-authoritative-name-servers/&#34;&gt;1&lt;/a&gt;, &lt;a href=&#34;https://blog.sahilister.in/2025/06/case-of-broken-maharashtra.gov.in-authoritative-name-servers/&#34;&gt;2&lt;/a&gt;, &lt;a href=&#34;https://blog.sahilister.in/2025/07/secondary-authoritative-name-server-options-for-self-hosted-domains/&#34;&gt;3&lt;/a&gt; and eventually taking the plunge of self-hosting authoritative name servers for &lt;em&gt;sahilister.net&lt;/em&gt; and &lt;em&gt;sahil.rocks&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;There has been a shift from heavy gray to friendly white clothing for me. The year was also marked with not being with someone anymore; things change.&lt;/p&gt;
&lt;p&gt;In 2025, somehow I was at the airport more times than at the railway station. Can say it was the year of jet-setting.&lt;/p&gt;
&lt;p&gt;Being in another foreign land opened my mind to the thought of how to live one&amp;rsquo;s life in a more mindful manner, which I&amp;rsquo;m still pondering months after the trip. As Yoda said - &amp;ldquo;&lt;em&gt;Do. Or do not. There is no try&lt;/em&gt;&amp;rdquo;, I&amp;rsquo;m trying to slow down in life and do less (which is turning out harder) and be more in the moment, less distracted. Let&amp;rsquo;s revisit next year and see how this turned out.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Debconf25 Brest</title>
      <link>https://blog.sahilister.in/2025/11/debconf25-brest/</link>
      <pubDate>Thu, 06 Nov 2025 10:10:42 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2025/11/debconf25-brest/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://debconf25.debconf.org&#34;&gt;DebConf25&lt;/a&gt; was held at IMT Atlantique Brest Campus in France from 14th to 19th July 2025. As usual, it was preceded by DebCamp from 7th to 13th July.&lt;/p&gt;
&lt;p&gt;I was less motivated to write this time. So this year, more pictures, less text. Hopefully, (eventually) I may come back to fill this up.&lt;/p&gt;
&lt;h3 id=&#34;conference&#34;&gt;Conference&lt;/h3&gt;
&lt;br&gt;
&lt;img alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-imt-entrance.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;IMT Atlantique&lt;/i&gt;
&lt;/div&gt; &lt;br&gt;
&lt;img alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-main-hall.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;Main conference area&lt;/i&gt;
&lt;/div&gt; &lt;br&gt;
&lt;img alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-rak-restaurant.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;RAK restaurant, the good food place near the venue&lt;/i&gt;
&lt;/div&gt; &lt;br&gt;
&lt;img alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-bits-from-dpl.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;&lt;a href=&#34;https://debconf25.debconf.org/talks/4-bits-from-the-dpl/&#34;&gt;Bits from DPL &lt;/a&gt; (can&#39;t really miss the tradition of a Bits picture)&lt;/i&gt;
&lt;/div&gt; &lt;br&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-kali-mirrorbits-talk-2.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-kali-mirrorbits-talk.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; &lt;a href=&#34;https://debconf25.debconf.org/talks/122-kali-linux-delivery-of-a-rolling-distro-at-scale-with-mirrorbits/&#34;&gt;Kali Linux: Delivery of a rolling distro at scale with Mirrorbits&lt;/a&gt; by Arnaud Rebillout &lt;/i&gt;
&lt;/div&gt; &lt;br&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-debian-security-talk.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; &lt;a href=&#34;https://debconf25.debconf.org/talks/185-the-security-of-debian-an-introduction-to-advanced-users/&#34;&gt;The security of Debian - An introduction to advanced users&lt;/a&gt; by Samuel Henrique &lt;/i&gt;
&lt;/div&gt; &lt;br&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-salsa-ci-talk.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; &lt;a href=&#34;https://debconf25.debconf.org/talks/185-the-security-of-debian-an-introduction-to-advanced-users/&#34;&gt; Salsa CI BoF&lt;/a&gt; by Otto Kekäläinen and others &lt;/i&gt;
&lt;/div&gt; &lt;br&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-debian-net-talk.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; &lt;a href=&#34;https://debconf25.debconf.org/talks/185-the-security-of-debian-an-introduction-to-advanced-users/&#34;&gt; Debian.net Team BoF &lt;/a&gt; by debian.net team &lt;/i&gt;
&lt;/div&gt; &lt;br&gt;
&lt;p&gt;During the conference, &lt;a href=&#34;https://subinsb.com/&#34;&gt;Subin&lt;/a&gt; had this crazy idea of shooting &amp;ldquo;Parody of a popular clip from the American-Malayalee television series &lt;a href=&#34;https://en.wikipedia.org/wiki/Akkara_Kazhchakal&#34;&gt;&amp;lsquo;Akkarakazhchakal&amp;rsquo;&lt;/a&gt; advertising Debian.&amp;rdquo; He explained the whole story in the &lt;a href=&#34;https://peertube.debian.social/w/aXLD3RKdn8iuXkj4qXMY2C&#34;&gt;BTS video&lt;/a&gt;. The results turned out great, TBF:&lt;/p&gt;
&lt;iframe title=&#34;You have a computer, but no freedom?&#34; width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://peertube.debian.social/videos/embed/9J5ziBt9PrbvvGQEV7M31P&#34; frameborder=&#34;0&#34; allowfullscreen=&#34;&#34; sandbox=&#34;allow-same-origin allow-scripts allow-popups allow-forms&#34;&gt;&lt;/iframe&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; &lt;a href=&#34;https://peertube.debian.social/w/9J5ziBt9PrbvvGQEV7M31P&#34;&gt;You have a computer, but no freedom?&lt;/a&gt; 
   &lt;br&gt; Credits - Subin Siby, licensed under CC BY SA 4.0.&lt;/i&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-video-shooting.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; BTS from &#34;You have a computer, but no freedom?&#34; video shoot&lt;/i&gt;
&lt;/div&gt; &lt;br&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-closing.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; &lt;a href=&#34;https://debconf25.debconf.org/talks/153-closing-ceremony/&#34;&gt; DebConf25 closing &lt;/a&gt; &lt;/i&gt;
&lt;/div&gt; &lt;br&gt; &lt;br&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-network-usage.png&#34;&gt;
&lt;i&gt; DC25 network usage graphs.  &lt;a href=&#34;https://blog.sahilister.in/img/dc25/dc25-network-usage.png&#34;&gt;Click to enlarge.&lt;/a&gt; &lt;/i&gt; &lt;br&gt; &lt;br&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-flow-chart.png&#34;&gt;
&lt;i&gt; Flow diagrams.  &lt;a href=&#34;https://blog.sahilister.in/img/dc25/dc25-flow-chart.png&#34;&gt;Click to enlarge.&lt;/a&gt; &lt;/i&gt;&lt;br&gt; &lt;br&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-streaming-bandwidth-usage.png&#34;&gt;
&lt;i&gt; Streaming bandwidth graph.  &lt;a href=&#34;https://blog.sahilister.in/img/dc25/dc25-streaming-bandwidth-usage.png&#34;&gt;Click to enlarge.&lt;/a&gt; &lt;/i&gt; &lt;br&gt; &lt;br&gt;
&lt;/div&gt;
&lt;h3 id=&#34;brest&#34;&gt;Brest&lt;/h3&gt;
&lt;br&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-brest-harbor.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-bridge-in-brest.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-brest-sea.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;Brest Harbor and Sea&lt;/i&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-sncf-engine.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-little-prince.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;I managed to complete The Little Prince (Le Petit Prince) during my travel from Paris to Brest&lt;/i&gt;
&lt;/div&gt;
&lt;h3 id=&#34;paris&#34;&gt;Paris&lt;/h3&gt;
&lt;br&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-sacred-heart-of-montmartre.jpg&#34;&gt; 
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; Basilica of the Sacred Heart of Montmartre &lt;/i&gt;
&lt;/div&gt; &lt;br&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-paris-from-top.jpg&#34;&gt; &lt;br&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; View of Paris from the Basilica of the Sacred Heart of Montmartre &lt;/i&gt;
&lt;/div&gt; &lt;br&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-paris-street.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-paris-statue.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-paris-street-at-night.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;Paris streets&lt;/i&gt;
&lt;/div&gt; &lt;br&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-paris-streetlamp.jpg&#34;&gt; 
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;Cats rule the world, even on Paris streetlights&lt;/i&gt;
&lt;/div&gt; &lt;br&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Eiffel Tower&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-effiel-tower-base.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;Eiffel Tower. It&#39;s massive.&lt;/i&gt;
&lt;/div&gt; &lt;br&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Eiffel Tower&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-paris-view-from-effel-tower.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;View from Eiffel Tower &lt;br&gt; Credits - Nilesh Patra, licensed under CC BY SA 4.0. &lt;/i&gt;
&lt;/div&gt; &lt;br&gt;
&lt;p&gt;As for the next DebConf work, it has already started. It seems like it never ends. We close one and in one or two months start working on the next one. DebConf is going to &lt;a href=&#34;https://debconf26.debconf.org/&#34;&gt;Argentina&lt;/a&gt; this time and we have a nice little logo too now.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;DebConf26 logo&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc26-logo.png&#34; style=&#34;display: block; margin-left: auto; margin-right: auto;&#34;&gt; 
&lt;br&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; DebConf26 logo &lt;br&gt; Credits - Romina Molina, licensed under CC BY SA 4.0.&lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;Overall, DebConf25 Brest was a nice conference. Many thanks to local team, PEB and everyone involved for everything. Let&amp;rsquo;s see about next year. Bye!&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;DebConf25 Group Photo&#34; src=&#34;https://blog.sahilister.in/img/dc25/dc25-group-photo-small.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; DebConf25 Group Photo.  &lt;a href=&#34;https://blog.sahilister.in/img/dc25/dc25-group-photo.jpg&#34;&gt;Click to enlarge.&lt;/a&gt; &lt;br&gt; Credits - &lt;a href=&#34;https://aigarius.com/blog/2025/08/03/debconf25-photos/&#34;&gt;Aigars Mahinovs&lt;/a&gt;&lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;PS - Talks are available on &lt;a href=&#34;https://meetings-archive.debian.net/pub/debian-meetings/2025/DebConf25/&#34;&gt;Debian media server&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Five Years of Writing - Now What?</title>
      <link>https://blog.sahilister.in/2025/07/five-years-of-writing-now-what/</link>
      <pubDate>Tue, 08 Jul 2025 08:41:15 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2025/07/five-years-of-writing-now-what/</guid>
      <description>&lt;p&gt;Okay, here&amp;rsquo;s the deal, I pushed my first post on &lt;em&gt;Reimagined Doodle&lt;/em&gt; - &lt;a href=&#34;https://blog.sahilister.in/2020/07/alias-command/&#34;&gt;&lt;em&gt;Alias Command&lt;/em&gt;&lt;/a&gt;, five years ago on July 8th, 2020. Don&amp;rsquo;t think I ever mentioned that post started out as a &lt;a href=&#34;https://gist.github.com/sahilister/3a343a692622770218e43c398aaffc59&#34;&gt;Github Gist&lt;/a&gt; which I later transferred here seeking a more long-term home on an independent platform.&lt;/p&gt;
&lt;p&gt;Writing about writings, motivations, and the blog itself has been a recurring theme here over the years. &lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; &lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt; &lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt; &lt;sup id=&#34;fnref:6&#34;&gt;&lt;a href=&#34;#fn:6&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;6&lt;/a&gt;&lt;/sup&gt; &lt;sup id=&#34;fnref:7&#34;&gt;&lt;a href=&#34;#fn:7&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;7&lt;/a&gt;&lt;/sup&gt; &lt;sup id=&#34;fnref:8&#34;&gt;&lt;a href=&#34;#fn:8&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;8&lt;/a&gt;&lt;/sup&gt; &lt;sup id=&#34;fnref:9&#34;&gt;&lt;a href=&#34;#fn:9&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;9&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m unsure how I sustained expressing myself and writing here for this long. Now and then, I go months without any thought of writing, and then all of a sudden I start in bursts with sequential posts one after another. There isn&amp;rsquo;t a pattern per se in topics other than whatever burning question I have at the moment.&lt;/p&gt;
&lt;p&gt;So here&amp;rsquo;s to a milestone and then some.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.sahilister.in/2021/05/i-like-writing-now/&#34;&gt;https://blog.sahilister.in/2021/05/i-like-writing-now/&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.sahilister.in/2021/03/confronting-thoughts-with-writing/&#34;&gt;https://blog.sahilister.in/2021/03/confronting-thoughts-with-writing/&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.sahilister.in/2020/12/whats-in-the-name-reimagined-doodle-sahilister/&#34;&gt;https://blog.sahilister.in/2020/12/whats-in-the-name-reimagined-doodle-sahilister/&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.sahilister.in/2020/10/why-i-write-blogs/&#34;&gt;https://blog.sahilister.in/2020/10/why-i-write-blogs/&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:5&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.sahilister.in/2021/02/quick-wiki-style-guide/&#34;&gt;https://blog.sahilister.in/2021/02/quick-wiki-style-guide/&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:6&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.sahilister.in/2021/05/suggest-me-blogpost-topics/&#34;&gt;https://blog.sahilister.in/2021/05/suggest-me-blogpost-topics/&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:6&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:7&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.sahilister.in/2021/07/i-have-no-idea-youre-reading-this/&#34;&gt;https://blog.sahilister.in/2021/07/i-have-no-idea-youre-reading-this/&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:7&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:8&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.sahilister.in/2022/01/write-for-yourself/&#34;&gt;https://blog.sahilister.in/2022/01/write-for-yourself/&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:8&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:9&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.sahilister.in/2024/06/how-i-write-blogs-june-2024-edition/&#34;&gt;https://blog.sahilister.in/2024/06/how-i-write-blogs-june-2024-edition/&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:9&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Let&#39;s Talk About AI</title>
      <link>https://blog.sahilister.in/2025/07/lets-talk-about-ai/</link>
      <pubDate>Mon, 07 Jul 2025 22:12:30 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2025/07/lets-talk-about-ai/</guid>
      <description>&lt;p&gt;Recently, &lt;a href=&#34;https://www.sethgodin.com/&#34;&gt;Seth Godin&lt;/a&gt; wrote in &lt;a href=&#34;https://seths.blog/2025/07/productivity-ai-and-pushback/&#34;&gt;&lt;em&gt;Productivity, AI and pushback&lt;/em&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Typesetters did not like the laser printer. Wedding photographers still hate the iphone. And some musicians are outraged that AI is now making mediocre pop music.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In the article, Seth connected how AI is increasing productivity and how anything that improves productivity always wins.&lt;/p&gt;
&lt;p&gt;Nowadays, large language models (LLMs) have become synonymous with AI, while AI is a broader field. AI has brought a shift in how things are done. Use cases might vary, but it&amp;rsquo;s helping in ways like quickly summarizing huge knowledge bases to answer questions or in my case, helping understand the contextual meaning of complex word (or sentence) usage in language and literature in both English and Hindi, which was sometimes not easy to comprehend with simple web search results.&lt;/p&gt;
&lt;p&gt;Even if you or I don&amp;rsquo;t really like &amp;ldquo;AI in everything&amp;rdquo;, we can&amp;rsquo;t deny the fact that AI is here to stay. This doesn&amp;rsquo;t take away from the fact that AI needs to become ethical, regulated, and environmentally sustainable.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Secondary Authoritative Name Server Options for Self-Hosted Domains</title>
      <link>https://blog.sahilister.in/2025/07/secondary-authoritative-name-server-options-for-self-hosted-domains/</link>
      <pubDate>Fri, 04 Jul 2025 08:06:51 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2025/07/secondary-authoritative-name-server-options-for-self-hosted-domains/</guid>
      <description>&lt;p&gt;In the past few months, I have moved authoritative name servers (NS) of two of my domains (&lt;em&gt;sahilister.net&lt;/em&gt; and &lt;em&gt;sahil.rocks&lt;/em&gt;) in-house using PowerDNS. Subdomains of &lt;em&gt;sahilister.net&lt;/em&gt; see roughly 320,000 hits/day across my IN and DE mirror nodes, so adding secondary name servers with good availability (in addition to my own) servers was one of my first priorities.&lt;/p&gt;
&lt;p&gt;I explored the following options for my secondary NS, which also didn&amp;rsquo;t cost me anything:&lt;/p&gt;
&lt;h4 id=&#34;1984-hosting&#34;&gt;1984 Hosting&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://1984.hosting/product/freedns/&#34;&gt;1984 Hosting Company FreeDNS&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Hosting provider from Iceland.&lt;/li&gt;
&lt;li&gt;AXFR over IPv4 only.&lt;/li&gt;
&lt;li&gt;The following secondaries are offered:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/dns/ns0.1984.is&#34;&gt;&lt;em&gt;ns0.1984.is&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/dns/ns1.1984.is&#34;&gt;&lt;em&gt;ns1.1984.is&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/dns/ns1.1984hosting.com&#34;&gt;&lt;em&gt;ns1.1984hosting.com&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/dns/ns2.1984.is&#34;&gt;&lt;em&gt;ns2.1984.is&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/dns/ns2.1984hosting.com&#34;&gt;&lt;em&gt;ns2.1984hosting.com&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Not all of NS support IPv6.&lt;/li&gt;
&lt;li&gt;Personally, I use &lt;em&gt;ns1.1984.is&lt;/em&gt; which is hosted by Netnod, one of 13 root name servers and  &lt;em&gt;.SE&lt;/em&gt; ccTLD operator.&lt;/li&gt;
&lt;li&gt;The same infrastructure serves &lt;a href=&#34;https://1984.hosting/&#34;&gt;&lt;em&gt;1984.hosting&lt;/em&gt;&lt;/a&gt; as well.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;hurricane-electric&#34;&gt;Hurricane Electric&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://dns.he.net&#34;&gt;Hurricane Electric Free DNS Hosting&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;One has to delegate NS towards one or more of &lt;em&gt;ns[1-5]he.net&lt;/em&gt; to verify ownership. It does lead to a  minor lame server period between NS addition and first zone transfer.&lt;/li&gt;
&lt;li&gt;Supports TSIG and DNSSEC pre-signed zones.&lt;/li&gt;
&lt;li&gt;The following secondaries are offered:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/dns/ns1.he.net&#34;&gt;&lt;em&gt;ns1.he.net&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/dns/ns2.he.net&#34;&gt;&lt;em&gt;ns2.he.net&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/dns/ns3.he.net&#34;&gt;&lt;em&gt;ns3.he.net&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/dns/ns4.he.net&#34;&gt;&lt;em&gt;ns4.he.net&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/dns/ns5.he.net&#34;&gt;&lt;em&gt;ns5.he.net&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The service went down when &lt;em&gt;he.net&lt;/em&gt; domain was put on hold. &lt;a href=&#34;https://mailman.nanog.org/pipermail/nanog/2024-July/225894.html&#34;&gt;NANOG thread&lt;/a&gt; and &lt;a href=&#34;https://mailman.nanog.org/pipermail/nanog/2024-July/225901.html&#34;&gt;Hurricane Electric&amp;rsquo;s response there&lt;/a&gt;. Better not depend on just one external provider.&lt;/li&gt;
&lt;li&gt;The same infrastructure serves &lt;a href=&#34;https://he.net&#34;&gt;&lt;em&gt;he.net&lt;/em&gt;&lt;/a&gt; as well.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;hetzner&#34;&gt;Hetzner&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://console.hetzner.com&#34;&gt;Hetzner&lt;/a&gt;, the German datacenter provider provides secondary name servers as well.&lt;/li&gt;
&lt;li&gt;Supports TSIG as well.&lt;/li&gt;
&lt;li&gt;The following secondaries are offered:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/dns/ns1.first-ns.de&#34;&gt;&lt;em&gt;ns1.first-ns.de&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/dns/robotns2.second-ns.de&#34;&gt;&lt;em&gt;robotns2.second-ns.de&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/dns/robotns3.second-ns.com&#34;&gt;&lt;em&gt;robotns3.second-ns.com&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Zone transfer needs to be allowed to three name servers. IP details are under the &lt;a href=&#34;https://docs.hetzner.com/dns-console/dns/general/authoritative-name-servers/&#34;&gt;Secondary name servers section&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;afraidorg&#34;&gt;Afraid.org&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://freedns.afraid.org/&#34;&gt;FreeDNS at Afraid.org&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Backup DNS option on left side menu on their website.&lt;/li&gt;
&lt;li&gt;The following secondary is offered:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/dns/ns2.afraid.org&#34;&gt;&lt;em&gt;ns2.afraid.org&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;puck&#34;&gt;Puck&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://puck.nether.net/dns/&#34;&gt;PUCK Free Secondary DNS service&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;One person show, been long-standing though there seems to be manual approval of each account, which did take some time.&lt;/li&gt;
&lt;li&gt;The following secondary is offered:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/dns/puck.nether.net&#34;&gt;&lt;em&gt;puck.nether.net&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;ns-global&#34;&gt;NS-Global&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ns-global.zone/&#34;&gt;NS-Global DNS Service&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;From &lt;a href=&#34;https://www.ns-global.zone/faq/&#34;&gt;FAQ&lt;/a&gt;, anycast with 16 POP, including 1 POP in Tokyo.&lt;/li&gt;
&lt;li&gt;Kenneth Finnegan&amp;rsquo;s &lt;a href=&#34;https://blog.thelifeofkenneth.com/2020/11/building-anycast-secondary-dns-service.html&#34;&gt;blog post&lt;/a&gt; carries how this came to be. Same person who also pulled off the &lt;a href=&#34;https://fcix.net/&#34;&gt;Fremont Cabal Internet Exchange&lt;/a&gt; and &lt;a href=&#34;https://mm.fcix.net/&#34;&gt;MicroMirror CDN project&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The following secondary is offered:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/dns/ns-global.kjsl.com&#34;&gt;&lt;em&gt;ns-global.kjsl.com&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;ns-global.kjsl.com&lt;/em&gt; uses Afraid.org, Puck and their NS for their own zone.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;asking-friends&#34;&gt;Asking friends&lt;/h4&gt;
&lt;p&gt;Two of my friends and fellow mirror hosts have their own authoritative name server setup, &lt;a href=&#34;https://shrirangkahale.com/&#34;&gt;Shrirang&lt;/a&gt; (ie albony) and &lt;a href=&#34;https://jing.rocks/&#34;&gt;Luke&lt;/a&gt;. Shirang gave me another POP in IN and through Luke (who does have an insane amount of in-house NS, see &lt;code&gt;dig ns jing.rocks +short&lt;/code&gt;), I added a JP POP.&lt;/p&gt;
&lt;p&gt;If we know each other, I would be glad to host a secondary NS for you in &lt;a href=&#34;https://bgp.tools/dns/colin.sahilister.net&#34;&gt;India&lt;/a&gt; and/or &lt;a href=&#34;https://bgp.tools/dns/marvin.sahilister.net&#34;&gt;Germany&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;some-notes&#34;&gt;Some notes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Adding a third-party secondary is putting trust that the third party would serve your zone right.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hurricane Electric and 1984 Hosting provide multiple NS. Ideally, you can get away with just using your own along with full set from any of these two. Play around with adding and removing secondaries, which gives you the best results. Using everyone is anyhow overkill, unless you have specific reasons for it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Moving NS in-house isn&amp;rsquo;t that hard. Though, be prepared to get it wrong a few times (and some more). I have already faced partial outages because:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Recursive resolvers (RR) in the wild behave in a weird way and cache the NS response for a longer time than in TTL.&lt;/li&gt;
&lt;li&gt;NS expiry took more. 2 out of 3 of Netim&amp;rsquo;s NS (my domain registrar) had stopped serving my domain, while RRs in the wild hadn&amp;rsquo;t picked up my new in-house NS. I couldn&amp;rsquo;t really do anything about it, though.&lt;/li&gt;
&lt;li&gt;Dot is pretty important at the end.&lt;/li&gt;
&lt;li&gt;With HE.net, I forgot to delegate my domain on their panel and just added in my NS set, thinking I&amp;rsquo;ve already done so (which I did but for another domain), leading to a lame server situation.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In terms of serving traffic, there&amp;rsquo;s no distinction between primary and secondary NS. RR doesn&amp;rsquo;t really care who they&amp;rsquo;re asking the query to. So one can have hidden primary too.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Initially thought of adding periodic RIPE Atlas measurements from the global set but thought against it as I already host a Termux mirror, which brings in thousands of queries from around the world, leading to a diverse set of RRs querying my domain already.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In most cases, query resolution time would increase with out-of-zone NS servers (which most likely would be in external secondary). 1 query vs. 2 queries. Pay close attention to ADDITIONAL SECTION Shrirang&amp;rsquo;s case followed by mine:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ dig ns albony.in

; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.18.36 &amp;lt;&amp;lt;&amp;gt;&amp;gt; ns albony.in
;; global options: +cmd
;; Got answer:
;; -&amp;gt;&amp;gt;HEADER&amp;lt;&amp;lt;- opcode: QUERY, status: NOERROR, id: 60525
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 9

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;albony.in.			IN	NS

;; ANSWER SECTION:
albony.in.		1049	IN	NS	ns3.albony.in.
albony.in.		1049	IN	NS	ns4.albony.in.
albony.in.		1049	IN	NS	ns2.albony.in.
albony.in.		1049	IN	NS	ns1.albony.in.

;; ADDITIONAL SECTION:
ns3.albony.in.		1049	IN	AAAA	2a14:3f87:f002:7::a
ns1.albony.in.		1049	IN	A	82.180.145.196
ns2.albony.in.		1049	IN	AAAA	2403:44c0:1:4::2
ns4.albony.in.		1049	IN	A	45.64.190.62
ns2.albony.in.		1049	IN	A	103.77.111.150
ns1.albony.in.		1049	IN	AAAA	2400:d321:2191:8363::1
ns3.albony.in.		1049	IN	A	45.90.187.14
ns4.albony.in.		1049	IN	AAAA	2402:c4c0:1:10::2

;; Query time: 29 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Fri Jul 04 07:57:01 IST 2025
;; MSG SIZE  rcvd: 286
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;vs mine&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ dig ns sahil.rocks

; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.18.36 &amp;lt;&amp;lt;&amp;gt;&amp;gt; ns sahil.rocks
;; global options: +cmd
;; Got answer:
;; -&amp;gt;&amp;gt;HEADER&amp;lt;&amp;lt;- opcode: QUERY, status: NOERROR, id: 64497
;; flags: qr rd ra; QUERY: 1, ANSWER: 11, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;sahil.rocks.			IN	NS

;; ANSWER SECTION:
sahil.rocks.		6385	IN	NS	ns5.he.net.
sahil.rocks.		6385	IN	NS	puck.nether.net.
sahil.rocks.		6385	IN	NS	colin.sahilister.net.
sahil.rocks.		6385	IN	NS	marvin.sahilister.net.
sahil.rocks.		6385	IN	NS	ns2.afraid.org.
sahil.rocks.		6385	IN	NS	ns4.he.net.
sahil.rocks.		6385	IN	NS	ns2.albony.in.
sahil.rocks.		6385	IN	NS	ns3.jing.rocks.
sahil.rocks.		6385	IN	NS	ns0.1984.is.
sahil.rocks.		6385	IN	NS	ns1.1984.is.
sahil.rocks.		6385	IN	NS	ns-global.kjsl.com.

;; Query time: 24 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Fri Jul 04 07:57:20 IST 2025
;; MSG SIZE  rcvd: 313
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;Theoretically speaking, a small increase/decrease in resolution would occur based on the chosen TLD and the popularity of the TLD in the query originator&amp;rsquo;s area (already cached vs. fresh recursion).&lt;/li&gt;
&lt;li&gt;One can get away with having only 3 NS (or be like Google and have 4 anycast NS or like Amazon and have 8 or like Verisign and make it 13).&lt;/li&gt;
&lt;li&gt;Nowhere is it written that your NS needs not to be called &lt;em&gt;dns* or ns1, ns2&lt;/em&gt; etc. Get creative with naming NS; be deceptive with the naming.&lt;/li&gt;
&lt;li&gt;A good understanding of RR behavior can help engineer a good authoritative NS system.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;further-reading&#34;&gt;Further reading&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://mirrors.de.sahilister.net/pub/rfc/in-notes/rfc2182.txt&#34;&gt;RFC 2182: Selection and Operation of Secondary DNS Servers&lt;/a&gt; is a good read on what to consider while choosing secondaries.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://mirrors.de.sahilister.net/pub/rfc/in-notes/rfc1912.txt&#34;&gt;RFC 1537: Common DNS Operational and Configuration Errors&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.potaroo.net/ispcol/2024-12/nameservers.html&#34;&gt;DNS Nameservers&lt;/a&gt; by Geoff Huston gives a good overview of how common RRs behave. Another link from the same article is &lt;a href=&#34;https://ant.isi.edu/~johnh/PAPERS/Mueller17b.pdf&#34;&gt;Recursives in the Wild:Engineering Authoritative DNS Servers&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.potaroo.net/ispcol/2025-02/nameservers.html&#34;&gt;DNS Nameservers: Service Platforms and Resilience&lt;/a&gt; by Geoff Huston.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.potaroo.net/ispcol/2022-11/dns-ctl.html&#34;&gt;Looking at Centrality in the DNS&lt;/a&gt; by Geoff Huston.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Case of (broken) maharashtra.gov.in Authoritative Name Servers</title>
      <link>https://blog.sahilister.in/2025/06/case-of-broken-maharashtra.gov.in-authoritative-name-servers/</link>
      <pubDate>Sun, 22 Jun 2025 15:31:38 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2025/06/case-of-broken-maharashtra.gov.in-authoritative-name-servers/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Maharashtra&#34;&gt;Maharashtra&lt;/a&gt; is a state here in India, which has &lt;a href=&#34;https://en.wikipedia.org/wiki/Mumbai&#34;&gt;Mumbai&lt;/a&gt;, the financial capital of India, as its capital. &lt;a href=&#34;https://maharashtra.gov.in&#34;&gt;maharashtra.gov.in&lt;/a&gt; is the official website of the State Government of Maharashtra. We&amp;rsquo;re going to talk about authoritative name servers serving it (and a bunch of child zones under maharashtra.gov.in).&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a simple &lt;a href=&#34;https://www.ibm.com/think/tutorials/using-dig-trace&#34;&gt;trace&lt;/a&gt; for the main domain:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ dig +trace maharashtra.gov.in

; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.18.33-1~deb12u2-Debian &amp;lt;&amp;lt;&amp;gt;&amp;gt; +trace maharashtra.gov.in
;; global options: +cmd
.            33128    IN    NS    j.root-servers.net.
.            33128    IN    NS    h.root-servers.net.
.            33128    IN    NS    l.root-servers.net.
.            33128    IN    NS    k.root-servers.net.
.            33128    IN    NS    i.root-servers.net.
.            33128    IN    NS    g.root-servers.net.
.            33128    IN    NS    f.root-servers.net.
.            33128    IN    NS    e.root-servers.net.
.            33128    IN    NS    b.root-servers.net.
.            33128    IN    NS    d.root-servers.net.
.            33128    IN    NS    c.root-servers.net.
.            33128    IN    NS    m.root-servers.net.
.            33128    IN    NS    a.root-servers.net.
.            33128    IN    RRSIG    NS 8 0 518400 20250704050000 20250621040000 53148 . pGxGZftwj+6VNTSQtstTKVN95Z7/b5Q8GSjRCXI68GoVYbVai9HNelxs OGIRKL4YmSrsiSsndXuEsBuvL9QvQ+qbybNLkekJUAiicKYNgr3KM3+X 69rsS9KxHgT2T8/oqG8KN8EJLJ8VkuM2PJ2HfSKijtF7ULtgBbERNQ4i u2I/wQ7elOyeF2M76iEOa7UGhgiBHSBqPulsbpnB//WbKL71yyFhWSk0 tiFEPuZM+iLrN2qBsElriF4kkw37uRHq8sSGcCjfBVdkpbb3/Sb3sIgN /zKU17f+hOvuBQTDr5qFIymqGAENA5UZ2RQjikk6+zK5EfBUXNpq1+oo 2y64DQ==
;; Received 525 bytes from 9.9.9.9#53(9.9.9.9) in 3 ms

in.            172800    IN    NS    ns01.trs-dns.com.
in.            172800    IN    NS    ns01.trs-dns.net.
in.            172800    IN    NS    ns10.trs-dns.org.
in.            172800    IN    NS    ns10.trs-dns.info.
in.            86400    IN    DS    48140 8 2 5EE4748C2069B99C98BC39A56881A64AF17CC78711E6297D43AC5A4F 4B5BB6E5
in.            86400    IN    RRSIG    DS 8 1 86400 20250704050000 20250621040000 53148 . jkCotYosapreoKKPvr9zPOEDECYVe9OtJLjkQbFfTin8uYbm/kdWzieW CkN5sabif5IHTFU4FEVOShfu4DFeUolhNav56TPKjGqEGjQ7qCghpqTj dNN4iY2s8BcJ2ujHwhm6HRfdbQRVoKYQ73UUZ+oWSute6lXWHE9+Snk2 1ZCAYPdZ2s1s7NZhrZW2YXVw/nHIcRl/rHqWIQ9sgUlsd6MwmahcAAG+ v15HG9Q48rCG1A2gJlJPbxWpVe0EUEu8LzDsp+ORqy1pHhzgJynrJHJz qMiYU0egv2j7xVPSoQHXjx3PG2rsOLNnqDBYCA+piEXOLsY3d+7c1SZl w9u66g==
;; Received 679 bytes from 199.7.83.42#53(l.root-servers.net) in 3 ms

maharashtra.gov.in.    900    IN    NS    ns8.maharashtra.gov.in.
maharashtra.gov.in.    900    IN    NS    ns9.maharashtra.gov.in.
maharashtra.gov.in.    900    IN    NS    ns10.maharashtra.gov.in.
maharashtra.gov.in.    900    IN    NS    ns18.maharashtra.gov.in.
maharashtra.gov.in.    900    IN    NS    ns20.maharashtra.gov.in.
npk19skvsdmju264d4ono0khqf7eafqv.gov.in. 300 IN    NSEC3 1 1 0 - P0KKR4BMBGLJDOKBGBI0KDM39DSM0EA4 NS SOA MX TXT RRSIG DNSKEY NSEC3PARAM
npk19skvsdmju264d4ono0khqf7eafqv.gov.in. 300 IN    RRSIG NSEC3 8 3 300 20250626140337 20250528184339 48544 gov.in. Khcq3n1Jn34HvuBEZExusVqoduEMH6DzqkWHk9dFkM+q0RVBYBHBbW+u LsSnc2/Rqc3HAYutk3EZeS+kXVF07GA/A486dr17Hqf3lHszvG/MNT/s CJfcdrqO0Q8NZ9NQxvAwWo44bCPaECQV+fhznmIaVSgbw7de9xC6RxWG ZFcsPYwYt07yB5neKa99RlVvJXk4GHX3ISxiSfusCNOuEKGy5cMxZg04 4PbYsP0AQNiJWALAduq2aNs80FQdWweLhd2swYuZyfsbk1nSXJQcYbTX aONc0VkYFeEJzTscX8/wNbkJeoLP0r/W2ebahvFExl3NYpb7b2rMwGBY omC/QA==
npk19skvsdmju264d4ono0khqf7eafqv.gov.in. 300 IN    RRSIG NSEC3 13 3 300 20250718144138 20250619135610 22437 gov.in. mbj7td3E6YE7kIhYoSlDTZR047TXY3Z60NY0aBwU7obyg5enBQU9j5nl GUxn9zUiwVUzei7v5GIPxXS7XDpk7g==
6bflkoouitlvj011i2mau7ql5pk61sks.gov.in. 300 IN    NSEC3 1 1 0 - 78S0UO5LI1KV1SVMH1889FHUCNC40U6T TXT RRSIG
6bflkoouitlvj011i2mau7ql5pk61sks.gov.in. 300 IN    RRSIG NSEC3 8 3 300 20250626133905 20250528184339 48544 gov.in. M2yPThQpX0sEf4klooQ06h+rLR3e3Q/BqDTSFogyTIuGwjgm6nwate19 jGmgCeWCYL3w/oxsg1z7SfCvDBCXOObH8ftEBOfLe8/AGHAEkWFSu3e0 s09Ccoz8FJiCfBJbbZK5Vf4HWXtBLfBq+ncGCEE24tCQLXaS5cT85BxZ Zne6Y6u8s/WPgo8jybsvlGnL4QhIPlW5UkHDs7cLLQSwlkZs3dwxyHTn EgjNWClhghGXP9nlvOlnDjUkmacEYeq5ItnCQjYPl4uwh9fBJ9CD/8LV K+Tn3+dgqDBek6+2HRzjGs59NzuHX8J9wVFxP7/nd+fUgaSgz+sST80O vrXlHA==
6bflkoouitlvj011i2mau7ql5pk61sks.gov.in. 300 IN    RRSIG NSEC3 13 3 300 20250718141148 20250619135610 22437 gov.in. raWzWsQnPkXYtr2v1SRH/fk2dEAv/K85NH+06pNUwkxPxQk01nS8eYlq BPQ41b26kikg8mNOgr2ULlBpJHb1OQ==
couldn&amp;#39;t get address for &amp;#39;ns18.maharashtra.gov.in&amp;#39;: not found
couldn&amp;#39;t get address for &amp;#39;ns20.maharashtra.gov.in&amp;#39;: not found
;; Received 1171 bytes from 2620:171:813:1534:8::1#53(ns10.trs-dns.org) in 0 ms

;; communications error to 10.187.202.24#53: timed out
;; communications error to 10.187.202.24#53: timed out
;; communications error to 10.187.202.24#53: timed out
;; communications error to 10.187.202.28#53: timed out
;; communications error to 10.187.203.201#53: timed out
;; no servers could be reached
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Quick takeaways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;5 authoritative NS are listed ie:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ns8.maharashtra.gov.in.&lt;/li&gt;
&lt;li&gt;ns9.maharashtra.gov.in.&lt;/li&gt;
&lt;li&gt;ns10.maharashtra.gov.in.&lt;/li&gt;
&lt;li&gt;ns18.maharashtra.gov.in.&lt;/li&gt;
&lt;li&gt;ns20.maharashtra.gov.in.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No address (no A/AAAA records) could be found for &lt;em&gt;ns18.maharashtra.gov.in&lt;/em&gt; and &lt;em&gt;ns20.maharashtra.gov.in&lt;/em&gt;. Internet Archive snapshots for bgp.tools at the time of writing &lt;a href=&#34;https://web.archive.org/web/20250621171149/https://bgp.tools/dns/ns18.maharashtra.gov.in&#34;&gt;NS18&lt;/a&gt; and &lt;a href=&#34;https://web.archive.org/web/20250621171134/https://bgp.tools/dns/ns20.maharashtra.gov.in&#34;&gt;NS20&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;&amp;ldquo;communications error to 10.187.202.24#53: timed out&amp;rdquo;, &amp;ldquo;communications error to 10.187.202.28#53: timed out&amp;rdquo;&lt;/em&gt; and &lt;em&gt;&amp;ldquo;communications error to 10.187.203.201#53: timed out&amp;rdquo;&lt;/em&gt; are likely due to &lt;a href=&#34;https://mirrors.de.sahilister.net/pub/rfc/in-notes/rfc1918.txt&#34;&gt;RFC 1918&lt;/a&gt; records for NS. Of course, they will never respond on the public internet.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Not in trace, but &lt;a href=&#34;https://web.archive.org/web/20250621172254/https://bgp.tools/dns/ns10.maharashtra.gov.in&#34;&gt;NS10&lt;/a&gt; has a private or empty A/AAAA record against it (detailed further down).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The query resolution failed with &lt;em&gt;&amp;ldquo;no servers could be reached&amp;rdquo;&lt;/em&gt; ie we didn&amp;rsquo;t receive any A/AAAA record for that query.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&amp;rsquo;s a hit or miss for this DNS query resolution.&lt;/p&gt;
&lt;h3 id=&#34;looking-at-in-zone-data&#34;&gt;Looking at in-zone data&lt;/h3&gt;
&lt;p&gt;Let&amp;rsquo;s look at NS added in-zone (with 9.9.9.9):&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ dig ns maharashtra.gov.in

; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.18.33-1~deb12u2-Debian &amp;lt;&amp;lt;&amp;gt;&amp;gt; ns maharashtra.gov.in
;; global options: +cmd
;; Got answer:
;; -&amp;gt;&amp;gt;HEADER&amp;lt;&amp;lt;- opcode: QUERY, status: NOERROR, id: 172
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;maharashtra.gov.in.        IN    NS

;; ANSWER SECTION:
maharashtra.gov.in.    300    IN    NS    ns8.maharashtra.gov.in.
maharashtra.gov.in.    300    IN    NS    ns9.maharashtra.gov.in.

;; ADDITIONAL SECTION:
ns9.maharashtra.gov.in.    300    IN    A    10.187.202.24
ns8.maharashtra.gov.in.    300    IN    A    10.187.202.28

;; Query time: 180 msec
;; SERVER: 9.9.9.9#53(9.9.9.9) (UDP)
;; WHEN: Sat Jun 21 23:00:49 IST 2025
;; MSG SIZE  rcvd: 115
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pay special attention to &amp;ldquo;ADDITIONAL SECTION&amp;rdquo;. Running &lt;code&gt;dig ns9.maharashtra.gov.in&lt;/code&gt; and &lt;code&gt;dig ns8.maharashtra.gov.in&lt;/code&gt;, return RFC 1918 ie these private addresses. This is coming from the zone itself, so in zone A records of NS8 and NS9 point to 10.187.202.28 and 10.187.202.24, respectively.&lt;/p&gt;
&lt;p&gt;Cloudflare&amp;rsquo;s 1.1.1.1 has a slightly different version:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ dig ns maharashtra.gov.in @1.1.1.1

; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.18.33-1~deb12u2-Debian &amp;lt;&amp;lt;&amp;gt;&amp;gt; ns maharashtra.gov.in @1.1.1.1
;; global options: +cmd
;; Got answer:
;; -&amp;gt;&amp;gt;HEADER&amp;lt;&amp;lt;- opcode: QUERY, status: NOERROR, id: 36005
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;maharashtra.gov.in.        IN    NS

;; ANSWER SECTION:
maharashtra.gov.in.    300    IN    NS    ns8.
maharashtra.gov.in.    300    IN    NS    ns10.maharashtra.gov.in.
maharashtra.gov.in.    300    IN    NS    ns9.

;; Query time: 7 msec
;; SERVER: 1.1.1.1#53(1.1.1.1) (UDP)
;; WHEN: Sun Jun 22 10:38:30 IST 2025
;; MSG SIZE  rcvd: 100
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Interesting response here for sure :D.&lt;/p&gt;
&lt;p&gt;The reason for the difference between the response from 1.1.1.1 and 9.9.9.9 is in the next section.&lt;/p&gt;
&lt;h3 id=&#34;looking-at-parent-zone&#34;&gt;Looking at parent zone&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;gov.in&lt;/em&gt; is the parent zone here. &lt;a href=&#34;https://www.tucows.com/&#34;&gt;Tucows&lt;/a&gt; is the operator for &lt;em&gt;gov.in&lt;/em&gt; as well as the &lt;em&gt;.in&lt;/em&gt; ccTLD zone:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ dig ns gov.in +short
ns01.trs-dns.net.
ns01.trs-dns.com.
ns10.trs-dns.org.
ns10.trs-dns.info.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Let&amp;rsquo;s take a look at what parent zone (NS) holds:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ dig ns maharashtra.gov.in @ns01.trs-dns.net.

; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.18.36 &amp;lt;&amp;lt;&amp;gt;&amp;gt; ns maharashtra.gov.in @ns01.trs-dns.net.
;; global options: +cmd
;; Got answer:
;; -&amp;gt;&amp;gt;HEADER&amp;lt;&amp;lt;- opcode: QUERY, status: NOERROR, id: 56535
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 5, ADDITIONAL: 6
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: f13027aa39632404010000006856fa2a9c97d6bbc973ba4f (good)
;; QUESTION SECTION:
;maharashtra.gov.in.        IN    NS

;; AUTHORITY SECTION:
maharashtra.gov.in.    900    IN    NS    ns8.maharashtra.gov.in.
maharashtra.gov.in.    900    IN    NS    ns18.maharashtra.gov.in.
maharashtra.gov.in.    900    IN    NS    ns10.maharashtra.gov.in.
maharashtra.gov.in.    900    IN    NS    ns9.maharashtra.gov.in.
maharashtra.gov.in.    900    IN    NS    ns20.maharashtra.gov.in.

;; ADDITIONAL SECTION:
ns20.maharashtra.gov.in. 900    IN    A    52.183.143.210
ns18.maharashtra.gov.in. 900    IN    A    35.154.30.166
ns10.maharashtra.gov.in. 900    IN    A    164.100.128.234
ns9.maharashtra.gov.in.    900    IN    A    103.23.150.89
ns8.maharashtra.gov.in.    900    IN    A    103.23.150.88

;; Query time: 28 msec
;; SERVER: 64.96.2.1#53(ns01.trs-dns.net.) (UDP)
;; WHEN: Sun Jun 22 00:00:02 IST 2025
;; MSG SIZE  rcvd: 248
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ADDITIONAL SECTION gives a completely different picture (different from in-zone NSes).
Maybe this was how it was supposed to be, but none of the IPs listed for NS10, NS18 and NS20 are responding to any DNS query.&lt;/p&gt;
&lt;p&gt;Assuming NS8 is 103.23.150.88 and NS9 is 103.23.150.89, checking SOA on each gives the following:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ dig soa maharashtra.gov.in @103.23.150.88 +short
ns8.maharashtra.gov.in. postmaster.maharashtra.gov.in. 2013116777 1200 600 1296000 300

$ dig soa maharashtra.gov.in @103.23.150.89 +short
ns8.maharashtra.gov.in. postmaster.maharashtra.gov.in. 2013116757 1200 600 1296000 300
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;NS8 (which is marked as primary in SOA) has serial 2013116777 and NS9 is on serial 2013116757, so it looks like the sync (IXFR/AXFR) between primary and secondary is broken. That&amp;rsquo;s why NS8 and NS9 are serving different responses, evident from the following:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ dig ns8.maharashtra.gov.in @103.23.150.88 +short
103.23.150.88

$ dig ns8.maharashtra.gov.in @103.23.150.89 +short
10.187.202.28

$ dig ns9.maharashtra.gov.in @103.23.150.88 +short
103.23.150.89

$ dig ns9.maharashtra.gov.in @103.23.150.89 +short
10.187.202.24

$ dig ns maharashtra.gov.in @103.23.150.88 +short
ns9.
ns8.
ns10.maharashtra.gov.in.

$ dig ns maharashtra.gov.in @103.23.150.89 +short
ns9.maharashtra.gov.in.
ns8.maharashtra.gov.in.

$ dig ns10.maharashtra.gov.in @103.23.150.88 +short
10.187.203.201

$ dig ns10.maharashtra.gov.in @103.23.150.89 +short

# No/empty response ^
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is the reason for the difference in 1.1.1.1 and 9.9.9.9 responses in the previous section.&lt;/p&gt;
&lt;h3 id=&#34;to-summarize&#34;&gt;To summarize:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Primary and secondary NS aren&amp;rsquo;t in sync. Serials aren&amp;rsquo;t matching, while NS8 and NS9 are responding differently for the same queries.&lt;/li&gt;
&lt;li&gt;NSes have A records with private addresses, not reachable on the internet, so lame servers.&lt;/li&gt;
&lt;li&gt;Incomplete NS address, not even FQDN in some cases.&lt;/li&gt;
&lt;li&gt;Difference between NS delegated in parent zone and NS added in actual zone.&lt;/li&gt;
&lt;li&gt;Name resolution works in a very particular order (in my initial trace it failed).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Initially, I thought of citing RFCs, but I don&amp;rsquo;t really think it&amp;rsquo;s even required.
1.1.1.1, 8.8.8.8 and 9.9.9.9 are handling (lame servers, this problem) well, handing out the A record for the main website, so &lt;code&gt;dig maharashtra.gov.in&lt;/code&gt; would mostly pass, and that was the reason I started this post with &lt;code&gt;+trace&lt;/code&gt; to recurse the complete zone to show the problem.&lt;/p&gt;
&lt;p&gt;For later reference:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ dig maharashtra.gov.in @8.8.8.8 +short
103.8.188.109
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;email-to-soa-address&#34;&gt;Email to SOA address&lt;/h3&gt;
&lt;p&gt;I have sent the following email to address listed in SOA:&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Subject - maharashtra.gov.in authoritative DNS servers not reachable&lt;/p&gt;
&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I wanted to highlight the confusing state of maharashtra.gov.in authoritative DNS servers.&lt;/p&gt;
&lt;p&gt;Parent zone list following as name servers for your DNS zone:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ns8.maharashtra.gov.in.&lt;/li&gt;
&lt;li&gt;ns18.maharashtra.gov.in.&lt;/li&gt;
&lt;li&gt;ns10.maharashtra.gov.in.&lt;/li&gt;
&lt;li&gt;ns9.maharashtra.gov.in.&lt;/li&gt;
&lt;li&gt;ns20.maharashtra.gov.in.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Out of these, ns18 and ns20 don&amp;rsquo;t have public A/AAAA records and are thus not reachable.
ns10 keeps on shuffling between NO A record and 10.187.203.201 (private, not reachable address).
ns8 keeps on shuffling between 103.23.150.88 and 10.187.202.28 (private, not reachable address).
ns9 keeps on shuffling between 103.23.150.89 and 10.187.202.24 (private, not reachable address).&lt;/p&gt;
&lt;p&gt;These are leading to long, broken, or no DNS resolution for the website(s).
Can you take a look at the problem?&lt;/p&gt;
&lt;p&gt;Regards,
Sahil&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;I&amp;rsquo;ll update here if I get a response. Hopefully, they&amp;rsquo;ll listen and fix their problem.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update (18/03/2026) - &lt;a href=&#34;https://dnsviz.net/d/maharashtra.gov.in/abfAbA/responses/&#34;&gt;DNSViz view&lt;/a&gt; of the problem.&lt;/em&gt;&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;DebConf26 logo&#34; src=&#34;https://blog.sahilister.in/img/dnsviz-maharashtra-zone.png&#34; style=&#34;display: block; margin-left: auto; margin-right: auto;&#34;&gt; 
&lt;br&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; Delegation Information from DNSViz. &lt;br&gt; Credits - Copyright © 2010 - 2014 Sandia Corporation&lt;/i&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>A Look at .UA ccTLD Authoritative Name Servers</title>
      <link>https://blog.sahilister.in/2025/06/a-look-at-.ua-cctld-authoritative-name-servers/</link>
      <pubDate>Sun, 15 Jun 2025 12:30:13 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2025/06/a-look-at-.ua-cctld-authoritative-name-servers/</guid>
      <description>&lt;p&gt;I find the case of the .UA country code top-level domain (ccTLD) interesting simply because of the different name server secondaries they have now. Post Russian invasion, the cyber warfare peaked, and critical infrastructure like getting one side&amp;rsquo;s ccTLD down would be big news in any case.&lt;/p&gt;
&lt;p&gt;Most (g/cc)TLDs are served by two (and less likely) by three or more providers. Even in those cases, not all authoritative name servers are anycasted.&lt;/p&gt;
&lt;p&gt;Take, example of .NL ccTLD name servers:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ dig ns nl +short
ns1.dns.nl.
ns3.dns.nl.
ns4.dns.nl.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;a href=&#34;https://bgp.tools/dns/ns1.dns.nl&#34;&gt;ns1.dns.nl&lt;/a&gt; is SIDN, which also manages their registry.
&lt;a href=&#34;https://bgp.tools/dns/ns3.dns.nl&#34;&gt;ns3.dns.nl&lt;/a&gt; is ReCodeZero/ipcom, another anycast secondary.
&lt;a href=&#34;https://bgp.tools/dns/ns4.dns.nl&#34;&gt;ns4.dns.nl&lt;/a&gt; is CIRA, anycast secondary. That&amp;rsquo;s 3 diverse, anycast networks to serve the .NL ccTLD. .DE has a bit more at name servers at 6, but only 3 seem anycasted.&lt;/p&gt;
&lt;p&gt;Now let&amp;rsquo;s take a look at .UA. &lt;a href=&#34;https://www.hostmaster.ua/&#34;&gt;Hostmaster LLC&lt;/a&gt; has been the registry operator of the .UA ccTLD since 2001.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ dig soa ua +short
in1.ns.ua. domain-master.cctld.ua. 2025061434 1818 909 3024000 2020
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Shows &lt;a href=&#34;https://bgp.tools/dns/in1.ns.ua&#34;&gt;in1.ns.ua&lt;/a&gt; as primary nameserver (which can be intentionally deceptive too).&lt;/p&gt;
&lt;p&gt;I used &lt;a href=&#34;https://bgp.tools&#34;&gt;bgp.tools&lt;/a&gt; for checking anycast and &lt;a href=&#34;https://dns.coffee&#34;&gt;dns.coffee&lt;/a&gt; for the &lt;a href=&#34;https://dns.coffee/zones/ua&#34;&gt;timeline of when the secondary nameserver was added&lt;/a&gt;. dns.coffee only has data going back till 2011, though.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s deep dive into who&amp;rsquo;s hosting each of the name servers:&lt;/p&gt;
&lt;h4 id=&#34;in1nsua-by-intuix-llchttpswwwintuixcomwikiintuixabout&#34;&gt;in1.ns.ua by &lt;a href=&#34;https://www.intuix.com/wiki/IntuixAbout&#34;&gt;Intuix LLC&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;74.123.224.40&lt;/li&gt;
&lt;li&gt;2604:ee00:0:101:0:0:0:40&lt;/li&gt;
&lt;li&gt;unicast&lt;/li&gt;
&lt;li&gt;Serving .UA since 13/12/2018.&lt;/li&gt;
&lt;li&gt;Company by Dmitry Kohmanyuk and Igor Sviridov, who are administrative and technical contacts for the .UA zone as well as the &lt;a href=&#34;https://www.iana.org/domains/root/db/ua.html&#34;&gt;IANA DB&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;ho1nsua-by-hostmaster-llc&#34;&gt;ho1.ns.ua by Hostmaster LLC&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;195.47.253.1&lt;/li&gt;
&lt;li&gt;2001:67c:258:0:0:0:0:1&lt;/li&gt;
&lt;li&gt;bgp.tools doesn&amp;rsquo;t mark the prefix as anycast, but based on tests from various locations, this is indeed anycasted (visible in atleast DE, US, UA etc.). Total POPs unknown.&lt;/li&gt;
&lt;li&gt;Serving .UA atleast since 2011.&lt;/li&gt;
&lt;li&gt;The registry themselves.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;bgnsua-by-cloudns&#34;&gt;bg.ns.ua by ClouDNS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;185.136.96.185 and 185.136.97.185&lt;/li&gt;
&lt;li&gt;2a06:fb00:1:0:0:0:4:185 and 2a06:fb00:1:0:0:0:2:185&lt;/li&gt;
&lt;li&gt;anycast&lt;/li&gt;
&lt;li&gt;Serving .UA since 01/03/2022.&lt;/li&gt;
&lt;li&gt;atleast &lt;a href=&#34;https://www.cloudns.net/dns-for-tlds/&#34;&gt;62 PoPs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;cznsua-by-niccz&#34;&gt;cz.ns.ua by NIC.cz&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;185.43.134.15&lt;/li&gt;
&lt;li&gt;2001:148f:fffd:0:0:0:0:15&lt;/li&gt;
&lt;li&gt;anycast&lt;/li&gt;
&lt;li&gt;atleast &lt;a href=&#34;https://www.domainkit.tech/en/products/dns-anycast/&#34;&gt;11 PoPs&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Serving .UA since 29/03/2024. &lt;a href=&#34;https://www.hostmaster.ua/news/?id=pr20240528&#34;&gt;NIC.cz adding secondary server&lt;/a&gt; blog.&lt;/li&gt;
&lt;li&gt;.CZ operator.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;nnnsua-by-netnod&#34;&gt;nn.ns.ua by Netnod&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;194.58.197.4&lt;/li&gt;
&lt;li&gt;2a01:3f1:c001:0:0:0:0:53&lt;/li&gt;
&lt;li&gt;anycast&lt;/li&gt;
&lt;li&gt;atleast &lt;a href=&#34;https://www.netnod.se/dns&#34;&gt;80 PoPs&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Serving .UA since 01/12/2022.&lt;/li&gt;
&lt;li&gt;Netnod has the distinction of being one of the 13 root server operators (i.root-servers.net) and .SE operator.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;pchnsua-by-pch&#34;&gt;pch.ns.ua by PCH&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;204.61.216.12&lt;/li&gt;
&lt;li&gt;2001:500:14:6012:ad:0:0:1&lt;/li&gt;
&lt;li&gt;anycast&lt;/li&gt;
&lt;li&gt;atleast &lt;a href=&#34;https://www.pch.net/services/anycast&#34;&gt;328 POPs&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Serving .UA atleast since 2011.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;With more than 36 years of production anycast DNS experience, two of the root name server operators and more than 172 top-level domain registries using our infrastructure, and more than 120 million resource records in service&amp;rdquo; from &lt;a href=&#34;https://www.pch.net/services/anycast&#34;&gt;https://www.pch.net/services/anycast&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;rcznsua-by-rcodezero&#34;&gt;rcz.ns.ua by RcodeZero&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;193.46.128.10&lt;/li&gt;
&lt;li&gt;2a02:850:ffe0:0:0:0:0:10&lt;/li&gt;
&lt;li&gt;anycast&lt;/li&gt;
&lt;li&gt;Atleast &lt;a href=&#34;https://www.rcodezero.at/en/products/isp&#34;&gt;56 PoPs&lt;/a&gt; via 2 different cloud providers.&lt;/li&gt;
&lt;li&gt;Serving .UA since 04/02/2022.&lt;/li&gt;
&lt;li&gt;Sister company of nic.at (.AT operator).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;some-points-to-note&#34;&gt;Some points to note&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;That&amp;rsquo;s 1 unicast and 6 anycast name servers with hundreds of POPs from 7 different organizations.&lt;/li&gt;
&lt;li&gt;Having X number of Point of Presence (POP) doesn&amp;rsquo;t always mean each location is serving the .UA nameserver prefix.&lt;/li&gt;
&lt;li&gt;The number of POPs keeps going up or down based on operational requirements and optimizations.&lt;/li&gt;
&lt;li&gt;The highest concentration of DNS queries for a ccTLD would essentially originate in the country (or larger region) itself. If one of the secondaries doesn&amp;rsquo;t have POP inside UA, the query might very well be served from outside the country, which can affect resolution and may even stop during outages and fiber cuts (which have become common there, it seems). - Global POPs do help in faster resolutions for others/outside users, though, and ofcourse availability.&lt;/li&gt;
&lt;li&gt;Having this much diversity does lessen the chance of the ccTLD going down. Theoretically, the adversary has to bring down 7 different &amp;ldquo;networks/setups&amp;rdquo; before resolution starts failing (post TTLs expiry).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;read-more-links&#34;&gt;Read more links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.iana.org/domains/root/db/ua.html&#34;&gt;Delegation record for .UA at IANA&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=MJWfqYV93wo&#34;&gt;Panel discussion: &amp;ldquo;Running a top level domain in times of war&amp;rdquo;&lt;/a&gt; at CyberChess 2023 with .UA operators post the invasion.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.hostmaster.ua/about/&#34;&gt;History of .UA domain&lt;/a&gt; on Hostmaster LLC&amp;rsquo;s website.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.enog.org/presentations/enog-1/56-ua-cctld-overview-ENOG.pdf&#34;&gt;.UA ccTLD overview&lt;/a&gt; talk presentation at ENOG 2011.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://atlas.ripe.net/dnsmon/group/ua.&#34;&gt;RIPE NCC&amp;rsquo;s DNS Monitoring Service (DNSMON) page for .UA&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Prosody Certificate Management With Nginx and Certbot</title>
      <link>https://blog.sahilister.in/2025/01/prosody-certificate-management-with-nginx-and-certbot/</link>
      <pubDate>Sun, 12 Jan 2025 10:20:21 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2025/01/prosody-certificate-management-with-nginx-and-certbot/</guid>
      <description>&lt;p&gt;I have a self-hosted XMPP chat server through Prosody. Earlier, I struggled with certificate renewal and generation for Prosody because I have Nginx (for bunch of services) running on the same server which binds to Port 80. Due to this, Certbot wasn&amp;rsquo;t able to auto-renew (through HTTP validation) for domains managed by Prosody.&lt;/p&gt;
&lt;p&gt;Now, I have cobbled together a solution to keep both Nginx and Prosody happy. This is how I did it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Expose &lt;code&gt;/.well-known/acme-challenge&lt;/code&gt; through Nginx for the Prosody domain. Nginx config looked like this:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;server {
      listen 80;
      listen [::]:80;
      server_name PROSODY.DOMAIN;
      root &amp;lt;ANY_NGINX_WRITABLE_LOCATION&amp;gt;;

      location ~ /.well-known/acme-challenge {
         allow all;
      }
}
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;Run &lt;code&gt;certbot&lt;/code&gt; to get certificates for &amp;lt;PROSODY.DOMAIN&amp;gt;.&lt;/li&gt;
&lt;li&gt;To use those in Prosody, add a cron entry for &lt;code&gt;root&lt;/code&gt; user:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;0 0 * * * prosodyctl --root cert import /etc/letsencrypt/live/PROSODY.DOMAIN
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Explanation from &lt;a href=&#34;https://prosody.im/doc/certificates#automatic_certificate_import&#34;&gt;Prosody docs&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Certificates and their keys are copied to /etc/prosody/certs (can be changed with the certificates option) and then it signals Prosody to reload itself. &amp;ndash;root lets prosodyctl write to paths that may not be writable by the prosody user, as is common with /etc/prosody.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Certbot now manages auto-renewal as well, and we&amp;rsquo;re all set.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Debian Mirrors Hierarchy</title>
      <link>https://blog.sahilister.in/2024/12/debian-mirrors-hierarchy/</link>
      <pubDate>Mon, 23 Dec 2024 21:02:13 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2024/12/debian-mirrors-hierarchy/</guid>
      <description>&lt;p&gt;After finding AlmaLinux mirror sync capacity at Tier 0 (or Tier 1, however you look at it) is around 140 Gbps, I wanted to find source and hierarchy in Debian mirroring systems.&lt;/p&gt;
&lt;p&gt;There are two main types of mirrors in Debian - Debian package mirrors (for package installs and updates) also known as package archive and Debian CD mirrors (for ISO and other media). Let&amp;rsquo;s talk about package mirrors and their hierarchy first.&lt;/p&gt;
&lt;h3 id=&#34;package-mirrors-hierarchy&#34;&gt;Package Mirrors Hierarchy&lt;/h3&gt;
&lt;p&gt;The trace file was a good starting point for checking upstream for a package mirror in Debian. It resides at &lt;code&gt;&amp;lt;URL&amp;gt;/debian/project/trace/_traces&lt;/code&gt; and shows the flow of data. &lt;a href=&#34;https://repo.jing.rocks/debian/project/trace/_traces&#34;&gt;Sample trace file&lt;/a&gt; from &lt;a href=&#34;https://repo.jing.rocks/&#34;&gt;jing.rocks&amp;rsquo;s mirror&lt;/a&gt;.  It showed, canonical source for packages is ftp-master.debian.org. Checking via &lt;a href=&#34;https://db.debian.org/machines.cgi&#34;&gt;https://db.debian.org/machines.cgi&lt;/a&gt;, showed it&amp;rsquo;s &lt;a href=&#34;https://db.debian.org/machines.cgi?host=fasolo&#34;&gt;fasolo.d.o&lt;/a&gt; hosted at Brown University, US. This serves as the &amp;ldquo;Master Archive Server&amp;rdquo;, making it the Tier 0 mirror. It&amp;rsquo;s entry mentions that it has 1 Gbps shared LAN connectivity (dated information?) but it only has to push to 3 other machines/sites.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Side note - .d.o is .debian.org&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;As shown on &lt;a href=&#34;https://mirror-master.debian.org/status/mirror-hierarchy.html&#34;&gt;https://mirror-master.debian.org/status/mirror-hierarchy.html&lt;/a&gt;, the three sites are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;syncproxy2.eu.debian.org&lt;/em&gt; ie &lt;a href=&#34;https://db.debian.org/machines.cgi?host=smit&#34;&gt;smit.d.o&lt;/a&gt; hosted by University of Twente, Netherlands with 2x10 Gbps connectivity.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;syncproxy4.eu.debian.org&lt;/em&gt; ie &lt;a href=&#34;https://db.debian.org/machines.cgi?host=schmelzer&#34;&gt;schmelzer.d.o&lt;/a&gt; hosted by Conova in Austria with 2x10 Gbps connectivity.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;syncproxy2.wna.debian.org&lt;/em&gt; - &lt;a href=&#34;https://db.debian.org/machines.cgi&#34;&gt;https://db.debian.org/machines.cgi&lt;/a&gt; entry mentions it being hosted at UBC &lt;a href=&#34;https://db.debian.org/machines.cgi?host=gretchaninov&#34;&gt;here&lt;/a&gt;, but IP seems to be pointing to OSUOSL IP range as of now. IIRC few months ago, syncproxy2.wna.d.o was made to point to another host due to some issue (?).  &lt;a href=&#34;https://db.debian.org/machines.cgi?host=mirror-osuosl&#34;&gt;mirror-osuosl.d.o&lt;/a&gt; seems to be serving as &lt;em&gt;syncproxy2.wna.d.o&lt;/em&gt; now. Bandwidth isn&amp;rsquo;t explicitly mentioned but from my experience seeing bandwidths which other free software projects hosted at OSUOSL have, it would be atleast 10 Gbps and maybe more for Debian.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;
                     syncproxy2.eu.d.o (NL) ---&amp;gt; to the world
                    /
ftp-master.d.o (US) -- syncproxy4.eu.d.o (AT)  --&amp;gt; to the world 
                    \
                     syncproxy2.wna.d.o (US) --&amp;gt; to the world
&lt;/code&gt;&lt;/pre&gt;&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;
        A visualation of flow of package from ftp-master.d.o 
    &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;These form the Debian Tier 1 mirror network, as all other mirrors sync from them. So we can say Debian has atleast 50 Gbps+ capacity at Tier 1. A normal Debian user might never directly interact with any of these 3 machines, but every Debian package they run/download/install flows through these machines. I&amp;rsquo;m unsure what wna stands for in &lt;em&gt;syncproxy2.wna.d.o&lt;/em&gt;. NA probably is North America and W is west (coast)? If you know, do let me know.&lt;/p&gt;
&lt;p&gt;After Tier 1, there are a few more sync proxies (detailed below). There are atleast 45 mirrors at Tier 2, updates for which are directly pushed from the three Tier 1 sync proxies. Most &lt;a href=&#34;https://www.debian.org/mirror/list#per-country&#34;&gt;country mirrors&lt;/a&gt; i.e. ftp.&lt;code&gt;&amp;lt;CC&amp;gt;&lt;/code&gt;.debian.org are at Tier 2 too (barring a few like &lt;em&gt;ftp.au.d.o&lt;/em&gt;, &lt;em&gt;ftp.nz.d.o&lt;/em&gt; etc).&lt;/p&gt;
&lt;p&gt;Coming back to Sync proxies at Tier 2:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;syncproxy3.wna.debian.org&lt;/em&gt; -  &lt;a href=&#34;https://db.debian.org/machines.cgi?host=gretchaninov&#34;&gt;gretchaninov.d.o&lt;/a&gt; which is marked as syncproxy2 on db.d.o (information dated). It&amp;rsquo;s hosted at University of British Columbia, Canada, where a lot of Debian infrastructure including Salsa is hosted.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;syncproxy.eu.debian.org&lt;/em&gt; - Croatian Academic and Research Network managed machine. CNAME directs to &lt;a href=&#34;http://debian.carnet.hr/&#34;&gt;debian.carnet.hr&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;syncproxy.au.debian.org&lt;/em&gt; - &lt;a href=&#34;https://db.debian.org/machines.cgi?host=mirror-anu&#34;&gt;mirror-anu.d.o&lt;/a&gt; hosted by Australian National University with 100 Mbps connectivity. Closest sync proxy for all Australian mirrors.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;syncproxy4.wna.debian.org&lt;/em&gt; - &lt;a href=&#34;https://db.debian.org/machines.cgi?host=syncproxy-aws-wna-01&#34;&gt;syncproxy-aws-wna-01.d.o&lt;/a&gt; hosted in AWS, in US (according to GeoIP). IPv6 only (CNAME to syncproxy-aws-wna-01.debian.org. which only has an AAAA record, no A record). A m6g.2xlarge instance which has &lt;a href=&#34;https://aws.amazon.com/ec2/instance-types/m6g/&#34;&gt;speeds upto 10 Gbps&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Coming back to &lt;a href=&#34;https://mirror-master.debian.org/status/mirror-hierarchy.html&#34;&gt;https://mirror-master.debian.org/status/mirror-hierarchy.html&lt;/a&gt;, one can see chain extend till Tier 6 like in case of &lt;a href=&#34;http://mirror.amaze.com.au/debian/project/trace/_traces&#34;&gt;this mirror in AU&lt;/a&gt; which should add some latency for the updates from being pushed at ftp-master.d.o to them. Ideally, which shouldn&amp;rsquo;t be a problem as &lt;a href=&#34;https://www.debian.org/mirror/ftpmirror#when&#34;&gt;https://www.debian.org/mirror/ftpmirror#when&lt;/a&gt;,  mentions &amp;ldquo;The main archive gets updated four times a day&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;In my case, I get my updates from &lt;a href=&#34;https://mirror.nitc.ac.in/debian/&#34;&gt;NITC mirror&lt;/a&gt;, so my &lt;a href=&#34;https://mirror.nitc.ac.in/debian/project/trace/_traces&#34;&gt;updates flow&lt;/a&gt; from US &amp;gt; US &amp;gt; TW &amp;gt; IN &amp;gt; me in IN.&lt;/p&gt;
&lt;p&gt;CDNs have to internally manage cache purging too unlike normal mirrors which directly serve static file.
Both deb.debian.org (sponsored by Fastly) and cdn-aws.deb.debian.org (sponsored by Amazon CloudFront) sync from following CDN backends:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://db.debian.org/machines.cgi?host=mirror-accumu&#34;&gt;mirror.accumu.d.o&lt;/a&gt; hosted by Academic Computer Club in Umeå, Sweden.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://db.debian.org/machines.cgi?host=mirror-skroutz&#34;&gt;mirror-skroutz.d.o&lt;/a&gt; hosted by Skroutz Internet Services in Greece.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://db.debian.org/machines.cgi?host=schmelzer&#34;&gt;schmelzer.d.o&lt;/a&gt; hosted by Conovo in Austria.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See deb.d.o &lt;a href=&#34;https://deb.debian.org/debian/project/trace/_traces&#34;&gt;trace file&lt;/a&gt; and cdn-aws.deb.d.o &lt;a href=&#34;https://cdn-aws.deb.debian.org/debian/project/trace/_traces&#34;&gt;trace file&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(Thanks to Philipp Kern for the &lt;a href=&#34;https://social.kern.pm/@phil/113703093367794163&#34;&gt;heads up here&lt;/a&gt;. The Mastodon thread has bunch of other interesting details.)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Update - &lt;a href=&#34;https://salsa.debian.org/dsa-team/mirror/cdn-fastly/-/blob/master/services/archive.yaml?ref_type=heads&#34;&gt;https://salsa.debian.org/dsa-team/mirror/cdn-fastly/-/blob/master/services/archive.yaml?ref_type=heads&lt;/a&gt; shows Fastly CDN backends.&lt;/p&gt;
&lt;h3 id=&#34;cd-image-mirrors-hierarchy&#34;&gt;CD Image Mirrors Hierarchy&lt;/h3&gt;
&lt;p&gt;Till now, I have only talked about Debian package mirrors. When you see &lt;code&gt;/debian&lt;/code&gt; directory on various mirrors, they&amp;rsquo;re usually for package installation and updates. If you want to grab the latest (and greatest) Debian ISO, you go to Debian CD (as they&amp;rsquo;re still called) mirror site.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://db.debian.org/machines.cgi?host=casulana&#34;&gt;casulana.d.o&lt;/a&gt; is mentioned as CD builder site hosted by Bytemark while &lt;a href=&#34;https://db.debian.org/machines.cgi?host=pettersson-ng&#34;&gt;pettersson-ng.d.o&lt;/a&gt; is mentioned as CD publishing server hosted at Academic Computer Club in Umeå, Sweden. The primary download site for Debian CD when you click download on debian.org homepage is &lt;a href=&#34;https://cdimage.debian.org/debian-cd/&#34;&gt;https://cdimage.debian.org/debian-cd/&lt;/a&gt; is hosted here as well. This essentially becomes Tier 0 mirror for Debian CD. All &lt;a href=&#34;https://www.debian.org/CD/http-ftp/#mirrors&#34;&gt;Debian CD mirrors&lt;/a&gt; are downstream to it.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;pettersson-ng.d.o / cdimage.d.o (SE) ---&amp;gt; to the world
&lt;/code&gt;&lt;/pre&gt;&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;
        A visualation of flow of Debian CD from cdimage.d.o 
    &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;Academic Computer Club&amp;rsquo;s mirror setup uses a combination of multiple machines (called frontends and offloading servers) to load balance requests. Their document setup is a highly &lt;a href=&#34;https://mirror.accum.se/about/index.html&#34;&gt;recommended read&lt;/a&gt;. Also, in that document, they mention , &amp;ldquo;All machines are reachable via both IPv4 and IPv6 and connected with 10 or 25 gigabit Ethernet, external bandwidth available is 200 gigabit/s.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;For completeness sake, following mirror (or mirror systems) exists too for Debian:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ports.debian.org/mirrors&#34;&gt;Debian Ports mirrors&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.debian.org/distrib/archive&#34;&gt;Debian Archive mirrors&lt;/a&gt; to get old Debian versions.&lt;/li&gt;
&lt;li&gt;Debian Security has a bunch of official mirrors (as mentioned &lt;a href=&#34;https://www.debian.org/security/faq#mirror&#34;&gt;here&lt;/a&gt;) behind security.d.o. It resolves to Fastly IP ranges, so it could be Fastly or Debian operated mirrors. Taking a look at &lt;a href=&#34;https://db.debian.org/machines.cgi&#34;&gt;https://db.debian.org/machines.cgi&lt;/a&gt; tells &lt;a href=&#34;https://db.debian.org/machines.cgi?host=seger&#34;&gt;seger.d.o&lt;/a&gt; in DE is security-master which I&amp;rsquo;m assuming is source for all the following mentioned security mirrors:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://db.debian.org/machines.cgi?host=lobos&#34;&gt;lobos.d.o&lt;/a&gt; in DE&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://db.debian.org/machines.cgi?host=villa&#34;&gt;villa.d.o&lt;/a&gt; in DE&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://db.debian.org/machines.cgi?host=wieck&#34;&gt;wieck.d.o&lt;/a&gt; in DE&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://db.debian.org/machines.cgi?host=schumann&#34;&gt;schumann.d.o&lt;/a&gt; in DE&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Update - &lt;a href=&#34;https://salsa.debian.org/dsa-team/mirror/cdn-fastly/-/blob/master/services/security.yaml?ref_type=heads#L14&#34;&gt;https://salsa.debian.org/dsa-team/mirror/cdn-fastly/-/blob/master/services/security.yaml?ref_type=heads#L14&lt;/a&gt; shows list of Fastly CDN backends.&lt;/p&gt;
&lt;p&gt;Debian heavily relies on various organizations to donate resources (hosting and hardware) to distribute and update Debian. Compiling above information made me thankful to all these organizations. Many thanks to DSA and mirror team for managing these.&lt;/p&gt;
&lt;p&gt;I relied heavily on &lt;a href=&#34;https://db.debian.org/machines.cgi&#34;&gt;https://db.debian.org/machines.cgi&lt;/a&gt; which seems to be manually updated, so things might have changed along the way. If anything looks amiss, feel free to ping.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Free Software Mirrors in India</title>
      <link>https://blog.sahilister.in/2024/10/free-software-mirrors-in-india/</link>
      <pubDate>Mon, 21 Oct 2024 23:59:00 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2024/10/free-software-mirrors-in-india/</guid>
      <description>&lt;p&gt;&lt;em&gt;Last Updated on 16/05/2026.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;List of public mirrors in India. Location discovered basis personal knowledge, traces or GeoIP. Mirrors which aren&amp;rsquo;t accessible outside their own ASN are excluded.&lt;/p&gt;
&lt;h1 id=&#34;north-india&#34;&gt;North India&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Bharat Datacenter - &lt;a href=&#34;https://mirror.bharatdatacenter.com&#34;&gt;mirror.bharatdatacenter.com&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/151704&#34;&gt;AS151704&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Esto Internet - &lt;a href=&#34;https://mirrors.esto.network/&#34;&gt;mirrors.esto.network&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/135817&#34;&gt;AS135817&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Extreme IX - &lt;a href=&#34;https://repo.extreme-ix.org&#34;&gt;repo.extreme-ix.org&lt;/a&gt; | &lt;a href=&#34;https://repos.del.extreme-ix.org&#34;&gt;repos.del.extreme-ix.org&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/135814&#34;&gt;AS135814&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Hopbox - &lt;a href=&#34;https://mirrors.hopbox.net&#34;&gt;mirrors.hopbox.net&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/10029&#34;&gt;AS10029&lt;/a&gt; | &lt;a href=&#34;https://mirrors.hopbox.net/goaccess.html&#34;&gt;Statistics&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Nxtgen - &lt;a href=&#34;https://mirrors.nxtgen.com&#34;&gt;mirrors.nxtgen.com&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/132717&#34;&gt;AS132717&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Saswata Sarkar - &lt;a href=&#34;https://mirrors.saswata.cc&#34;&gt;mirrors.saswata.cc&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/132453&#34;&gt;AS132453&lt;/a&gt; | &lt;a href=&#34;https://mirrors.saswata.cc/stats/&#34;&gt;Statistics&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Shrirang Kahale - &lt;a href=&#34;https://mirror.del.albony.in&#34;&gt;mirror.del.albony.in&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/135814&#34;&gt;AS135814&lt;/a&gt; | &lt;a href=&#34;https://mirror.del.albony.in/stats&#34;&gt;Statistics&lt;/a&gt;), &lt;a href=&#34;https://mirror.del2.albony.in&#34;&gt;mirror.del2.albony.in&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/135772&#34;&gt;AS135772&lt;/a&gt; | &lt;a href=&#34;https://mirror.del2.albony.in/stats&#34;&gt;Statistics&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;east-india&#34;&gt;East India&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;NISER Bhubaneshwar - &lt;a href=&#34;https://mirror.niser.ac.in&#34;&gt;mirror.niser.ac.in&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/141288&#34;&gt;AS141288&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Shrirang Kahale - &lt;a href=&#34;https://mirror.ajl.albony.in&#34;&gt;mirror.ajl.albony.in&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/141253&#34;&gt;AS141253&lt;/a&gt; | &lt;a href=&#34;https://mirror.ajl.albony.in/stats&#34;&gt;Statistics&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;south-india&#34;&gt;South India&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Adityan N A - &lt;a href=&#34;https://mirror.dawn.org.in/&#34;&gt;mirror.dawn.org.in&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/9829&#34;&gt;AS9829&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;CUSAT - &lt;a href=&#34;https://foss.cusat.ac.in/mirror&#34;&gt;foss.cusat.ac.in/mirror&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/55824&#34;&gt;AS55824&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Excell Media - &lt;a href=&#34;https://centos-stream.excellmedia.net&#34;&gt;centos-stream.excellmedia.net&lt;/a&gt; |  &lt;a href=&#34;https://excellmedia.dl.sourceforge.net&#34;&gt;excellmedia.dl.sourceforge.net&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/17754&#34;&gt;AS17754&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;IIT Madras - &lt;a href=&#34;https://ftp.iitm.ac.in&#34;&gt;ftp.iitm.ac.in&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/141340&#34;&gt;AS141340&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Niranjan Fartare - &lt;a href=&#34;https://in.arch.niranjan.co/&#34;&gt;in.arch.niranjan.co&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/140543&#34;&gt;AS141340&lt;/a&gt; | &lt;a href=&#34;https://in.arch.niranjan.co/stats&#34;&gt;Statistics&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;NIT Calicut - &lt;a href=&#34;https://mirror.nitc.ac.in&#34;&gt;mirror.nitc.ac.in&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/55824&#34;&gt;AS55824&lt;/a&gt; | &lt;a href=&#34;https://mirror.nitc.ac.in/statistics.html&#34;&gt;Statistics&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;NKN - &lt;a href=&#34;https://mirrors-1.nkn.in&#34;&gt;mirrors-1.nkn.in&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/148003&#34;&gt;AS148003&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Planet Unix - &lt;a href=&#34;https://mirror.planetunix.net&#34;&gt;mirror.planetunix.net&lt;/a&gt; | &lt;a href=&#34;https://ariel.in.ext.planetunix.net&#34;&gt;ariel.in.ext.planetunix.net&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/14061&#34;&gt;AS14061&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Shrirang Kahale - &lt;a href=&#34;https://mirror.hyd.albony.in&#34;&gt;mirror.hyd.albony.in&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/24560&#34;&gt;AS24560&lt;/a&gt; | &lt;a href=&#34;https://mirror.hyd.albony.in/stats&#34;&gt;Statistics&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;west-india&#34;&gt;West India&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Abhinav Krishna C K - &lt;a href=&#34;https://mirrors.abhy.me&#34;&gt;mirrors.abhy.me&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/31898&#34;&gt;AS31898&lt;/a&gt; | &lt;a href=&#34;https://mirrors.abhy.me/stats/&#34;&gt;Statistics&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Amogh Lele - &lt;a href=&#34;https://mirror.bom.kat.cx/&#34;&gt;mirror.bom.kat.cx&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/141995&#34;&gt;AS141995&lt;/a&gt; | &lt;a href=&#34;https://mirror.bom.kat.cx/stats.html&#34;&gt;Statistics&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;ICTS - &lt;a href=&#34;https://cran.icts.res.in&#34;&gt;cran.icts.res.in&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/134322&#34;&gt;AS134322&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Joy Services - &lt;a href=&#34;https://ubuntu.joy.services/&#34;&gt;ubuntu.joy.services&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/152565&#34;&gt;AS152565&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Kushwanth Reddy - &lt;a href=&#34;https://archlinux.kushwanthreddy.com/&#34;&gt;archlinux.kushwanthreddy.com&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/31898&#34;&gt;AS31898&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Niranjan Fartare - &lt;a href=&#34;https://hirensboot.niranjan.co/&#34;&gt;hirensboot.niranjan.co&lt;/a&gt; | &lt;a href=&#34;https://openssh.niranjan.co/&#34;&gt;openssh.niranjan.co&lt;/a&gt; | &lt;a href=&#34;https://lfs.niranjan.co/&#34;&gt;lfs.niranjan.co&lt;/a&gt; | &lt;a href=&#34;https://termux.niranjan.co&#34;&gt;termux.niranjan.co&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/31898&#34;&gt;AS31898&lt;/a&gt; )&lt;/li&gt;
&lt;li&gt;PicoNets-WebWerks - &lt;a href=&#34;https://mirrors.piconets.webwerks.in&#34;&gt;mirrors.piconets.webwerks.in&lt;/a&gt; | &lt;a href=&#34;https://webwerks.dl.sourceforge.net/&#34;&gt;webwerks.dl.sourceforge.net&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/133296&#34;&gt;AS133296&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Ravi Dwivedi - &lt;a href=&#34;https://mirrors.ravidwivedi.in&#34;&gt;mirrors.ravidwivedi.in&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/141995&#34;&gt;AS141995&lt;/a&gt; | &lt;a href=&#34;https://mirrors.ravidwivedi.in/goaccess.html&#34;&gt;Statistics&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Sahil Dhiman - &lt;a href=&#34;https://mirrors.in.sahilister.net&#34;&gt;mirrors.in.sahilister.net&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/141995&#34;&gt;AS141995&lt;/a&gt; | &lt;a href=&#34;https://mirrors.in.sahilister.net/stats&#34;&gt;Statistics&lt;/a&gt;), &lt;a href=&#34;https://mirrors.in2.sahilister.net&#34;&gt;mirrors.in2.sahilister.net&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/141995&#34;&gt;AS141995&lt;/a&gt; | &lt;a href=&#34;https://mirrors.in2.sahilister.net/stats&#34;&gt;Statistics&lt;/a&gt;), &lt;a href=&#34;https://mirrors.in3.sahilister.net&#34;&gt;mirrors.in3.sahilister.net&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/31898&#34;&gt;AS31898&lt;/a&gt; | &lt;a href=&#34;https://mirrors.in3.sahilister.net/goaccess.html&#34;&gt;Statistics&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Shrirang Kahale - &lt;a href=&#34;https://mirror.bom.albony.in&#34;&gt;mirror.bom.albony.in&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/24560&#34;&gt;AS24560&lt;/a&gt; | &lt;a href=&#34;https://mirror.bom.albony.in/stats&#34;&gt;Statistics&lt;/a&gt;),  &lt;a href=&#34;https://mirror.bom2.albony.in&#34;&gt;mirror.bom2.albony.in&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/135814&#34;&gt;AS135814&lt;/a&gt; | &lt;a href=&#34;https://mirror.bom2.albony.in/stats&#34;&gt;Statistics&lt;/a&gt;), &lt;a href=&#34;https://mirror.nag.albony.in&#34;&gt;mirror.nag.albony.in&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/24560&#34;&gt;AS24560&lt;/a&gt; | &lt;a href=&#34;https://mirror.nag.albony.in/stats&#34;&gt;Statistics&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Starburst Services - &lt;a href=&#34;https://elrepo.in.ssimn.org&#34;&gt;elrepo.in.ssimn.org&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/141995&#34;&gt;AS141995&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Utkarsh Gupta - &lt;a href=&#34;https://mirrors.utkarsh2102.org&#34;&gt;mirrors.utkarsh2102.org&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/31898&#34;&gt;AS31898&lt;/a&gt; | &lt;a href=&#34;https://mirrors.utkarsh2102.org/goaccess.html&#34;&gt;Statistics&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;cdn-or-behind-one-hyperscaler&#34;&gt;CDN (or behind one) /hyperscaler&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;AlmaLinux OS Foundation - &lt;a href=&#34;https://blr.aws.repo.almalinux.org/&#34;&gt;blr.aws.repo.almalinux.org&lt;/a&gt; | &lt;a href=&#34;https://mum.aws.repo.almalinux.org&#34;&gt;mum.aws.repo.almalinux.org&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/16509&#34;&gt;AS16509&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Amazon Cloudfront - &lt;a href=&#34;https://cdn-aws.deb.debian.org&#34;&gt;cdn-aws.deb.debian.org&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/16509&#34;&gt;AS16509&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Chirag Sukhala - &lt;a href=&#34;https://mirrors.sukhala.in/&#34;&gt;mirrors.sukhala.in&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/13335&#34;&gt;AS13335&lt;/a&gt; | &lt;a href=&#34;https://mirrors.sukhala.in/report.html&#34;&gt;Statistics&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Cicku - &lt;a href=&#34;https://in.mirrors.cicku.me&#34;&gt;in.mirrors.cicku.me&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/13335&#34;&gt;AS13335&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;CIQ - &lt;a href=&#34;https://rocky-linux-asia-south1.production.gcp.mirrors.ctrliq.cloud&#34;&gt;rocky-linux-asia-south1.production.gcp.mirrors.ctrliq.cloud&lt;/a&gt; | &lt;a href=&#34;https://rocky-linux-asia-south2.production.gcp.mirrors.ctrliq.cloud&#34;&gt;rocky-linux-asia-south2.production.gcp.mirrors.ctrliq.cloud&lt;/a&gt; &lt;em&gt;(GeoIP doubtful. Could be behind a CDN or single node)&lt;/em&gt; (&lt;a href=&#34;https://bgp.tools/as/396982&#34;&gt;AS396982&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Cloudflare - &lt;a href=&#34;https://cloudflare.cdn.openbsd.org/pub/OpenBSD/&#34;&gt;cloudflare.cdn.openbsd.org&lt;/a&gt; | &lt;a href=&#34;https://kali.download&#34;&gt;kali.download&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/13335&#34;&gt;AS13335&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fastly - &lt;a href=&#34;https://cdn.openbsd.org/pub/OpenBSD/&#34;&gt;cdn.openbsd.org&lt;/a&gt; | &lt;a href=&#34;https://deb.debian.org&#34;&gt;deb.debian.org&lt;/a&gt; | &lt;a href=&#34;https://dlcdn.apache.org/&#34;&gt;dlcdn.apache.org&lt;/a&gt; | &lt;a href=&#34;https://dl-cdn.alpinelinux.org&#34;&gt;dl-cdn.alpinelinux.org&lt;/a&gt; | &lt;a href=&#34;https://fastly.linuxmint.io&#34;&gt;fastly.linuxmint.io&lt;/a&gt; | &lt;a href=&#34;https://images-cdn.endlessm.com/&#34;&gt;images-cdn.endlessm.com&lt;/a&gt; &lt;em&gt;(sponsored?)&lt;/em&gt; | &lt;a href=&#34;https://repo-fastly.voidlinux.org/&#34;&gt;repo-fastly.voidlinux.org&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/54113&#34;&gt;AS54113&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Sahil Kokamkar - &lt;a href=&#34;https://mirror.sahil.world&#34;&gt;mirror.sahil.world&lt;/a&gt; (&lt;a href=&#34;https://bgp.tools/as/13335&#34;&gt;AS13335&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Many thanks to &lt;a href=&#34;https://shrirangkahale.com/&#34;&gt;Shrirang&lt;/a&gt; and &lt;a href=&#34;https://c.im/@saswatasarkar13&#34;&gt;Saswata&lt;/a&gt; for tips and corrections. Let me know if I&amp;rsquo;m missing someone or something is amiss.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>25, A Quarter of a Century Later</title>
      <link>https://blog.sahilister.in/2024/10/25-a-quarter-of-a-century-later/</link>
      <pubDate>Wed, 16 Oct 2024 08:37:58 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2024/10/25-a-quarter-of-a-century-later/</guid>
      <description>&lt;p&gt;25 the number says well into adulthood. &lt;a href=&#34;https://weirdlyviral.in/&#34;&gt;Aviral&lt;/a&gt; pointed out that I have already passed 33% mark in my life, which does hit different.&lt;/p&gt;
&lt;p&gt;I had to keep reminding myself about my upcoming birthday. It didn&amp;rsquo;t feel like birthday month, week or the day itself.&lt;/p&gt;
&lt;p&gt;My writings took a long hiatus starting this year. First post came out in May and quite a few people asked about the break. Hiatus had its own reasons, but restarting became harder each passing day. Preparations for DebConf24 helped push DebConf23 (first post this year) out of the door, after which things were more or less back on track on the writing front.&lt;/p&gt;
&lt;p&gt;Recently, I have picked the habit of reading monthly magazines. When I was a child, I used to fancy seeing all the magazines in stationery and bookshops and thought of getting many when I&amp;rsquo;m older. Seems like that was the connection, and now I&amp;rsquo;m heavily into monthly magazines and order many each month (including Hindi ones). They&amp;rsquo;re fun short reads and cover a wide spectrum of topics.&lt;/p&gt;
&lt;p&gt;Traveling has become the new love. I got the opportunity to visit a few new cities like Jaipur, Meerut, Seoul and Busan. My first international travel showed me what a society that cares about the people&amp;rsquo;s overall well-being turns out to be. Going to a foreign land expanded the concept of everything for me. It showed the beauty of silence in public places. Also, I revisited Bengaluru, which felt good with its good weather and food.&lt;/p&gt;
&lt;p&gt;It has almost become a tradition to attend a few yearly events. Jashn-e-Rekhta, DebConf, New Delhi World Book Fair, IndiaFOSS and FoECon. It&amp;rsquo;s always great talking to new and old folks, sharing and learning about ideas. It&amp;rsquo;s hard for an individual to learn, grow and understand the world in a silo. Like I keep on saying about Free Software projects, it&amp;rsquo;s all about the people, it&amp;rsquo;s always about the people. Good and interesting people keep the project going and growing. &lt;em&gt;(Side Note - it&amp;rsquo;s fine if a project goes. Things are not meant to last a perpetuity. Closing and moving on is fine).&lt;/em&gt; Similarly, I have been trying to attend Jaipur Literature Festival for a while but failing. Hopefully, I would this time around.&lt;/p&gt;
&lt;p&gt;Expanding my &lt;a href=&#34;https://www.gnu.org/philosophy/free-sw.en.html&#34;&gt;Free Software&lt;/a&gt; Mirror to India was a big highlight this year. The mirror project now has 3 nodes in India and 1 in Germany, serving almost 3-4 TB of traffic daily. Increasing the number of software mirrors in India was and still is one of my goals. Hit me up if you want to help or setup one yourself. It&amp;rsquo;s not that hard now actually, projects that require more mirrors and hosting setup has already been figured out.&lt;/p&gt;
&lt;p&gt;One realization I would like to mention was to amplify/support people who are already doing a good job, rather than reinventing the wheel in society, activism or other fronts. A single person might not be able to change the world, but a bunch of people experimenting, helping each others and trying to make a difference certainly would.&lt;/p&gt;
&lt;p&gt;Writing 25 felt harder than all previous years. It was a traditional year with much internal growth due to experiencing different perspectives and travelling.&lt;/p&gt;
&lt;p&gt;To infinity and beyond!&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Educational and Research Institutions With Own ASN in India</title>
      <link>https://blog.sahilister.in/2024/09/educational-and-research-institutions-with-own-asn-in-india/</link>
      <pubDate>Fri, 20 Sep 2024 21:59:59 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2024/09/educational-and-research-institutions-with-own-asn-in-india/</guid>
      <description>&lt;p&gt;&lt;em&gt;Last Updated on 11/04/2026.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Another one of the ASN list. This turned out longer than I expected (which is good). If you want to briefly understand what is an ASN, my &lt;a href=&#34;https://blog.sahilister.in/2024/07/personal-asns-from-india/&#34;&gt;Personal ASNs From India&lt;/a&gt; post carries an introduction to it.&lt;/p&gt;
&lt;p&gt;Now, here&amp;rsquo;re the Educational and Research Institutions with their own ASN in India, which I could find:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/2697&#34;&gt;AS2697&lt;/a&gt; Education and Research Network&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/9885&#34;&gt;AS9885&lt;/a&gt; NKN Internet Gateway&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/23770&#34;&gt;AS23770&lt;/a&gt; Tata Institute of Fundamental Research (used as National Centre for Biological Sciences network)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/38021&#34;&gt;AS38021&lt;/a&gt; Indian Institute of Foreign Trade&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/38620&#34;&gt;AS38620&lt;/a&gt; National Knowledge Network&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/38872&#34;&gt;AS38872&lt;/a&gt; Indian School of Business&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/45340&#34;&gt;AS45340&lt;/a&gt; B.M.S College of Engineering&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/55296&#34;&gt;AS55296&lt;/a&gt; National Institute of Public Finance and Policy&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/55479&#34;&gt;AS55479&lt;/a&gt; Indian Institute of Technology, Kanpur&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/55566&#34;&gt;AS55566&lt;/a&gt; Inter University Centre for Astronomy and Astrophysics&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/55824&#34;&gt;AS55824&lt;/a&gt; NKN Core Network&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/55847&#34;&gt;AS55847&lt;/a&gt; NKN Edge Network&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/56056&#34;&gt;AS56056&lt;/a&gt; AMITY-IN&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/56166&#34;&gt;AS56166&lt;/a&gt; Indian Institutes of Science Education and Research, Bhopal&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/58703&#34;&gt;AS58703&lt;/a&gt; Amrita Vishwa Vidyapeetham&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/58758&#34;&gt;AS58758&lt;/a&gt; Tata Institute of Fundamental Research (used as Homi Bhabha Centre for Science Education (HBCSE) network)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/59163&#34;&gt;AS59163&lt;/a&gt; GLA University&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/59193&#34;&gt;AS59193&lt;/a&gt; Indian Institute of Technology, Hyderabad&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/131226&#34;&gt;AS131226&lt;/a&gt; Indian Institute of Technology, Roorkee&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/131473&#34;&gt;AS131473&lt;/a&gt; SRM University&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/132423&#34;&gt;AS132423&lt;/a&gt; Indian Institute of Technology, Bombay&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/132524&#34;&gt;AS132524&lt;/a&gt; Tata Institute of Fundamental Research (used as main campus network)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/132749&#34;&gt;AS132749&lt;/a&gt; Indraprastha Institute of Information Technology, Delhi&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/132780&#34;&gt;AS132780&lt;/a&gt; Indian Institute of Technology, Delhi&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/132984&#34;&gt;AS132984&lt;/a&gt; Uka Tarsadia University&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/132785&#34;&gt;AS132785&lt;/a&gt; Shiv Nadar Institution of Eminence Deemed to be University&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/132995&#34;&gt;AS132995&lt;/a&gt; South Asian University&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/133002&#34;&gt;AS133002&lt;/a&gt; Indian Institute of Tropical Meteorology&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/133233&#34;&gt;AS133233&lt;/a&gt; S.N. Bose National Centre for Basic Sciences&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/133273&#34;&gt;AS133273&lt;/a&gt; Tata Institute of Social Sciences&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/133308&#34;&gt;AS133308&lt;/a&gt; Indira Gandhi Centre For Atomic Research&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/133313&#34;&gt;AS133313&lt;/a&gt; Saha Institute of Nuclear Physics&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/133552&#34;&gt;AS133552&lt;/a&gt; B.M.S. College of Engineering&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/133723&#34;&gt;AS133723&lt;/a&gt; Institute for Plasma Research&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/134003&#34;&gt;AS134003&lt;/a&gt; Centre For Cellular And Molecular Platforms&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/134023&#34;&gt;AS134023&lt;/a&gt; Aligarh Muslim University&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/134322&#34;&gt;AS134322&lt;/a&gt; Tata Institute of Fundamental Research (used as International Centre for Theoretical Sciences (ICTS) network)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/134901&#34;&gt;AS134901&lt;/a&gt; Indian Institute of Science Education And Research&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/134934&#34;&gt;AS134934&lt;/a&gt; Institute For Stem Cell Biology And Regenerative Medicine&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/135730&#34;&gt;AS135730&lt;/a&gt; Datta Meghe Institute Of Medical Sciences&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/135734&#34;&gt;AS135734&lt;/a&gt; Birla Institute of Technology And Science&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/135835&#34;&gt;AS135835&lt;/a&gt; Sardar Vallabhbhai Patel National Police Academy&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/136005&#34;&gt;AS136005&lt;/a&gt; Raman Research Institute&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/136304&#34;&gt;AS136304&lt;/a&gt; Institute of Physics, Bhubaneswar&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/136470&#34;&gt;AS136470&lt;/a&gt; B.M.S. College of Engineering&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/136702&#34;&gt;AS136702&lt;/a&gt; Physical Research Laboratory&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/137136&#34;&gt;AS137136&lt;/a&gt; Indian Agricultural Statistics Research Institute&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/137282&#34;&gt;AS137282&lt;/a&gt; Kalinga Institute of Industrial Technology&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/137617&#34;&gt;AS137617&lt;/a&gt; Indian Institute of Management, Ahmedabad&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/137956&#34;&gt;AS137956&lt;/a&gt; Indian Institute of Technology, Ropar&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/138155&#34;&gt;AS138155&lt;/a&gt; Jawaharlal Nehru University&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/138231&#34;&gt;AS138231&lt;/a&gt; Indian Institute of Information Technology, Allahabad&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/140033&#34;&gt;AS140033&lt;/a&gt; Indian Institute of Technology, Bhilai&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/140118&#34;&gt;AS140118&lt;/a&gt; Indian Institute of Technology Banaras Hindu University&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/140192&#34;&gt;AS140192&lt;/a&gt; Indian Institute of Information Technology and Management, Kerala&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/140200&#34;&gt;AS140200&lt;/a&gt; Panjab University&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/141270&#34;&gt;AS141270&lt;/a&gt; Indian Institute Of Technology, Indore&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/141340&#34;&gt;AS141340&lt;/a&gt; Indian Institute Of Technology, Madras&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/141477&#34;&gt;AS141477&lt;/a&gt; Indira Gandhi National Open University&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/141478&#34;&gt;AS141478&lt;/a&gt; Director National Institute Of Technology, Calicut&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/141288&#34;&gt;AS141288&lt;/a&gt; National Institute of Science Education And Research Bhubaneswar&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/141507&#34;&gt;AS141507&lt;/a&gt; National Institute of Mental Health And Neurosciences&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/142493&#34;&gt;AS142493&lt;/a&gt; Sri Ramachandra Institute Of Higher Education And Research&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/147239&#34;&gt;AS147239&lt;/a&gt; Lal Bahadur Shastri National Academy of Administration (LBSNAA)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/147258&#34;&gt;AS147258&lt;/a&gt; Dayalbagh Educational Institute&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/149607&#34;&gt;AS149607&lt;/a&gt; National Forensic Sciences University&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/151086&#34;&gt;AS151086&lt;/a&gt; Amrita Vishwa Vidyapeetham&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/152533&#34;&gt;AS152533&lt;/a&gt; National Institute of Technology, Karnataka&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/152567&#34;&gt;AS152567&lt;/a&gt; Charotar University of Science and Technology | IPv6 only as of 11/04/2026&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/153227&#34;&gt;AS153227&lt;/a&gt; Vignan&amp;rsquo;s Foundation for Science, Technology and Research&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/153301&#34;&gt;AS153301&lt;/a&gt; Institute for Development and Research in Banking Technology&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/154001&#34;&gt;AS154001&lt;/a&gt; Indian Institute of Legal Metrology&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/154079&#34;&gt;AS154079&lt;/a&gt; Indian Institute of Technology Jodhpur&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/154108&#34;&gt;AS154108&lt;/a&gt; National Institute of Technology, Jamshedpur&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/154174&#34;&gt;AS154174&lt;/a&gt; Amity University Haryana&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Special Mentions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/132926&#34;&gt;AS132926&lt;/a&gt; Allen Career Institute&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/141841&#34;&gt;AS141841&lt;/a&gt; Indian Institute of Hardware Technology Limited&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some observations (stats to be updated):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Only 14 (out of 68+) networks have/announce IPv6 prefixes.&lt;/li&gt;
&lt;li&gt;Four networks have IX presence: &lt;a href=&#34;https://bgp.tools/as/132785&#34;&gt;AS132785&lt;/a&gt; Shiv Nadar at Extreme IX Delhi, &lt;a href=&#34;https://bgp.tools/as/56056&#34;&gt;AS56056&lt;/a&gt; Amity at DE-CIX Delhi, &lt;a href=&#34;https://bgp.tools/as/154174&#34;&gt;AS154174&lt;/a&gt; Amity University Haryana at Extreme IX Delhi and &lt;a href=&#34;https://bgp.tools/as/137282&#34;&gt;AS137282&lt;/a&gt; Kalinga Institute of Industrial Technology at NIXI Chennai.&lt;/li&gt;
&lt;li&gt;TIFR as an organization has 4 ASNs (&lt;a href=&#34;https://bgp.tools/as/23770&#34;&gt;AS23770&lt;/a&gt;, &lt;a href=&#34;https://bgp.tools/as/58758&#34;&gt;AS58758&lt;/a&gt;, &lt;a href=&#34;https://bgp.tools/as/132524&#34;&gt;AS132524&lt;/a&gt; and &lt;a href=&#34;https://bgp.tools/as/134322&#34;&gt;AS134322&lt;/a&gt;), BMS College of Engineering has 3 (&lt;a href=&#34;https://bgp.tools/as/45340&#34;&gt;AS45340&lt;/a&gt;, &lt;a href=&#34;https://bgp.tools/as/133552&#34;&gt;AS133552&lt;/a&gt; &lt;a href=&#34;https://bgp.tools/as/136470&#34;&gt;AS136470&lt;/a&gt;), Amrita Vishwa Vidyapeetham has 2 (&lt;a href=&#34;https://bgp.tools/as/58703&#34;&gt;AS58703&lt;/a&gt; and &lt;a href=&#34;https://bgp.tools/as/151086&#34;&gt;AS151086&lt;/a&gt;) and Amity has two ( &lt;a href=&#34;https://bgp.tools/as/56056&#34;&gt;AS56056&lt;/a&gt; and &lt;a href=&#34;https://bgp.tools/as/154174&#34;&gt;AS154174&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/2697&#34;&gt;AS2697&lt;/a&gt;, &lt;a href=&#34;https://bgp.tools/as/9885&#34;&gt;AS9885&lt;/a&gt;, &lt;a href=&#34;https://bgp.tools/as/38620&#34;&gt;AS38620&lt;/a&gt;, &lt;a href=&#34;https://bgp.tools/as/55824&#34;&gt;AS55824&lt;/a&gt; and &lt;a href=&#34;https://bgp.tools/as/55847&#34;&gt;AS55847&lt;/a&gt; ie Education and Research Network (ERNET) and National Knowledge Network (NKN) form the Indian &lt;a href=&#34;https://en.wikipedia.org/wiki/National_research_and_education_network&#34;&gt;NREN&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;43 network have NKN as their upstream, while BSNL comes second as upstream for 21.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let me know if I&amp;rsquo;m missing someone.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update (11/04/2026): NKN made hundreds of AS allotments to educational institutions, &lt;a href=&#34;https://ftp.ripe.net/ripe/asnames/asn.txt&#34;&gt;AS147316 till AS148966&lt;/a&gt;, &lt;a href=&#34;https://bgp.tools/transfer-history/?org=National%20Knowledge%20Network&#34;&gt;see transfers&lt;/a&gt;, so roughly 825(x2) allotments. None of the ASN are announcing anything or live in global DMZ yet. The reason I got from a source for 2 AS allotments and I quote - &amp;ldquo;it&amp;rsquo;s part of planning to allot /32 IPv6 to every institute and 1 or 2 ASN depends upon need &amp;ldquo;.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Debconf24 Busan</title>
      <link>https://blog.sahilister.in/2024/08/debconf24-busan/</link>
      <pubDate>Fri, 30 Aug 2024 21:53:33 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2024/08/debconf24-busan/</guid>
      <description>&lt;p&gt;DebConf24 was held in Busan, South Korea, from July 28th to August 4th 2024 and preceded by DebCamp from July 21st to July 27th. This was my second IRL DebConf (DC) and fourth one in total. I started in Debian with a DebConf, so its always an occasion when one happens.&lt;/p&gt;
&lt;p&gt;This year again, I worked on the fundraising team, working to raise funds from international sponsors. We did manage to raise enough funding, albeit less than budgeted. Though the local Korean team was able to connect and gather many governmental sponsors, which was quite surprising for me.&lt;/p&gt;
&lt;p&gt;I wasn&amp;rsquo;t seriously considering attending DebConf until I discussed this with Nilesh. More or less, his efforts helped push me through the whole process. Thanks Nilesh, for this. In March, I got my passport and started preparing documents for the South Korean visa. It did require a lot of paperwork, but seeing South Korea&amp;rsquo;s fresh passport visa rejection rate, I had doubts about visa acceptance. The visa finally got approved, which could be attributed to great documentation and help from the DebConf visa team. This was also my first trip outside India, and this being to DebConf made many things easier. Most stuff was documented on the DebConf website and wiki. Queries got immediate responses in the DebConf channels.&lt;/p&gt;
&lt;p&gt;We took a direct flight from Delhi, reaching Seoul in the morning. With good directions from Sourab TK, who had reached Seoul a few hours earlier, we quickly got Korean Won, local SIM, T-money card (transportation card) and headed towards Seoul by AREX i.e. airport metro. We spent the next two days exploring Seoul, which is huge. It probably has the highest number of skyscrapers I have ever seen. The city has a good blend of modern and ancient culture. We explored various places including Gyeongbokgung Palace, Statue of King Sejong, Bukchon Hanok village, N Seoul Tower and various food markets which were amazing.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;A Street in Seoul&#34; src=&#34;https://blog.sahilister.in/img/dc24/dc24-seoul-street.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;A Street in Seoul&lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;Next, we headed to Busan for DebConf using KTX (Korean high speed rail). &lt;em&gt;(Fun fact - slogan for City of Busan is &amp;ldquo;Busan is Good&amp;rdquo;.)&lt;/em&gt; South Korea has a good network of high frequency high speed trains. We had pre-booked tickets because, despite the frequency, trains were sold out most of the time. KTX ride was quite smooth, despite traveling at 300 kmph at times through the Korean countryside and long mountain tunnels.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;View from Dorm Room&#34; src=&#34;https://blog.sahilister.in/img/dc24/dc24-pknu.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;PKNU Entrance&lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;The venue for DebConf was Pukyong National University (PKNU), Daeyeon Campus. PKNU has two campuses in Busan, and some folks ended up in the wrong one too. With good help and guidance from the front desk, we got our dormitory rooms assigned. Dorms here were quite different like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rooms had heated floors. It snows in Busan.&lt;/li&gt;
&lt;li&gt;Each area had card based access (restrictions). There was a separate prepaid card for laundry.&lt;/li&gt;
&lt;li&gt;Each room had announcement systems though we couldn&amp;rsquo;t decipher any announcement as all of them were in Korean.&lt;/li&gt;
&lt;li&gt;Each room was provided with a dedicated access point and its own SSID inside the room.&lt;/li&gt;
&lt;/ul&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;View from Dorm Room&#34; src=&#34;https://blog.sahilister.in/img/dc24/dc24-view-from-dorm.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; Night View from Dorm Room&lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;Settling in was easy. We started meeting familiar folks after almost a year. The long conversations started again. Everyone was excited for DebConf.&lt;/p&gt;
&lt;p&gt;Like every time, the first day was full of action (and chaos). Meet and greet, volunteers check in, video team running around and fixing stuff and things working (and sometimes not). There were some interesting talks and sponsors stalls. After day one, things more or less settled down. I again volunteered for video team stuff and helped with camera operations and talk directions, which is always fun. As the tradition applies, saw few talks live on stream too sitting in the dorm room during the conference, which is always fun, when too tired to get ready and go out.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;From Talk Director&#39;s chair&#34; src=&#34;https://blog.sahilister.in/img/dc24/dc24-directors-view.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;From talk director&#39;s chair&lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;DebConf takes care of food needs for vegan/vegetarian folks well, of which I&amp;rsquo;m one. I got to try different food items, which was quite an experience. I tried using chopsticks again, which didn&amp;rsquo;t work, and I later figured that handling metal ones was difficult. We had late night ramen and wooden chopsticks worked perfectly. One of the days, we even went out to an Indian restaurant to have some desi &lt;em&gt;Aloo Paratha, Paneer, Samosa&lt;/em&gt; and &lt;em&gt;Chai&lt;/em&gt; (milk tea). I wasn&amp;rsquo;t particularly craving &lt;a href=&#34;https://en.wikipedia.org/wiki/Desi&#34;&gt;desi&lt;/a&gt; food but wasn&amp;rsquo;t able to get something according to my taste, so I went there.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;As usual Bits from DPL talk was packed&#34; src=&#34;https://blog.sahilister.in/img/dc24/dc24-attendees-for-bits-from-dpl-talk.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; As usual, Bits from DPL Talk was packed&lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;For day trip, I went to Ulsan. &lt;em&gt;San&lt;/em&gt; means mountains in Korean. Ulsan is a port city with many industries, including the Hyundai car factory, petrochemical industry, paint industry, shipbuilding etc. We saw bamboo forest, Ulsan Tower (quite a view towards Ulsan Port), whale village, Ulsan Onggi Museum and the sea, which was beautiful.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;The beautiful sea&#34; src=&#34;https://blog.sahilister.in/img/dc24/dc24-sea.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;The beautiful sea&lt;/i&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;View from Ulsan Bridge Observatory&#34; src=&#34;https://blog.sahilister.in/img/dc24/dc24-view-from-ulsan-bridge-observatory.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; View from Ulsan Bridge Observatory&lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;Amongst the sponsors, I was most interested in our network sponsors. They&amp;rsquo;re National Research and Education Networks (NREN) here. We had two network sponsors, &lt;a href=&#34;https://koren.kr/en&#34;&gt;KOREN&lt;/a&gt; and &lt;a href=&#34;https://www.kreonet.net/eng/&#34;&gt;KREONET&lt;/a&gt;, thanks to efforts by the local team. Initially it was discussed that they&amp;rsquo;d provide 20G uplink each, so 40G in total, which was whopping but by the time the closing talk happened, we got to know we had 200G uplink to the Internet. This was a massive update from last year when we had a 1G main and 100M backup link. 200G wasn&amp;rsquo;t what was required, but it was a massive capacity upgrade and IIRC from the talk, we peaked at around 500M in sustained usage, but it&amp;rsquo;s always fun to have an astronomical amount of bandwidth for bragging rights.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Various mascots in attendance&#34; src=&#34;https://blog.sahilister.in/img/dc24/dc24-various-mascots-in-attendance.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;Various mascots in attendance&lt;/i&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Video and Network stats. Screengrab from closing ceremony&#34; src=&#34;https://blog.sahilister.in/img/dc24/dc24-stats.png&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;Video and network stats. Screengrab from closing ceremony&lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;Now let&amp;rsquo;s talk about things I found interesting about South Korea in general:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Convenience stores were everywhere. One could see the same brand stores less than a kilometer apart. We even had two of them (GS25(s)), a road cross away. These places were well stocked with almost everything including alcohol.&lt;/li&gt;
&lt;li&gt;There were wide footpaths and pedestrian friendly policies.&lt;/li&gt;
&lt;li&gt;Public transport and intramodal transfer are convenient and easy to figure out. Each metro station connects to multiple nearby buildings through underground walkways, and one never has to go out in the sun (in hot and humid weather). Seoul and Busan metro networks were massive. T-money card worked for buses (almost hop on, tap and hop off at your destination), metro, cabs and in-store shopping.&lt;/li&gt;
&lt;li&gt;South Korea pays special attention to maintaining their historical and cultural buildings. These venues had informational brochures in Korean, English, Japanese and Chinese.&lt;/li&gt;
&lt;li&gt;We got a constant stream of &amp;ldquo;public safety alerts&amp;rdquo; on our phones. Some phones even read them aloud for heatwaves and rain warnings, all in Korean.&lt;/li&gt;
&lt;li&gt;Trash was segregated at the source everywhere.&lt;/li&gt;
&lt;li&gt;Public, high speed Wi-Fi was omnipresent in malls, public transport, airports etc. In each metro coach, there was a access point from all three telecom providers (SK Telecom, KT and LG U+) which also had almost similar voice and data plans.&lt;/li&gt;
&lt;li&gt;Police personnel were quite helpful despite the language issue.&lt;/li&gt;
&lt;li&gt;Not many folks here are comfortable in English, but one can always make use of various mobile translation apps.&lt;/li&gt;
&lt;li&gt;Cards are accepted everywhere and there are too many options for them.&lt;/li&gt;
&lt;li&gt;Food situation was a bit difficult for me as a vegetarian. We always have vegan/vegetarian food in DebConf but outside, this whole concept doesn&amp;rsquo;t seem to exist.&lt;/li&gt;
&lt;li&gt;I couldn&amp;rsquo;t find any public speed test servers inside Korea. All my fast.com/speedtest.net servers were located in either Hong Kong, Singapore, Japan and even the United States. On the very last day, I got a speed test server in Seoul, inside SK Telecom.&lt;/li&gt;
&lt;/ul&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Gyeongbokgung Palace Entrance&#34; src=&#34;https://blog.sahilister.in/img/dc24/dc24-gyeongbokgung-entrance.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Gyeongbokgung Palace Entrance&#34; src=&#34;https://blog.sahilister.in/img/dc24/dc24-gyeongbokgung-2.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Gyeongbokgung Palace Entrance&#34; src=&#34;https://blog.sahilister.in/img/dc24/dc24-gyeongbokgung-1.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;Grand Gyeongbokgung Palace, Seoul&lt;/i&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Starfield Library&#34; src=&#34;https://blog.sahilister.in/img/dc24/dc24-starfield-library.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; Starfield Library, Seoul&lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;If one has to get the whole DebConf experience, it&amp;rsquo;s better to attend DebCamp as well because that&amp;rsquo;s when you can sit and interact with everyone better. As DebConf starts, everyone gets busy in various talks and events and things pick up pace. DebConf days literally fly. This year, attending DebConf in person was a different experience. Attending DebConf without any organizational work/stress was better, and I was able to understand the workings of different Debian teams and workflows better while also identified a few where I would like to join and help. A general conclusion was that almost all Debian teams need more folks to help out. So if someone wants to join, they can probably reach out to the team. Though this would require some patience. Kudos to the Korean team for pulling this off under this timeline and thanks for all the hospitality.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;DebConf24 Group Photo&#34; src=&#34;https://blog.sahilister.in/img/dc24/dc24-group-photo.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; DebConf24 Group Photo.  &lt;a href=&#34;https://blog.sahilister.in/img/dc24/dc24-group-photo.jpg&#34;&gt;Click to enlarge.&lt;/a&gt; &lt;br&gt; Credits - &lt;a href=&#34;https://aigarius.com/blog/2024/08/02/debconf24-photos/&#34;&gt;Aigars Mahinovs&lt;/a&gt;&lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;This whole experience expanded my worldview. There&amp;rsquo;s so much to see, explore and understand. Looking forward to DebConf25 in Brest, France now.&lt;/p&gt;
&lt;p&gt;PS - Shoutout to abbyck (aka hamCK)!&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Banks With Own ASN in India</title>
      <link>https://blog.sahilister.in/2024/08/banks-with-own-asn-in-india/</link>
      <pubDate>Wed, 07 Aug 2024 07:48:17 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2024/08/banks-with-own-asn-in-india/</guid>
      <description>&lt;p&gt;&lt;em&gt;Last Updated on 11/04/2026.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Most banks are behind CDNs and DDoS mitigation providers nowadays, though they still hold their own IP space. Was interested in this, so compiled a list from &lt;a href=&#34;https://bgp.tools/&#34;&gt;BGP.Tools&lt;/a&gt; and &lt;a href=&#34;https://bgp.he.net/&#34;&gt;Hurricane Electric BGP Toolkit&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/17436&#34;&gt;AS17436&lt;/a&gt; ICICIBANK Ltd, Banking, Mumbai&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/24055&#34;&gt;AS24055&lt;/a&gt; Deutsche Bank AG-India Internet AS&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/38029&#34;&gt;AS38029&lt;/a&gt; Citibank N.A. - ISP Peering, Chennai, India&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/38468&#34;&gt;AS38468&lt;/a&gt; ASN for Yes Bank&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/45644&#34;&gt;AS45644&lt;/a&gt; SBI-EMS-NET-IN&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/59194&#34;&gt;AS59194&lt;/a&gt; Central Bank of India&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/131283&#34;&gt;AS131283&lt;/a&gt; HDFC Bank House&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/132440&#34;&gt;AS132440&lt;/a&gt; Unity Small Finance Bank Pvt. Ltd.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/132946&#34;&gt;AS132946&lt;/a&gt; Ujjivan Small Finance Bank Ltd&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/132989&#34;&gt;AS132989&lt;/a&gt; Sangli Urban Co-operative Bank Ltd&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/133640&#34;&gt;AS133640&lt;/a&gt; Indian Overseas Bank&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/133657&#34;&gt;AS133657&lt;/a&gt; IndusInd Bank Ltd&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/134909&#34;&gt;AS134909&lt;/a&gt; The South Indian Bank Ltd&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/135086&#34;&gt;AS135086&lt;/a&gt; Axis Bank Limited&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/135745&#34;&gt;AS135745&lt;/a&gt; UCO Bank&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/135819&#34;&gt;AS135819&lt;/a&gt; Chaitanya Godavari Grameena Bank&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/136252&#34;&gt;AS136252&lt;/a&gt; The Bank of Baroda Limited&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/136324&#34;&gt;AS136324&lt;/a&gt; IDBI Bank Ltd&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/136622&#34;&gt;AS136622&lt;/a&gt; Equitas Small Finance Bank Ltd&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/136680&#34;&gt;AS136680&lt;/a&gt; Bank of Maharashtra&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/136707&#34;&gt;AS136707&lt;/a&gt; The Kalupur Commercial Co-operative Bank Limited&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/137104&#34;&gt;AS137104&lt;/a&gt; India Post Payments Bank Limited&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/137108&#34;&gt;AS137108&lt;/a&gt; Bank of India&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/137130&#34;&gt;AS137130&lt;/a&gt; Punjab National Bank&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/137662&#34;&gt;AS137662&lt;/a&gt; IDFC Bank Ltd&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/137670&#34;&gt;AS137670&lt;/a&gt; Canara Bank&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/138318&#34;&gt;AS138318&lt;/a&gt; The Visakhapatnam Cooperative Bank Ltd&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/140156&#34;&gt;AS140156&lt;/a&gt; Karnataka Gramin Bank&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/141222&#34;&gt;AS141222&lt;/a&gt; Telangana State Coorperative Apex Bank Ltd&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/141561&#34;&gt;AS141561&lt;/a&gt; Punjab and Sind Bank&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/146870&#34;&gt;AS146870&lt;/a&gt; TJSB Sahakari Bank Ltd&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/149202&#34;&gt;AS149202&lt;/a&gt; The Jammu And Kashmir Bank Pvt Ltd&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/149528&#34;&gt;AS149528&lt;/a&gt; Indian Bank&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/149603&#34;&gt;AS149603&lt;/a&gt; Suryoday Small Finance Bank Limited&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/150029&#34;&gt;AS150029&lt;/a&gt; The Karnataka Bank Ltd&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/154068&#34;&gt;AS154068&lt;/a&gt; Esaf Small Finance Bank Limited&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/151172&#34;&gt;AS151172&lt;/a&gt; CSB Bank Ltd&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/151692&#34;&gt;AS151692&lt;/a&gt; Small Industries Development Bank of India&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/152594&#34;&gt;AS152594&lt;/a&gt; DBS Bank India Limited&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/153222&#34;&gt;AS153222&lt;/a&gt; Kerala State Co-operative Bank Limited (Kerala Bank)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other noteable mentions/periphery orgs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/132557&#34;&gt;AS132557&lt;/a&gt; SBI Cards And Payment Services Limited&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/138161&#34;&gt;AS138161&lt;/a&gt; SBI Funds Management Private Limited&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/141388&#34;&gt;AS141388&lt;/a&gt; ICICI Securities&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/141857&#34;&gt;AS141857&lt;/a&gt; National Bank for Agriculture and Rural Development&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/151773&#34;&gt;AS151773&lt;/a&gt; Reserve Bank Information Technology Pvt Ltd&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/154499&#34;&gt;AS154499&lt;/a&gt; BOB Card&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let me know if I&amp;rsquo;m missing someone. Many thanks to &lt;a href=&#34;https://c.im/@saswatasarkar13&#34;&gt;Saswata Sarkar&lt;/a&gt; for helping with the list.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Ola Maps and OpenStreetMap Data</title>
      <link>https://blog.sahilister.in/2024/07/ola-maps-and-openstreetmap-data/</link>
      <pubDate>Mon, 29 Jul 2024 13:49:25 +0900</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2024/07/ola-maps-and-openstreetmap-data/</guid>
      <description>&lt;p&gt;Recently, Ola started rolling out Ola Maps in their main mobile application, replacing Google Maps, while also offering maps as a service to other organizations. The interesting part for me was the usage of OpenStreetMap (OSM) data along with Ola&amp;rsquo;s proprietary data sources. Let&amp;rsquo;s talk about the map data part here.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/ola-osm.jpg&#34; alt=&#34;RTI 1&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;
        Screenshot of Ola App. &lt;br&gt; OpenStreetMap attribution is shown after clicking the Ola Map icon.
    &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;OpenStreetMap for starters, is a community owned and edited map data resource that gives freedom to use map data for any purpose. This includes the condition that attribution is given back to OSM which in turn ideally would encourage other users to contribute, correct and edit, helping everyone in turn. Due to this, OSM is also regarded as the Wikipedia of maps. OSM data is used by &lt;a href=&#34;https://welcome.openstreetmap.org/about-osm-community/consumers/&#34;&gt;many organizations&lt;/a&gt; like Wikipedia Maps, Strava Maps, Snapchat Map, bus tracking in GoIbibo/Redbus etc.&lt;/p&gt;
&lt;p&gt;OSM India community has been following Ola&amp;rsquo;s map endeavor to use and contribute to OSM since they went public with it few years ago. As required by OSM for organized mapping efforts, Ola created a &lt;a href=&#34;https://wiki.openstreetmap.org/wiki/Ola_-_Organised_Editing&#34;&gt;wiki entry&lt;/a&gt; with information regarding their editors, usage, policy and mentions following as their data usage case:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;OSM data is used for the road network, traffic signs and signals, buildings, natural features, landuse polygons and some POIs.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Creating a map product is a task in itself. An engineering hurdle to create the tech stack for collection, validation, import and serving the map and data. Ola has done a good job describing the development of the tech stack in their &lt;a href=&#34;https://tech.olakrutrim.com/navigating-india-the-journey-of-ola-maps/&#34;&gt;blog post&lt;/a&gt;. Ola holds an enormous corpus of live and constantly updated GPS trace data. Their drivers, users, and delivery partners generate those, which they harness to validate, correct and add missing map data. Ola employees now regularly contribute new or missing roads (including adding dual carriageways to existing ones), fixing road geometry, classification, access type and restrictions pan India. They have been active and engaging in OSM India community channels, though community members have &lt;a href=&#34;https://community.openstreetmap.org/t/organized-editing-by-ola-in-india/108148&#34;&gt;raised some concerns&lt;/a&gt; about their OSM edit practices.&lt;/p&gt;
&lt;p&gt;Ola&amp;rsquo;s venture into the map industry isn&amp;rsquo;t something out of the ordinary. &lt;a href=&#34;https://en.wikipedia.org/wiki/Grab_Holdings&#34;&gt;Grab&lt;/a&gt;, a Southeast Asian company that has business interests in food deliveries, ride hailing and a bunch of other services too switched to their &lt;a href=&#34;https://www.grab.com/sg/press/tech-product/grab-to-be-fully-powered-by-its-own-mapping-technology-by-q3-2022/&#34;&gt;in-house map&lt;/a&gt; based on OpenStreetMap, followed by the launch of their &lt;a href=&#34;https://grabmaps.grab.com/&#34;&gt;map product&lt;/a&gt;. Grab too &lt;a href=&#34;https://wiki.openstreetmap.org/wiki/Grab&#34;&gt;contributed data&lt;/a&gt; to OSM. Both Ola and Grab heavily rely on maps for their business operations and seem to choose to go independent for it, bootstrapping their map products on OSM.&lt;/p&gt;
&lt;p&gt;In India, bunch of organizations contribute to OSM like &lt;a href=&#34;https://wiki.openstreetmap.org/wiki/Swiggy_-_Organised_Editing&#34;&gt;Swiggy&lt;/a&gt;, &lt;a href=&#34;https://wiki.openstreetmap.org/wiki/Organised_Editing/Activities/Stackbox&#34;&gt;Stackbox&lt;/a&gt;, &lt;a href=&#34;https://wiki.openstreetmap.org/wiki/Organised_Editing/Activities/Amazon&#34;&gt;Amazon&lt;/a&gt;, &lt;a href=&#34;https://wiki.openstreetmap.org/wiki/Organised_Editing/Activities/Apple&#34;&gt;Apple&lt;/a&gt;. &lt;a href=&#34;https://wiki.openstreetmap.org/wiki/Organised_Editing/Activities/Microsoft&#34;&gt;Microsoft&lt;/a&gt;, &lt;a href=&#34;https://wiki.openstreetmap.org/wiki/Organised_Editing/Activities/Meta&#34;&gt;Meta/Facebook&lt;/a&gt; and &lt;a href=&#34;https://wiki.openstreetmap.org/wiki/Organised_Editing/Activities&#34;&gt;others&lt;/a&gt;. Everyone wants better map data, so everyone works together.&lt;/p&gt;
&lt;p&gt;Ola could have gone their own route; bootstrapping map data from scratch, which would have been a gargantuan task when you&amp;rsquo;re competing against the likes of Google Maps and Bing Maps, which have been into this for many years. Deciding to use OSM and actively giving back to make data better for everyone deserves accolades. Now, I&amp;rsquo;m waiting for their second blog post, which they mention would be on map data. &lt;em&gt;(Update - here&amp;rsquo;s the &lt;a href=&#34;https://tech.olakrutrim.com/ola-maps-made-for-india-priced-for-india/&#34;&gt;post&lt;/a&gt;.)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re an Ola Map user through Ola Electric or Ola app, and find some roads unmapped, you can always edit them in OSM. What I have heard from their employee is that they import new OSM data weekly, which means your changes should start reflecting for you (and everyone else) by next week. If you&amp;rsquo;re new, follow the &lt;a href=&#34;https://wiki.openstreetmap.org/wiki/Beginners%27_guide&#34;&gt;Beginners&amp;rsquo; Guide&lt;/a&gt; and join OSM India community at any of the &lt;a href=&#34;https://community.osm.be/resources/asia/india/&#34;&gt;listed places&lt;/a&gt; for any doubts and to participate in various mapping events/discussions.&lt;/p&gt;
&lt;p&gt;PS — You can see live OSM edits in the Indian subcontinent &lt;a href=&#34;https://osmlab.github.io/show-me-the-way/#bounds=6.7,67.7,36.4,97.4&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Atleast Not Written by an AI</title>
      <link>https://blog.sahilister.in/2024/07/atleast-not-written-by-an-ai/</link>
      <pubDate>Fri, 05 Jul 2024 21:49:01 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2024/07/atleast-not-written-by-an-ai/</guid>
      <description>&lt;p&gt;I keep on going back and correcting bootload of grammatical and other errors in my posts here. I somewhat feel embarrassed how such mistakes slip through when I was proofreading. Back then it was all good and suddenly this mistake cropped up in my text, which everyone might have already noticed by now. A thought just stuck around that. Those mistakes signify that the text is written by a real human, and humans makes mistakes. :)&lt;/p&gt;
&lt;p&gt;PS - Even LanguageTool (non-premium) couldn&amp;rsquo;t identify those errors.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>RTI to NPL Regarding Their NTP Infrastructure</title>
      <link>https://blog.sahilister.in/2024/07/rti-to-npl-regarding-their-ntp-infrastructure/</link>
      <pubDate>Wed, 03 Jul 2024 21:45:41 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2024/07/rti-to-npl-regarding-their-ntp-infrastructure/</guid>
      <description>&lt;p&gt;I became interested in Network Time Protocol (NTP) last year after learning how fundamental this protocol is to the functioning of the global Internet. NTP helps synchronize clocks on devices over the Internet, which is essential for secure browsing, timestamping, keeping everyone in sync or just checking what time it is. Computers usually have a hardware real-time clock (RTC) but that deviates over time, so an occasional sync over NTP is required to keep the time accurate. Many network and IoT devices don&amp;rsquo;t have hardware RTC so have even more reliance on NTP.&lt;/p&gt;
&lt;p&gt;Accurate time keeping starts with reference clocks like atomic clocks, GPS etc. Multiple government standard agencies host these reference clocks, which are regarded as Stratum 0. Stratum 1 servers are known as primary servers, and directly connect to Stratum 0 clocks for time.  Stratum 1 servers then distribute time to Stratum 2 and further down the hierarchy. Computers typically connects to one or more Stratum 1/2/3&amp;hellip; servers to get their time.&lt;/p&gt;
&lt;p&gt;Someone has to host these public Stratum 1,2,3&amp;hellip; NTP servers. That&amp;rsquo;s what &lt;a href=&#34;https://www.ntppool.org/en/&#34;&gt;NTP pool&lt;/a&gt;, a global effort by volunteers does. They provide NTP servers for the public to use. As of today, there are 4700+ servers in the pool which are free to use for anyone.&lt;/p&gt;
&lt;p&gt;Now let&amp;rsquo;s come to the reason for writing this post. &lt;a href=&#34;https://www.cert-in.org.in/&#34;&gt;Indian Computer Emergency Response Team (CERT-In)&lt;/a&gt; in April 2022 released &lt;a href=&#34;https://web.archive.org/web/20240629154228/https://www.cert-in.org.in/PDF/CERT-In_Directions_70B_28.04.2022.pdf&#34;&gt;a set of cybersecurity directions&lt;/a&gt; which set the alarm bells ringing. Internet Society (and almost everyone else) &lt;a href=&#34;https://www.internetsociety.org/resources/doc/2022/internet-impact-brief-india-cert-in-cybersecurity-directions-2022/&#34;&gt;wrote about it&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And then there was this specific section about NTP:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;All service providers, intermediaries, data centres, body corporate and Government organisations shall connect to the Network Time Protocol (NTP) Server of National Informatics Centre (NIC) or National Physical Laboratory (NPL) or with NTP servers traceable to these NTP servers, for synchronisation of all their ICT systems clocks. Entities having ICT infrastructure spanning multiple geographies may also use accurate and standard time source other than NPL and NIC, however it is to be ensured that their time source shall not deviate from NPL and NIC.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;CSIR-National Physical Laboratory (NPL) is the official timekeeper for India and hosts the only public Stratum 1 clock in India, according to &lt;a href=&#34;https://support.ntp.org/Servers/PublicTimeServer001686&#34;&gt;NTP pool website&lt;/a&gt;. So I was naturally curious to know what kind of infrastructure they&amp;rsquo;re running for NTP. India has a Right to Information (RTI) Act which, like the Freedom of Information Act (FOIA) in the United States, gives citizens rights to request information from governmental entities, to which they have to respond in under 30 days.  So last year, I filed two sets of RTI (one after the first reply came) inquiring about NPL&amp;rsquo;s public NTP server setup.&lt;/p&gt;
&lt;p&gt;The first RTI had some generic questions:
&lt;img src=&#34;https://blog.sahilister.in/img/npl-rti/npl-rti-1.png&#34; alt=&#34;RTI 1&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;
        First RTI. &lt;a href=&#34;https://blog.sahilister.in/img/npl-rti/npl-rti-1.png&#34;&gt;Click to enlarge&lt;/a&gt; &lt;br&gt;
    &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;This gave a vague idea about the setup, so I sat down and came with some specific questions in the next RTI.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/npl-rti/npl-rti-2.png&#34; alt=&#34;RTI 2&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;
        Second RTI. &lt;a href=&#34;https://blog.sahilister.in/img/npl-rti/npl-rti-2.png&#34;&gt;Click to enlarge&lt;/a&gt; &lt;br&gt;
    &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;Feel free to make your conclusions from it now. Bear in mind these were filled last year so things might have changed. Do let me know if you have more information about it.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update (07/07/2024): Found an &lt;a href=&#34;https://www.medianama.com/2022/12/223-specs-ntp-nic-npl-time-servers-clocks-rti-2/&#34;&gt;article from Medianama&lt;/a&gt; about Indian government time servers with information sourced through RTI.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Personal ASNs From India</title>
      <link>https://blog.sahilister.in/2024/07/personal-asns-from-india/</link>
      <pubDate>Tue, 02 Jul 2024 01:15:03 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2024/07/personal-asns-from-india/</guid>
      <description>&lt;p&gt;&lt;em&gt;Last Updated on 21/02/2026.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Internet and it&amp;rsquo;s working are interesting and complex. We need an IP address to connect to the Internet. A group of IP addresses with common routing policy is known as an Autonomous System (AS). Each AS has a globally unique Autonomous System Number (ASN) and is maintained by a single entity or individual(s). Your ISP would have an ASN. IP addresses/prefixes are advertised (announced) by an AS through Border Gateway Protocol (BGP) to its peers (ASes which it connects to) to steer traffic in its direction or back.&lt;/p&gt;
&lt;p&gt;Take for example Google DNS service at 8.8.8.8 owned and operated by &lt;a href=&#34;https://bgp.tools/as/15169&#34;&gt;AS15169&lt;/a&gt; Google LLC. AS15169 through BGP announcements, lets all its peers  know that traffic for whole of 8.8.8.0/24 (including 8.8.8.8) prefix should be sent to them. See the following screenshot response of &lt;code&gt;mtr -zt 8.8.8.8&lt;/code&gt; from my system. From my Internet Service Provider (ISP), &lt;a href=&#34;https://bgp.tools/as/133982&#34;&gt;AS133982&lt;/a&gt; Excitel Broadband, traffic travels to AS15169 to reach 8.8.8.8 (dns.google) and returns via the same path. This Inter-AS traffic makes the Internet tick.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/mtr-to-google-from-excitel.png&#34; alt=&#34;mtr from Excitel to Google&#34;&gt;&lt;/p&gt;
&lt;p&gt;ASes comes in different sizes and purposes. Like &lt;a href=&#34;https://bgp.tools/as/749&#34;&gt;AS749&lt;/a&gt; DoD Network Information Center which holds more than 200 million+ IPv4 addresses for historical reasons or &lt;a href=&#34;https://bgp.tools/as/23860&#34;&gt;AS23860&lt;/a&gt; Alliance Broadband Services which has 68 thousand+ IPv4 address for purpose of providing consumer Internet.&lt;/p&gt;
&lt;p&gt;Similarly, some individuals also run their personal ASN including a bunch of Indians. Most of these Indian ASNs are IPv6 (primary or only) networks run for hobby and educational purposes. I was interested in this data, so complied a list of active ones (visible in the global routing table) from &lt;a href=&#34;https://bgp.tools/&#34;&gt;BGP.Tools&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/149794&#34;&gt;AS149794&lt;/a&gt; Daryll Swer&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/199347&#34;&gt;AS199347&lt;/a&gt; Ishan Jain&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/200169&#34;&gt;AS200169&lt;/a&gt; Manish Pant&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/201349&#34;&gt;AS201349&lt;/a&gt; Yash Garg&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/202340&#34;&gt;AS202340&lt;/a&gt; Sanoj Kumar&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/203145&#34;&gt;AS203145&lt;/a&gt; Debdut Biswas&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/204871&#34;&gt;AS204871&lt;/a&gt; Shihabudheen P K&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/206777&#34;&gt;AS206777&lt;/a&gt; Mohit Singh&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/207941&#34;&gt;AS207941&lt;/a&gt; Jiten Pathy&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/211242&#34;&gt;AS211242&lt;/a&gt; Srijit Banerjee&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/213326&#34;&gt;AS213326&lt;/a&gt; Kalpak Mukhopadhyay Network Lab&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/213655&#34;&gt;AS213655&lt;/a&gt; Akshit Garg&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/214543&#34;&gt;AS214543&lt;/a&gt; Karthik V&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/216452&#34;&gt;AS216452&lt;/a&gt; Edvin Basil Samuval&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bgp.tools/as/202145&#34;&gt;AS202145&lt;/a&gt; Paras Makwana&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let me know if I&amp;rsquo;m missing someone.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>How I Write Blogs - June 2024 Edition</title>
      <link>https://blog.sahilister.in/2024/06/how-i-write-blogs-june-2024-edition/</link>
      <pubDate>Sun, 23 Jun 2024 12:32:28 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2024/06/how-i-write-blogs-june-2024-edition/</guid>
      <description>&lt;p&gt;I wrote about &lt;a href=&#34;https://blog.sahilister.in/2021/04/how-i-write-blogs-april-2021-edition/&#34;&gt;my blog writing methodology&lt;/a&gt; back April 2021. My writing method has undergone a significant shift now, so thought about writing this update.&lt;/p&gt;
&lt;p&gt;New blog topics are added to my note-taking app quite frequently now. Occasionally going through the list, I merge topics, change order to prioritize certain topics or purely drop ideas which seems not worth a write-up. Due to this, I have the liberty to work on blogs according to mood. Writing &lt;a href=&#34;https://blog.sahilister.in/2024/06/first-iteration-of-my-free-software-mirror/&#34;&gt;the last one&lt;/a&gt; was tiring, so I chose to work on an easy one, i.e. this blog now.&lt;/p&gt;
&lt;p&gt;Topic decided, everything starts on etherpad now. Etherpad has this nice font and sync feature, which helps me write from any device of choice. Actual writing usually happens in the morning, right after I wake up. For most topics, I quickly jot down pointers and keep on expanding them over the course of multiple days at a leisurely pace. Though, sometime it adds too many pieces in the puzzle and takes additional time to put everything in flow. New pointer addition keeps on happening along with writing. Nowadays, pictures too dot my blog, which I rarely use to do earlier. I have come to believe on less usage of external links. These breaks the flow of readers. If someone is sufficiently motivated to learn more about something, finding useful sources isn&amp;rsquo;t.&lt;/p&gt;
&lt;p&gt;As the first draft comes into being, I run it through &lt;a href=&#34;https://languagetool.org/&#34;&gt;LanguageTool&lt;/a&gt; for spelling corrections (which typically are many) and fixing grammatical issues. Post that, for the first time I read the complete write-up in one go for formation of coherent storyline, moving paragraphs around for form a structure , adding explainers wherever something new or unexplained is introduced, removing elaborate sentences, making amends wherever required and moving paragraphs around for forming structure. Another round of LanguageTool follows. All set now, I try to space out my final read before publishing, which helps find additional mistakes or loopholes.&lt;/p&gt;
&lt;p&gt;When everything is set, I do &lt;code&gt;hugo&lt;/code&gt;  to generate the site and &lt;code&gt;rsync&lt;/code&gt; everything to the web server. A final git sync closes the publication part.&lt;/p&gt;
&lt;p&gt;After a day or two, I come back to read the blog on the website. This entails another round finding and fixing trivial mistakes. After this, it&amp;rsquo;s set for good.&lt;/p&gt;
&lt;p&gt;Nowadays, in addition to being on my blog, everything is syndicated on Planet FSCI and Planet Debian, which has given it more visibility. As someone who&amp;rsquo;s into infrastructure and Internet as a lot, I do pay attention to logs on my server, but as a disconnected exercise to if the blog is being read or not. More hits on the blog doesn&amp;rsquo;t translate to any gratification for me, at least for writers&amp;rsquo; point of view. Occasionally, people do mention my blog, which does flatter me. Four years and nearly a hundred posts later, I still wonder how I kept on writing for this long.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>First Iteration of My Free Software Mirror</title>
      <link>https://blog.sahilister.in/2024/06/first-iteration-of-my-free-software-mirror/</link>
      <pubDate>Wed, 19 Jun 2024 09:05:20 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2024/06/first-iteration-of-my-free-software-mirror/</guid>
      <description>&lt;p&gt;As I&amp;rsquo;m gearing towards setting up a &lt;a href=&#34;https://www.gnu.org/philosophy/free-sw.en.html&#34;&gt;Free Software&lt;/a&gt; download mirror in India, it occurred to me that I haven&amp;rsquo;t chronicled the work and motivation behind setting up the &lt;a href=&#34;https://mirrors.de.sahilister.net&#34;&gt;original mirror&lt;/a&gt; in the first place. Also, seems like it would be good to document stuff here for observing the progression, as the mirror is going multi-country now. Right now, my existing mirror i.e., &lt;a href=&#34;https://mirrors.de.sahilister.net&#34;&gt;mirrors.de.sahilister.net&lt;/a&gt; (was &lt;a href=&#34;https://mirrors.sahilister.in&#34;&gt;mirrors.sahilister.in&lt;/a&gt;), is hosted in Germany and serves traffic for Termux, NomadBSD, Blender, BlendOS and GIMP. For a while in between, it hosted OSMC project mirror as well.&lt;/p&gt;
&lt;p&gt;To explain what is a Free Software download mirror thing is first, I&amp;rsquo;ll quote myself from &lt;a href=&#34;https://blog.hopbox.net/sahil/hopbox-public-gnu-software-mirror&#34;&gt;work blog&lt;/a&gt; -&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As most Free Software doesn’t have commercial backing and require heavy downloads, the concept of software download mirrors helps take the traffic load off of the primary server, leading to geographical redundancy, higher availability and faster download in general.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So whenever someone wants to download a particular (mirrored) software and click download, upstream redirects the download to one of the mirror server which is geographical (or in other parameters) nearby to the user, leading to faster downloads and load sharing amongst all mirrors.&lt;/p&gt;
&lt;p&gt;Since the time I got into Linux and servers, I always wanted to help the community somehow, and mirroring seemed to be the most obvious thing. India seems to be a country which has traditionally seen less number of public download mirrors. IITB, TiFR, and some of the public institutions used to host them for popular Linux and Free Softwares, but they seem to be diminishing these days.&lt;/p&gt;
&lt;p&gt;In the last months of 2021, I started using Termux and saw that it had only a few mirrors (back then). I tried getting a high capacity, high bandwidth node in budget but it was hard in India in 2021-22. So after much deliberation, I decided to go where it&amp;rsquo;s available and chose a German hosting provider with the thought of adding India node when conditions are favorable (thankfully that happened, and &lt;a href=&#34;https://mirrors.in.sahilister.net&#34;&gt;India node is live&lt;/a&gt; too now.). Termux required only 29 GB of storage, so went ahead and started mirroring it. I raised &lt;a href=&#34;https://web.archive.org/web/20240609183755/https://github.com/termux/termux-packages/issues/8535&#34;&gt;this issue&lt;/a&gt; in Termux&amp;rsquo;s GitHub repository in January 2022. &lt;a href=&#34;https://blog.sahilister.in/2022/01/termux.sahilister.in-a-termux-mirror-is-live-now/&#34;&gt;This blog post&lt;/a&gt; chronicles the start of the mirror.&lt;/p&gt;
&lt;p&gt;Termux has high request counts from a mirror point of view. Each Termux client, usually checks every mirror in selected group for availability before randomly selecting one for download (only other case is when client has explicitly selected a single mirror using &lt;code&gt;termux-repo-change&lt;/code&gt;). The mirror started getting thousands of requests daily due to this but only a small percentage would actually get my mirror in selection, so download traffic was lower. Similar thing happened with OSMC too (which I started mirroring later).&lt;/p&gt;
&lt;p&gt;With this start, I started exploring various project that would be benefit from additional mirrors. Public information from Academic Computer Club in Umeå&amp;rsquo;s &lt;a href=&#34;https://mirror.accum.se/mirror/&#34;&gt;mirror&lt;/a&gt; and Freedif&amp;rsquo;s &lt;a href=&#34;https://mirror.freedif.org/Stats/&#34;&gt;mirror stats&lt;/a&gt; helped to figure out storage and bandwidth requirements for potential projects. Fun fact, Academic Computer Club in Umeå (which is one of the prominent Debian, Ubuntu etc.) mirror, now has &lt;a href=&#34;https://mirror.accum.se/about/index.html&#34;&gt;200 Gbits/s uplink&lt;/a&gt; to the internet through SUNET.&lt;/p&gt;
&lt;p&gt;Later, I migrated to a different provider for better speeds and added LibreSpeed test on the mirror server. Those were fun times. Between OSMC, Termux and LibreSpeed, I was getting almost 1.2 millions hits/day on the server at its peak, crossing for the first time a TB/day traffic number.&lt;/p&gt;
&lt;p&gt;Next came Blender, which took the longest time to set up of around 9–10 months. Blender had a push-trigger requirement for rsync from upstream that took quite some back and forth. It now contributes the most amount of traffic on the mirror. On release days, mirror does more than 3 TB/day and normal days, it hovers around 2 TB/day. Gimp project is the latest addition.&lt;/p&gt;
&lt;p&gt;At one time, the mirror traffic touched 4.97 TB/day traffic number. That&amp;rsquo;s when I decided on dropping LibreSpeed server to solely focus on mirroring for now, keeping the bandwidth allotment for serving downloads only.&lt;/p&gt;
&lt;p&gt;The mirror projects selection grew organically. I used to reach out many projects discussing the need of for additional mirrors. Some projects outright denied mirroring request as Germany already has a good academic mirrors boosting 20-25 Gbits/s speeds from FTP era, which seems fair. Finding the niche was essential to only add softwares, which would truly benefit from additional capacity. There were months when nothing much would happen with the mirror, rsync would continue to update the mirror while nginx would keep on serving the traffic. Nowadays, the mirror pushes around 70 TB/month. I occasionally check logs, vnstat, add new security stuff here and there and pay the bills. It now saturates the Gigabit link sometimes and goes beyond that, peaking around 1.42 Gbits/s (the hosting provider seems to be upping their game). The plan is to upgrade the link to better speeds.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/1fs/fs1-vnstat-yearly.png&#34; alt=&#34;vnstat yearly&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
&lt;i&gt; Yearly traffic stats (through `vnstat -y`) &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;On the way, learned quite a few things like -&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;IPv6 and exposing rsync module due to OSMC requirement.&lt;/li&gt;
&lt;li&gt;Implementing user with restricted access to only trigger rsync, basically make rsync pull trigger based due to Blender.&lt;/li&gt;
&lt;li&gt;Iterating over right client response size for LibreSpeed test project.&lt;/li&gt;
&lt;li&gt;Mistakenly identifying torrent traffic for BlendOS as DDoS and blocking it for quite a few months. BlendOS added loads of hits for torrent traffic, making my mirror also serve as web seed. Web seeds in conjunction with normal seeds surely is a good combination for serving downloads as it combines best of both world, general availability of web seed/mirror and benefit of traditional seeds to maximize download speeds at user end.&lt;/li&gt;
&lt;li&gt;Handling abusive traffic (a lot of it to be frank). The approach is more of a whack a mole right now, which I want to improve and automate.&lt;/li&gt;
&lt;li&gt;Most of the traffic on non-Linux/BSD operating systems serving mirrors (like mine) is for people on Windows and Mac asking for EXEs and DMGs. Mostly because package repositories carry software distribution load for Linux/BSD OSs and partly because the number of Windows/Mac users are quite high compared to other OSs.&lt;/li&gt;
&lt;li&gt;Load balancing through DNS and HTTP redirection  (which I would implement in my India mirror now) to better maximize available resources.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/1fs/geoip-map-through-ipinfo.png&#34; alt=&#34;GeoIP Map of Clients from Yesterday Access Logs&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;
        GeoIP Map of Clients from Yesterday&#39;s Access Logs. &lt;a href=&#34;https://blog.sahilister.in/img/1fs/geoip-map-through-ipinfo.png&#34;&gt;Click to enlarge&lt;/a&gt; &lt;br&gt;
        Generated from &lt;a href=&#34;https://ipinfo.io/tools/map&#34;&gt;IPinfo.io&lt;/a&gt;
    &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;In hindsight, the statistics look amazing, hundreds of TBs of traffic served from the mirror, month after month. That does show that there&amp;rsquo;s still an appetite for public mirrors in time of commercially “donated” CDNs and GitHub. The world could have done with one less mirror, but it saved some time, lessened the burden for others, while providing redundancy and traffic localization with one additional mirror. And it&amp;rsquo;s fun for someone like me who&amp;rsquo;s into infrastructure that powers the Internet. Now, I&amp;rsquo;ll try focusing and expanding the &lt;a href=&#34;https://mirrors.in.sahilister.net&#34;&gt;India mirror&lt;/a&gt;, which in itself started pushing almost half a TB/day. Long live Free Software and public download mirrors.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>A Late, Late Debconf23 Post</title>
      <link>https://blog.sahilister.in/2024/05/a-late-late-debconf23-post/</link>
      <pubDate>Mon, 27 May 2024 23:30:37 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2024/05/a-late-late-debconf23-post/</guid>
      <description>&lt;p&gt;After much procrastination, I have gotten around to complete my DebConf23 (DC23), Kochi blog post. I lost the original etherpad which was started before DebConf23, for jotting down things. Now, I have started afresh with whatever I can remember, months after the actual conference ended. So things might be as accurate as my memory.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://debconf23.debconf.org/&#34;&gt;DebConf23&lt;/a&gt;, the 24th annual Debian Conference, happened in Infopark, Kochi, India from 10th September to 17th September 2023. It was preceded by DebCamp from 3rd September to 9th September 2023.&lt;/p&gt;
&lt;p&gt;First formal bid to host DebConf in India was made during DebConf18 in Hsinchu, Taiwan by Raju Dev, which didn&amp;rsquo;t came our way. In next DebConf, DebConf19 in Curitiba, Brazil, another bid was made by him with help and support from Sruthi, Utkarsh and the whole team.This time, India got the &lt;a href=&#34;https://lists.debian.org/debconf-announce/2020/02/msg00000.html&#34;&gt;opportunity to host DebConf22&lt;/a&gt;, which eventually became &lt;a href=&#34;https://lists.debian.org/debconf-announce/2021/05/msg00000.html&#34;&gt;DebConf23 for the reasons&lt;/a&gt; you all know.&lt;/p&gt;
&lt;p&gt;I initially met the local team on the sidelines of DebConf20, which was also my first DebConf. Having recently switched to Debian, DC20 introduced me to how things work in Debian. Video team&amp;rsquo;s call for volunteers email pulled me in. Things stuck, and I kept hanging out and helping the local Indian DC team with various stuff. We did manage to organize multiple events leading to DebConf23 including &lt;a href=&#34;https://blog.sahilister.in/2021/01/experience-volunteering-for-minidebconf-india-2021/&#34;&gt;MiniDebConf India 2021 Online&lt;/a&gt;, &lt;a href=&#34;https://blog.sahilister.in/2023/01/minidebconf-palakkad-2022/&#34;&gt;MiniDebConf Palakkad 2022&lt;/a&gt;, &lt;a href=&#34;https://blog.sahilister.in/2023/02/minidebconf-tamil-nadu-2023/&#34;&gt;MiniDebConf Tamil Nadu 2023&lt;/a&gt; and &lt;a href=&#34;https://blog.sahilister.in/2023/06/debutsav-kochi-2023/&#34;&gt;DebUtsav Kochi 2023&lt;/a&gt;, which gave us quite a bit of experience and workout. Many local organizers from these conferences later joined various DebConf teams during the conference to help out.&lt;/p&gt;
&lt;p&gt;For DebConf23, originally I was part of publicity team because that was my usual thing. After a team redistribution exercise, Sruthi and Praveen moved me to sponsorship team, as anyhow we didn&amp;rsquo;t had to do much publicity and sponsorship was one of those things I could get involved remotely. Sponsorship team had to take care of raising funds by reaching out to sponsors, managing invoices and fulfillment. Praveen joined as well in sponsorship team. We also had international sponsorship team, Anisa, Daniel and various Debian Trusted Organizations (TO)s which took care of reaching out to international organizations, and we took care of reaching out to Indian organizations for sponsorship. It was really proud moment when my present employer, Unmukti (makers of &lt;a href=&#34;https://hopbox.net&#34;&gt;hopbox&lt;/a&gt;) came aboard as Bronze sponsor. Though fundraising seem to be hit hard from tech industry slowdown and layoffs. Many of our yesteryear sponsors couldn&amp;rsquo;t sponsor.&lt;/p&gt;
&lt;p&gt;We had biweekly local team meetings, which were turned to weekly as we neared the event. This was done in addition to biweekly global team meeting.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Pathu&#34; src=&#34;https://blog.sahilister.in/img/dc23/dc23-pathu.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; Pathu, DebConf23 mascot&lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;To describe the conference venue, it happened in InfoPark, Kochi with the main conference hall being Athulya Hall and food, accommodation and two smaller halls in Four Point Hotel, right outside Infopark. We got Athulya Hall as part of venue sponsorship from Infopark. The distance between both of them was around 300 meters. Halls were named &lt;a href=&#34;https://en.wikipedia.org/wiki/Anamudi&#34;&gt;Anamudi&lt;/a&gt;, &lt;a href=&#34;https://en.wikipedia.org/wiki/Kuthiran&#34;&gt;Kuthiran&lt;/a&gt; and &lt;a href=&#34;https://en.wikipedia.org/wiki/Ponmudi&#34;&gt;Ponmudi&lt;/a&gt; based on hills and mountain areas in host state of Kerala. Other than Annamudi hall which was the main hall, I couldn&amp;rsquo;t remember the names of the hall, I still can&amp;rsquo;t. Four Points was big and expensive, and we had, as expected, cost overruns. Due to how DebConf function, an Indian university wasn&amp;rsquo;t suitable to host a conference of this scale.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Infinity Pool at Night&#34; src=&#34;https://blog.sahilister.in/img/dc23/dc23-infinity-pool-at-night.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; Four Point&#39;s Infinity Pool at Night &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;I landed in Kochi on the first day of DebCamp on 3rd September. As usual, met Abraham first, and the better part of the next hour was spent on meet and greet. It was my first IRL DebConf so met many old friends and new folks. I got a room to myself. Abraham lived nearby and hadn&amp;rsquo;t taken the accommodation, so I asked him to join. He finally joined from second day onwards. All through the conference, room 928 became in-famous for various reasons, and I had various roommates for company. In DebCamp days, we would get up to have breakfast and go back to sleep and get active only past lunch for hacking and helping in the hack lab for the day, followed by fun late night discussions and parties.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Nilesh, Chirag and Apple at DC23&#34; src=&#34;https://blog.sahilister.in/img/dc23/dc23-nilesh-chirag-and-apple-at-dc23.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; Nilesh, Chirag and Apple at DC23 &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;The team even managed to get a press conference arranged as well, and we got an opportunity to go to Press Club, Ernakulam. Sruthi and Jonathan gave the speech and answered questions from journalists. The event was &lt;a href=&#34;https://www.apnnews.com/debconf-2023-indias-first-debian-conference-to-be-held-at-infopark/&#34;&gt;covered by media&lt;/a&gt; as well due to this.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Ernakulam Press Club&#34; src=&#34;https://blog.sahilister.in/img/dc23/dc23-ernakulam-press-club.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; Ernakulam Press Club &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;During the conference, every night the team use to have 9 PM meetings for retrospection and planning for next day, which was always dotted with new problems. Every day, we used to hijack Silent Hacklab for the meeting and gently ask the only people there at the time to give us space.&lt;/p&gt;
&lt;p&gt;DebConf, it itself is a well oiled machine. Network was brought up from scratch. Video team built the recording, audio mixing, live-streaming, editing and transcoding infrastructure on site. A gaming rig served as router and gateway. We got internet uplinks, a 1 Gbps sponsored leased line from Kerala Vision and a paid backup 100 Mbps connection from a different provider. IPv6 was added through HE&amp;rsquo;s Tunnelbroker. Overall the network worked fine as additionally we had hotel Wi-Fi, so the conference network wasn&amp;rsquo;t stretched much. I must highlight, DebConf is my only conference where almost everything and every piece of software in developed in-house, for the conference and modified according to need on the fly. Even event recording cameras, audio check, direction, recording and editing is all done on in-house software by volunteer-attendees (in some cases remote ones as well), all trained on the sideline of the conference. The core recording and mixing equipment is owned by Debian and travels to each venue. The rest is sourced locally.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Gaming Rig which served as DC23 gateway router&#34; src=&#34;https://blog.sahilister.in/img/dc23/dc23-video-team-router-gateway-setup.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; Gaming Rig which served as DC23 gateway router &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;It was fun seeing how almost all the things were coordinated over text on Internet Relay Chat (IRC). If a talk/event was missing a talkmeister or a director or a camera person, a quick text on #debconf channel would be enough for someone to volunteer. Video team had a dedicated support channel for each conference venue for any issues and were quick to respond and fix stuff.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Network information. Screengrab from closing ceremony&#34; src=&#34;https://blog.sahilister.in/img/dc23/dc23-network-screengrab.png&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; Network information. Screengrab from closing ceremony &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;It rained for the initial days, which gave us a cool weather. Swag team had decided to hand out umbrellas in swag kit which turned out to be quite useful. The swag kit was praised for quality and selection - many thanks to Anupa, Sruthi and others. It was fun wearing different color T-shirts, all designed by Abraham. Red for volunteers, light green for Video team, green for core-team i.e. staff and yellow for conference attendees.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;With highvoltage&#34; src=&#34;https://blog.sahilister.in/img/dc23/dc23-me-with-jonathon.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; With highvoltage &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;We were already acclimatized by the time DebConf really started as we had been talking, hacking and hanging out since last 7 days. Rush really started with the start of DebConf. More people joined on the first and second day of the conference. As has been the tradition, an &lt;a href=&#34;https://debconf23.debconf.org/talks/18-opening-ceremony/&#34;&gt;opening talk&lt;/a&gt; was prepared by the Sruthi and local team (which I highly recommend watching to get more insights of the process). DebConf day 1 also saw job fair,  where Canonical and FOSSEE, IIT Bombay had stalls for community interactions, which judging by the crowd itself turned out to be quite a hit.&lt;/p&gt;
&lt;p&gt;For me, association with DebConf (and Debian) started due to volunteering with video team, so anyhow I was going to continue doing that this conference as well. I usually volunteer for talks/events which anyhow I&amp;rsquo;m interested in. Handling the camera, talkmeister-ing and direction are fun activities, though I didn&amp;rsquo;t do sound this time around. Sound seemed difficult, and I didn&amp;rsquo;t want to spoil someone&amp;rsquo;s stream and recording. Talk attendance varied a lot, like in Bits from DPL talk, the hall was full but for some there were barely enough people to handle the volunteering tasks, but that&amp;rsquo;s what usually happens. DebConf is more of a place to come together and collaborate, so talk attendance is an afterthought sometimes.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Audience in highvoltage&#39;s Bits from DPL talk&#34; src=&#34;https://blog.sahilister.in/img/dc23/dc23-bits-from-dpl-audience.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; Audience in highvoltage&#39;s Bits from DPL talk &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;I didn&amp;rsquo;t submit any talk proposals this time around, as just being in the orga team was too much work already, and I knew, the talk preparation would get delayed to the last moment and I would have to rush through it.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Enrico&#39;s talk&#34; src=&#34;https://blog.sahilister.in/img/dc23/dc23-enricos-talk.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; Enrico&#39;s talk &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;From Day 2 onward, more sponsor stalls were introduced in the hallway area. Hopbox by Unmukti , MostlyHarmless and Deeproot (joint stall) and FOSEE. MostlyHarmless stall had nice mechanical keyboards and other fun gadgets. Whenever I got the time, I would go and start typing racing to enjoy the nice, clicky keyboards.&lt;/p&gt;
&lt;p&gt;As the DebConf tradition dictates, we had a Cheese and Wine party. Everyone brought in cheese and other delicacies from their region. Then there was yummy Sadya. Sadya is a traditional vegetarian Malayalis lunch  served over banana leaves. There were loads of different dishes served, the names of most I couldn&amp;rsquo;t pronounce or recollect properly, but everything was super delicious.&lt;/p&gt;
&lt;p&gt;Day 4 was day trip and I chose to go to Athirappilly Waterfalls and Jungle safari. Pictures would describe the beauty better than words. The journey was bit long though.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Athirappilly Falls&#34; src=&#34;https://blog.sahilister.in/img/dc23/dc23-athirappilly-falls.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; Athirappilly Falls &lt;/i&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Pathu&#34; src=&#34;https://blog.sahilister.in/img/dc23/dc23-day-trip-1.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Pathu&#34; src=&#34;https://blog.sahilister.in/img/dc23/dc23-day-trip-2.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Tea Gardens&#34; src=&#34;https://blog.sahilister.in/img/dc23/dc23-tea-gardens.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; Tea Gardens &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;Late that day, we heard the news of Abraham gone missing. &lt;a href=&#34;https://blog.sahilister.in/2023/09/abraham-raji/&#34;&gt;We lost Abraham.&lt;/a&gt; He had worked really hard all through the years for Debian and making this conference possible. Talks were cancelled for the next day and Jonathan addressed everyone. We went to Abraham&amp;rsquo;s home the next day to meet his family. Team had arranged buses to Abraham&amp;rsquo;s place. It was an unfortunate moment that I only got an opportunity to visit his place after he was gone.&lt;/p&gt;
&lt;p&gt;Days went by slowly after that. The last day was marked by a small conference dinner. Some of the people had already left. All through the day and next, we kept saying goodbye to friends, with whom we spent almost a fortnight together.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Athirappilly Falls&#34; src=&#34;https://blog.sahilister.in/img/dc23/dc23-everyone-seeing-up-group-photo.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; Group photo with all DebConf T-shirts chronologically &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;This was 2nd trip to Kochi. Vistara Airway&amp;rsquo;s UK886 has become the default flight now. I have almost learned how to travel in and around Kochi by Metro, Water Metro, Airport Shuttle and auto. Things are quite accessible in Kochi but metro is a bit expensive compared to Delhi. I left Kochi on 19th. My flight was due to leave around 8 PM, so I had the whole day to myself. A direct option would have taken less than 1 hour, but as I had time and chose to take the long way to the airport. First took an auto rickshaw to Kakkanad Water Metro station. Then sailed in the water metro to Vyttila Water Metro station. Vyttila serves as intermobility hub which connects water metro, metro, bus at once place. I switched to Metro here at Vyttila Metro station till Aluva Metro station. Here, I had lunch and then boarded the Airport feeder bus to reach Kochi Airport. All in all, I did auto rickshaw &amp;gt; water metro &amp;gt; metro &amp;gt; feeder bus to reach Airport. I was fun and scenic. I must say, public transport and intermodal integration is quite good and once can transition seamlessly from one mode to next.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Kochi Water Metro&#34; src=&#34;https://blog.sahilister.in/img/dc23/dc23-kochi-water-metro.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; Kochi Water Metro &lt;/i&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Scenes from Kochi Water Metro&#34; src=&#34;https://blog.sahilister.in/img/dc23/dc23-kochi-water-metro-scenery.jpg&#34;&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Scenes from Kochi Water Metro&#34; src=&#34;https://blog.sahilister.in/img/dc23/dc23-scenes-from-water-metro.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; Scenes from Kochi Water Metro &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;DebConf23 served its purpose of getting existing Debian people together, as well as getting new people interested and contributing to Debian. People who came are still contributing to Debian, and that&amp;rsquo;s amazing.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;Streaming video stats&#34; src=&#34;https://blog.sahilister.in/img/dc23/dc23-streaming-video-screengrab.png&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; Streaming video stats. Screengrab from closing ceremony &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;The conference wasn&amp;rsquo;t without its fair share of troubles. There were multiple money transfer woes, and being in India didn&amp;rsquo;t help. Many thanks to multiple organizations who were proactive in helping out. On top of this, there was conference visa uncertainty and other issues which troubled visa team a lot.&lt;/p&gt;
&lt;p&gt;Kudos to everyone who made this possible. Surely, I&amp;rsquo;m going to miss the name, so thank you for it, you know how much you have done to make this event possible.&lt;/p&gt;
&lt;p&gt;Now, DebConf24 is scheduled for Busan, South Korea, and work is already in full swing. As usual, I&amp;rsquo;m helping with the fundraising part and plan to attend too. Let&amp;rsquo;s see if I can make it or not.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; alt=&#34;DebConf23 Group Photo&#34; src=&#34;https://blog.sahilister.in/img/dc23/dc23-group-photo-small.jpg&#34;&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; DebConf23 Group Photo.  &lt;a href=&#34;https://blog.sahilister.in/img/dc23/dc23-group-photo-small.jpg&#34;&gt;Click to enlarge.&lt;/a&gt; &lt;br&gt; Credits - &lt;a href=&#34;https://aigarius.com/blog/2023/09/17/debconf23-photos/&#34;&gt;Aigars Mahinovs&lt;/a&gt;&lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;In the end, we kept on saying, no DebConf at this scale would come back to India for the next 10 or 20 years. It&amp;rsquo;s too much trouble to be frank. It was probably the peak that we might not reach again. I would be happy to be proven wrong though :)&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Lap 24</title>
      <link>https://blog.sahilister.in/2023/10/lap-24/</link>
      <pubDate>Sun, 08 Oct 2023 06:38:21 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2023/10/lap-24/</guid>
      <description>&lt;p&gt;Twenty-four is a big number. More than one/fourth (or more) of my life is behind me now. At this point, I truly feel like I have become an adult; mentally and physically. Another year seem to have gone by quickly. I still vividly remember writing &lt;a href=&#34;https://blog.sahilister.in/2022/10/23-and-counting/&#34;&gt;23 and Counting&lt;/a&gt; and here I’m writing the next one so soon.&lt;/p&gt;
&lt;p&gt;Probably the lowest I felt ever on my birthday; with loss of Abraham and on the other hand, medical issues with a dear one. Didn’t even felt like birthday was almost here. The loss of Abraham, taught me to care for people more and meet cherish everyone. I’m grateful for all the people who supported and cared for me and others during times of grief when things went numb. Thank you!&lt;/p&gt;
&lt;p&gt;Also, for the first time ever, I went to office on my birthday. This probably would become a norm in coming years. Didn’t felt like doing anything, so just went to office. The cake, wishes and calls kept coming in throughout the day. I’m grateful for the all people around for remembering :)&lt;/p&gt;
&lt;p&gt;This year marked my first “official” job switch where I moved from &lt;a href=&#34;https://blog.sahilister.in/2023/04/the-end-of-my-trip/&#34;&gt;MakeMyTrip to Unmukti&lt;/a&gt; as a GNU/Linux Network Systems engineer (that’s a mouthful of a job role, I know) where I do anything and everything ranging from system admin, network engineering, a bit of social media, chronicling stuff on &lt;a href=&#34;https://blog.hopbox.net&#34;&gt;company blog&lt;/a&gt; and bringing up new applications as per requirement. Moving from MMT to Unmukti was a big cultural shift. From a full-blown corporate with more than 3 thousand employees to a small 5-person team. People still think I work for a startup on hearing the low head count, though Unmukti is a 13 year old organization. I get the freedom to work at my own pace and put my ideas in larger technical discussions, while also actively participating in the community, which I’m truly grateful of. I go full geek here and almost everyone here is on the same spectrum, so things technical or societal discussions just naturally flow.&lt;/p&gt;
&lt;p&gt;The months of August-September again marked the Great Refresh. For reasons unforeseen, I have had to pack my stuff again and move, albeit to just next door for now, but that gave me the much need opportunity to sift through my belongings here. As usual, I threw a boatload of stuff which was of no use and/or just hogging space. My wardrobe cupboard finally got cleaned and sorted, with old and new clothes getting (re)discovered. The Refresh is always a pain with loads of collating stuff in carry worthy bags and hauling stuff but as usual, there’s nothing else I can do other than just pack and move.&lt;/p&gt;
&lt;p&gt;This year also culminated our four plus years of work for organizing annual Debian conference, DebConf to India. DebConf23 happened in Kochi, Kerala from 3rd September to 17th September (including DebCamp). First concrete work to bring conference to India was done &lt;a href=&#34;htttps://raju.dev&#34;&gt;Raju Dev&lt;/a&gt; who made the first bid during DebConf18 in Hsinchu, Taiwan. We lost but won during the next year bid at DebConf19 Curitiba, Brazil in 2019. I joined the efforts after meeting the team online after DebConf20. Initially started with the publicity team, but we didn’t need much publicity for event, I was later asked to join sponsors/fundraising team. That turned out to be quite an experience. Then the conference itself turned to be a good experience. More on that in an upcoming DebConf23 blog post, which will come eventually.&lt;/p&gt;
&lt;p&gt;After seeing how things work out in Debian in 2020, I had the goal to become a Debian Developer (DD) before DebConf23, which gave me almost three years to get involved and get recognized to become a DD. I was more excited to grab sahil AT debian.org, a short email with only my name and no number of characters after it. After, quite a while, I dropped the hope of become a DD because I wasn’t successful in my attempts to meaningfully package and technically contribute to the project. But people in Debian India later convinced me that I have done enough to become a Debian Developer, non uploading, purely by showing up and helping around all for the Debian conferences. I applied and got sponsored (i.e. supported) for my request by srud and Praveen. Finally, on 23rd Feb, I officially became part of Debian project as 14th (at the moment) &lt;a href=&#34;https://blog.sahilister.in/2023/02/a-debian-developer-non-uploading-now/&#34;&gt;Debian Developer&lt;/a&gt; from India. Got sahil AT debian.org too :) For some grace, I also became a DD before DebConf23. Becoming a DD didn’t change anything much though, I still believe, it might have helped secure me a job though.&lt;/p&gt;
&lt;p&gt;Also, worth mentioning is increased interest in OpenStreetMap (OSM) mapping. I heavily mapped this year and went around for mapathon-meetups too. One step towards a better OSM and more community engagement around it.&lt;/p&gt;
&lt;p&gt;Looking back at my blog, this year around, it seems mostly dotted with Debian and one OSM post. Significant shift from the range of topics I use to write about in the past year but blogging this year wasn’t a go-to activity. Other stuff kept me busy.&lt;/p&gt;
&lt;p&gt;Living in Gurugram has shown me many facades of life from which I was shielded or didn’t come across earlier. It made me realize all the privileges which has helped me along the way, which became apparent while living “almost” alone here and managing thing by oneself.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Abraham Raji</title>
      <link>https://blog.sahilister.in/2023/09/abraham-raji/</link>
      <pubDate>Sun, 24 Sep 2023 14:21:13 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2023/09/abraham-raji/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/abraham-1.jpg&#34; alt=&#34;Abraham with Polito&#34;&gt;&lt;/p&gt;
&lt;p&gt;Man, you&amp;rsquo;re no longer with us, but I am touched by the number of people you have positively impacted. Almost every DebConf presentations by locals, I saw after you carried how you were instrumental in bringing them there. How you were a dear friend and brother.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s a weird turn of events, that you left us during one thing we deeply cared and worked towards making possible since the past 3 years, together. Who would have known, that &amp;ldquo;Sahil, I&amp;rsquo;m going back to my apartment tonight&amp;rdquo; and casual bye post that would be the last conversation we ever had.&lt;/p&gt;
&lt;p&gt;Things were terrible after I heard the news. I had a hard time convincing myself to come see you one last time during your funeral. That was the last time I was going to get to see you, and I kept on looking at you. You, there in front of me, all calm, gave me peace. I&amp;rsquo;ll carry that image all my life now. Your smile will always remain with me. Who&amp;rsquo;ll meet and receive me on the door at almost every Debian event (just by sheer co-incidence?). Who&amp;rsquo;ll help me speak out loud about all the Debian shortcomings (and then discuss solutions, when sober :)).&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/abraham-2.jpg&#34; alt=&#34;Abraham and me during Debian discussion in DebUtsav Kochi&#34;&gt;&lt;/p&gt;
&lt;p&gt;It was a testament of the amount of time we had already spent together online, that when we first met during MDC Palakkad, it didn&amp;rsquo;t feel we&amp;rsquo;re physically meeting for the first time. The conversations just continued.
Now &lt;a href=&#34;https://www.youtube.com/watch?v=rtOvBOTyX00&#34;&gt;this song&lt;/a&gt; is associated with you now due to your speech during MiniDebConf Palakkad dinner. Hearing this keeps on reminding me of all the times we spent together chilling and talking community (which you cared deeply about). IG now we can&amp;rsquo;t stop caring for the community, because your energy was contagious.&lt;/p&gt;
&lt;p&gt;Now, I can&amp;rsquo;t directly dial your number to listen - &amp;ldquo;Hey Sahil! What&amp;rsquo;s up?&amp;rdquo; from the other end, or &amp;ldquo;Tell me, tell me&amp;rdquo; on any mention of the problem. Nor would I be able to send ref of usage of &lt;a href=&#34;https://wiki.abrahamraji.in/simple-packaging-tutorial.html&#34;&gt;Debian packaging guide&lt;/a&gt; in the wild. You already know about that text of yours. How many people that guide has helped with getting started with packaging. Did I ever tell you, I too got my first start with packaging from there. Hell, I started looking up to you from there, even before we met or talked. Now, I missed telling you, I was probably your biggest fan whenever you had the mic in hand and started speaking. You always surprised me all the insights and idea you brought and would keep on impressing me for someone who was just my age but was way more mature.&lt;/p&gt;
&lt;p&gt;Reading recent toots from Raju Dev made me realize, how much I loved your writings. You wrote
&lt;a href=&#34;https://abrahamraji.in/post/how-future-will-remember-us/&#34;&gt;How the Future will remember Us&lt;/a&gt;,  &lt;a href=&#34;https://abrahamraji.in/right/&#34;&gt;Doing what&amp;rsquo;s right&lt;/a&gt; and &lt;a href=&#34;https://abrahamraji.in/post/&#34;&gt;many more&lt;/a&gt;. The level of depth in your thought was unparalleled. I loved reading those, that&amp;rsquo;s why I kept pestering you to write more, which you slowly stopped. Now I fully understand why though, you were busy, really busy helping people out or just working for making things better. You were doing Debian, upstream projects, web development, designs, graphics, mentoring, evangelist while being the go-to person for almost everyone around. Everyone depended on you, because you were too kind to turn down anyone.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/abraham-3.jpg&#34; alt=&#34;Abraham and me just chilling around. We met for the first time there&#34;&gt;&lt;/p&gt;
&lt;p&gt;Man, I still get your spelling wrong  :) Did I ever tell you that? That was the reason, I used to use AR instead.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;ll be missed and will always be part of our conversations, because you have left a profound impact on me, our friends, Debian India and everyone around. See you! the coolest man around.&lt;/p&gt;
&lt;p&gt;In memory:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=6n3_sabZy_w&#34;&gt;Farewell Abraham video&lt;/a&gt; by Vysakh Premkumar&lt;/li&gt;
&lt;li&gt;Tails project dedicating &lt;a href=&#34;https://tails.net/news/version_5.17.1/&#34;&gt;5.17.1 release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hopscotch team dedicating &lt;a href=&#34;https://github.com/hoppscotch/hoppscotch/releases/tag/2023.8.1&#34;&gt;2023.8.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Athul dedicating &lt;a href=&#34;https://github.com/athul/waka-readme/releases/tag/v0.2.5&#34;&gt;0.2.5 release&lt;/a&gt; of waka-readme&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.debian.org/News/2023/20230914&#34;&gt;Debian project&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PS - Just found you even had a &lt;a href=&#34;https://www.youtube.com/@abrahamraji3699&#34;&gt;Youtube channel&lt;/a&gt;, you one heck of a talented man.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Debutsav Kochi 2023</title>
      <link>https://blog.sahilister.in/2023/06/debutsav-kochi-2023/</link>
      <pubDate>Sun, 25 Jun 2023 15:37:40 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2023/06/debutsav-kochi-2023/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://kochi.debutsav.in/&#34;&gt;DebUtsav&lt;/a&gt; Kochi 2023 was held on June 17th, 2023, at Model Engineering College, Thrikkakara, Kochi. This was organized by the team at FOSSMEC with help from &lt;a href=&#34;https://abrahamraji.in/&#34;&gt;Abraham Raji&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I first heard about DebUtsav when, in our DebConf India team meeting, Abraham, mentioned that a college in Kochi wants to host a Debian event. As most folks were already engaged in DebConf related stuff, it was mostly he who helped and guided them for the event. Though, in the meeting, Abraham and Kiran joked around on the line that we might have someone coming from Gurugram (referring to me). Back then, I had no plans of attending the event; I didn&amp;rsquo;t know how things would change eventually, and I, along with &lt;a href=&#34;https://ravidwivedi.in/&#34;&gt;Ravi&lt;/a&gt; were going to attend the event eventually and speak at it too.&lt;/p&gt;
&lt;p&gt;The concept of DebUtsav was conceived in the Debian India community on the premise that it&amp;rsquo;s not possible to have all talks directly related to Debian and/or Free Software. The first of DebUtsav&amp;rsquo;s was also held in Kochi in 2017. Later, DebUtsav Goa and Delhi also took place. You can check out DebUtsav website archives &lt;a href=&#34;https://gitlab.com/debutsav&#34;&gt;here&lt;/a&gt;. Looking at this archive, it seems DebUtsav predates DebUtsav Kochi 2017. Maybe someone who attended those can shed some more light on the origin.&lt;/p&gt;
&lt;p&gt;Coming back to DebUtsav Kochi 2023, seeing that the event is on a Saturday and remembering how fun Debian IRL events are, I eventually decided to attend the conference anyhow. I asked Ravi if he wanted to join, and he agreed. On learning about this later, Abraham called and asked if I could give a talk on the Debian community, as I actually came through the community route, doing community stuff to become a Debian Developer. I agreed without much thought (I usually agree to all speaking engagements at Debian events somehow; I speak too much sometimes :)), as I was in train then. Eventually, I had the (in my mind, brilliant) idea to name my talk &amp;ldquo;How I Became a Debian Developer, and you could too&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;As usual, Ravi and I met directly at the Delhi airport, from where we had our Kochi flight. Due to busy days preceding the conference, I hadn&amp;rsquo;t fully prepared my presentation uptil the day of the conference. We landed a day before in Kochi, but I was too tired to be up for completing the presentation, so I asked Ravi to wake me up at 6 in the morning, which he indeed did. I managed to cobble together the final presentation and structure in 1.3 hours. Then we walked to the venue, which was some 900 meters from our hotel, where we met my speaker POC, Arjun, who was a first-year and core team member of FOSSMEC there. He helped me with various things during the conference, for which I&amp;rsquo;m grateful. Then I got busy meeting old and new friends.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/standee-from-kurian.jpg&#34; alt=&#34;Event standee&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;This was my debut on an event standee.&lt;/i&gt;
    &lt;br&gt;
    &lt;i&gt;Image stolen from &lt;a href=&#34;https://kurianbenoy.com/posts/2023/debutsav_talk/&#34;&gt;Kurian&#39;s blog&lt;/a&gt; :P &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;The conference started with a lamp lighting ceremony, followed by a panel discussion on the topic &amp;ldquo;Introduction to Debian: Exploring the Foundations of Open Source.&amp;rdquo; . Abraham, Abhijit, Bilal and I were on the panel with a moderator. In the first segment, an already prepared set of questions was posed to us, which turned out a bit formal. The team had arranged for the audience to pose their own questions, which were in turn displayed on screen. In the next segment, the moderator helped us go through the questions, which ranged from how stable releases are managed to opinions on Snap and AppImage to what desktop environment we run.  This turned out to be an interesting discussion. Following this, attendees moved to their respective talk venues. I had my talk in set 1, so I went there. My talk was preceded by Andrew Bastin&amp;rsquo;s talk on &amp;ldquo;A journey in the world of sync systems&amp;rdquo;. He presented the talk like a story, where he mentioned the name of the project first and walked us through the journey before concluding with revealing the full name, which directly correlated with the journey. Andrew did a great talk, filled with quirky anecdotes, humor, and technical facts that essentially held my attention throughout the time he was speaking at the dias. I really looked up to his delivery and the ease with which he gave the talk. It essentially made me nervous for my own talk. His talk gave me multiple pointers to work upon for improving my talks. Thanks, Andrew.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/debutsav-kochi-panel.jpg&#34; alt=&#34;Panel discussion&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;Abraham and me during the panel discussion &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/debutsav-kochi-talk.jpg&#34; alt=&#34;My talk&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
	&lt;i&gt;Me presenting my DD journey&lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;Next came my talk, which turned out better than I had anticipated, and I did manage to speak for 30 minutes straight without knowing as I didn&amp;rsquo;t have any clock in sight. My talk, &amp;ldquo;How I became a Debian Developer, and &lt;em&gt;you could too&lt;/em&gt;&amp;rdquo; chronicled my journey of becoming a Debian Developer, non uploading. When Abraham called me to present a talk on the Debian community, I thought about how the Debian community functions. But as I gave the topic some thought, I found that just telling the audience what and how things work on Debian would be uninteresting. Making a story about it would spice things up a little. Then the idea of telling my journey and connecting it with how things are done in the Debian community came to me, which I formulated into the talk. My talk was followed by a small Debian quiz and then &lt;a href=&#34;https://kurianbenoy.com/&#34;&gt;Kurian&lt;/a&gt;&amp;rsquo;s talk on &lt;a href=&#34;https://kurianbenoy.com/posts/2023/debutsav_talk/&#34;&gt;&amp;ldquo;AI with Malayalam Computing&amp;rdquo;&lt;/a&gt; which was dense with facts and AI, which isn&amp;rsquo;t my area.&lt;/p&gt;
&lt;p&gt;The good folks at FOSSMEC sent some pictures as well, so I have more photos than usual to share here.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/debutsav-kochi-group-photo.jpg&#34; alt=&#34;Group photo&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; DebUtsav Kochi attendees group photo. 
    &lt;a href=&#34;https://blog.sahilister.in/img/debutsav-kochi-group-photo.jpg&#34;&gt;Click to enlarge&lt;/a&gt;
    &lt;/i&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/debutsav-kochi-fossmec-volunteer-team.jpg&#34; alt=&#34;FOSSMEC volunteer team behind DebUtsav&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;FOSSMEC volunteer team behind DebUtsav &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;This time around, we did manage to roam around the city for some sightseeing. We managed to cover Marine Drive, Kochi Water Metro, Fort Kochi and Jew Town, which were beautiful and colorful. Going around Kochi Water Metro, with large windows through the backwaters, was real fun. I had never thought a metro-like service could be implemented for daily commutes; it would be a real good use of the water bodies of a city built around water.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/kochi-jew-town-street.jpg&#34; alt=&#34;Jew Town Kochi&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; A Street in Jew Town, Kochi &lt;/i&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/kochi-water-metro.jpg&#34; alt=&#34;Kochi Water Metro&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt; Kochi Water Metro &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;Overall, it was a fun and productive trip. I also got to know the geography of Kochi before coming back here for DebConf.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Openstreetmap Mapathon in Chandni Chowk Delhi</title>
      <link>https://blog.sahilister.in/2023/06/openstreetmap-mapathon-in-chandni-chowk-delhi/</link>
      <pubDate>Fri, 16 Jun 2023 00:15:47 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2023/06/openstreetmap-mapathon-in-chandni-chowk-delhi/</guid>
      <description>&lt;p&gt;OpenStreetMap (OSM) is a free, open geographic database which is community maintained and directly or indirectly used by corporations and common folks alike. It&amp;rsquo;s mostly used by privacy centric users, who don&amp;rsquo;t want to use Google Maps. I&amp;rsquo;m an avid fan of OpenStreetMap since 2020 and love tracing roads and adding missing areas for it. The idea to have a mapathon in &lt;a href=&#34;https://www.openstreetmap.org/node/3268564739&#34;&gt;Chandni Chowk&lt;/a&gt; came from seeing many unmapped banks and ATMs there. I had never attended an OSM mapathon before and had no idea how things work out in one other than just getting people together and map to improve Chandni Chowk map. Had this discussion with &lt;a href=&#34;https://www.openstreetmap.org/user/contrapunctus&#34;&gt;&lt;em&gt;contrapunctus&lt;/em&gt;&lt;/a&gt; (Kashish) when we first met. &lt;em&gt;contrapunctus&lt;/em&gt; has been mapping public transport (and other stuff) in Delhi since a very long time. He&amp;rsquo;s the reason, we have most of the Delhi-NCR bus routes in OSM in navigable state. &lt;em&gt;contra&lt;/em&gt; and I, met and deliberated on how we&amp;rsquo;ll organize this while mapping &lt;a href=&#34;https://www.openstreetmap.org/relation/3709872&#34;&gt;Nehru Place&lt;/a&gt;, He also had some experience teaching newcomers OSM mapping due to his present work.&lt;/p&gt;
&lt;p&gt;It was decided that the mapathon cum meetup would be held on 11th June with venue being &lt;a href=&#34;https://www.openstreetmap.org/way/80940704&#34;&gt;Kacha Bagh&lt;/a&gt;. Invites were sent on OSM-IN channels, mailing list and other free software aligned places. 11 folks showed interest (which was 8 more than we anticipated). After, Ravi and I showed up at the park. We got to know that the park remain close on Sundays, which was a bummer. We scrabbled to find an alternate meetup spot, as we wanted shade for the initial hour or so to sit and know all the attendees and zeroed in on &lt;a href=&#34;https://www.openstreetmap.org/way/80940709&#34;&gt;Company Bagh&lt;/a&gt;, which was not the most ideal place to sit and talk due to multiple cricket matches going around. In total 6 folks showed up. Ravi, &lt;em&gt;contrapunctus&lt;/em&gt;, Kuber, Hari, &lt;em&gt;muzirian&lt;/em&gt; (Kelvin) and me. We had a small meet and greet and then discussed our motivations for using and contributing to OSM. Then &lt;em&gt;contra&lt;/em&gt; did an introductory session on contributing through Vespucci. I used to find Vespucci too complicated and use to stick to StreetComplete and OSMand for my mobile contributions. Post the session, got a basic idea of how things work out in Vespucci. Then we proceeded to the main street of Chandni Chowk together for mapathon. We divided who would do what nodes. I started added surveillance cameras, banks and ATMs, Ravi started added dustbins, muzirian did mostly shop, while &lt;em&gt;contra&lt;/em&gt;, Hari and Kuber mostly did freestyle edits. We mapped for almost an hour and did around 500 meters covering streets from Company Bagh till &lt;a href=&#34;https://www.openstreetmap.org/relation/12283238&#34;&gt;Fathepuri Masjid&lt;/a&gt;. Though we weren&amp;rsquo;t able to cover more ground, it is anyhow progress towards a better OSM.&lt;/p&gt;
&lt;p&gt;It was a fun and interesting meetup, and we plan to continue holding these mapathon-meetups in various parts of Delhi.&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/openstreetmap-mapping-party-chandni-chowk-delhi.jpg&#34; alt=&#34;Group photo&#34;&gt;
&lt;i&gt; Mapathon participants group photo.  &lt;a href=&#34;https://blog.sahilister.in/img/openstreetmap-mapping-party-chandni-chowk-delhi.jpg&#34;&gt;Click to enlarge&lt;/a&gt; &lt;br&gt;From left - Kuber, Hari, me, muzirian, Ravi and contrapunctus. &lt;/i&gt;&lt;/p&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Debian India Online Bookworm Release Party</title>
      <link>https://blog.sahilister.in/2023/06/debian-india-online-bookworm-release-party/</link>
      <pubDate>Wed, 14 Jun 2023 08:45:24 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2023/06/debian-india-online-bookworm-release-party/</guid>
      <description>&lt;p&gt;As the tradition dictates, we at Debian India organised an online release party for the next stable release of Debian, codenamed bookworm on 10th June. The initial discussion started a while back, but we had a planning meeting just 3–4 days before the release party date. As most of us were busy with DebConf or DebUtsav Kochi stuff, we didn&amp;rsquo;t have time to explore new ideas for events . The consensus was to have a technical overview of changes, a Debian trivia quiz and ending with SuperTuxKart gaming event. As we used to keep discussion improvements to Debian, we decided to hold a discussion on What Debian lacks/need to improve. This was later taken up by Akshay. A call for proposal was sent along with announcement on debian-dug-in mailing lists and Debian India channels, though no one took that offer.&lt;/p&gt;
&lt;p&gt;As Jitsi usually fumbles with large crowds with camera on. We choose to have the party on BigBlueButton. Like last year, Abhas generously supported us with a room on his BigBlueButton instance, and we created a redirect behind 12.debian.org.in to this room.&lt;/p&gt;
&lt;p&gt;On 10th, the release party started around 7:45 PM IST. As usual, the mood was light and fun. Around 16 people joined the party at it&amp;rsquo;s highest. &lt;a href=&#34;https://abrahamraji.in/&#34;&gt;Abraham&lt;/a&gt; started with a technical overview covering changes in bookworm. A major highlight for me was the inclusion of non-free firmware on official ISOs, which would essentially ease one of the biggest pain point for new user on-boarding. Now, I would be able to directly recommend Debian to new users, rather than Linux Mint, due to getting the firmware right. Sidenote, I too personally struggled with getting the drivers right for almost a month when I started using Debian way back in 2020. Coming back, technical overview was followed by Debian trivia by &lt;a href=&#34;https://nm.debian.org/person/anupa/&#34;&gt;Anupa&lt;/a&gt;. Initially I was confident about the quiz, though the questions Anupa brought were harder than I had anticipated and taught quite a few things about Debian. This was followed by &lt;a href=&#34;https://asd.learnlearn.in/&#34;&gt;Akshay&lt;/a&gt;&amp;rsquo;s &amp;ldquo;Discussion - What Debian lacks/need to improve&amp;rdquo; session. Akshay, being an Arch user, had some insights to highlight where Debian can improve. He had collected statements and walked us through the viewpoints. Meanwhile, Abraham also gave a quick overview of a draft re-design for debian.org.in  website to ease user onboarding, which he mentioned we lack. Then we took the group photo and moved onto the SuperTuxKart gaming party, which was fun as always. We did record the party, but I have no ETA when this would be available.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m yet to upgrade servers under my management to bookworm, as I usually wait it out a few days after a release so that teeny-tiny bugs are reported and iron-ed out and for cooling down of download mirror loads. Maintaining a Matrix instance through synapse has made me cautious about not being on the bleeding edge of new releases. Recently, also got a new perspective that with the now omni-present mix-match usage of third party repositories, waiting a little more bit for them to be up to speed with new stable would remove much of the troubles post updates.&lt;/p&gt;
&lt;p&gt;Good then, and see you in DebUtsav Kochi and/or DebConf Kochi :)&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/debian-12-release-party-group-photo.png&#34; alt=&#34;Group photo&#34;&gt;
&lt;i&gt; Goup photo. &lt;a href=&#34;https://blog.sahilister.in/img/debian-12-release-party-group-photo.png&#34;&gt;Click to enlarge&lt;/a&gt; &lt;/i&gt;&lt;/p&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>The End of My Trip</title>
      <link>https://blog.sahilister.in/2023/04/the-end-of-my-trip/</link>
      <pubDate>Thu, 13 Apr 2023 11:52:55 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2023/04/the-end-of-my-trip/</guid>
      <description>&lt;p&gt;Today marks the end of my trip at MakeMyTrip. MakeMyTrip or MMT in short was my first full time job post college. As the cliché, I feel like yesterday when Roubal told me about the opening for Quality Assurance engineer at his workplace and I reluctantly, on his insistence, submitted my CV and went through the eventual interviews. To my great surprise, I passed all the time rounds and was an MMT employee, just eleven days out of college final exams. To be frank, I still say Roubal was more confident of me passing the interviews (which were three in total), than me :D. It happened by chance or was destined to happen all along, I&amp;rsquo;m not sure. I&amp;rsquo;m happy that MMT happened, which has given me many good friends, memories and experiences to cherish.&lt;/p&gt;
&lt;p&gt;Cumulated to this day, after working here for 1 year, 10 months, 4 days, I would type &amp;ldquo;In office&amp;rdquo; for the last time. Now on, I wouldn&amp;rsquo;t get the opportunity to skip the incoming metro to grab an extra five minutes of book reading time on the station. No working in the massive and beautiful DLF Epitome tower, right next to Phase II metro station. No office lunch and post lunch walks at parking level 6 or parking level 5 or finally parking level 4 :P&lt;/p&gt;
&lt;p&gt;Maybe the move was long time coming or the opportunity in hand aggrieved it or the fear of layoffs in tech sector or maybe my thought of not regretting trying and experimenting profile switch decades from now made me do it. MMT was the first company I started with as a full time employee right after college. It made me understand the corporate world, the way it functions. It made me realize that corporate is one large college project (albeit with folks with more experience) working towards the common project submission under different categories.&lt;/p&gt;
&lt;p&gt;Letting folks know that I have taken the next opportunity, and we wouldn&amp;rsquo;t be seeing each other daily, was harder than even filing my notice. The feeling of telling them and seeing them sad was heart-wrenching. This kept on happening till today.&lt;/p&gt;
&lt;p&gt;My story at MMT wouldn&amp;rsquo;t be complete without mention of a few folks who I look upto and/or loved hanging around. This whole thing wouldn&amp;rsquo;t happened lest Roubal hadn&amp;rsquo;t referred (and encouraged) me to the job when I was a bit helpless with direction I would take in terms of professional life. Being here helped me grow and find stuff I like and would like to pursue further and gave the financial stability along the way, so thanks man! I cherish your friendship a lot; since we met in first year of college 6 year back (man! We know each other since 2017, that&amp;rsquo;s long :D). I started with Desktop/PWA team in MMT, and Vidit helped me stand on my feet, patiently guiding me through how stuff work, within and without company. We eventually became roommates when we moved to Gurugram, and then I learned a whole different aspect from you on how to live independently. It was my first time living away from home and you being there helped ease the transition a lot. Next was Muskan, who I usually text starting with &lt;em&gt;arey muskan&lt;/em&gt;. Muskan you&amp;rsquo;re a strong woman, aggressive and composed when required and fun to be to talk to. Never had any doubt around your abilities to handle situations when I usually fumble and didn&amp;rsquo;t know how to manage the situation. Our talks (in office and around) are always fun, and you have more potential than you realize. Also, you being the first person and know about my decisions to move forward with this opportunity. (man now that I&amp;rsquo;m writing, I&amp;rsquo;m feeling I have so much to say to folks).&lt;/p&gt;
&lt;p&gt;Ab baat karte he Digi sir ki, Digivijay sir se sir bolna sikha :D. It feels good (not sure why) sometime using sir saluations with friends. Had hell lots of discussions, which I&amp;rsquo;m sure I couldn&amp;rsquo;t have with anyone else, with you. &lt;em&gt;Fun ki paribasha ho sir aap&lt;/em&gt;.  Learned how to enjoy life with you (and partying hard). We need to meet soon na. Then came Aditi, college junior from my own college. Now, she being two year younger always made me feel like an  elder brother to her. How can we forget all the dance moments we shared. Going to miss those a lot. Only few folks can match my dance stamina, na :D. No doubt, you&amp;rsquo;re mature, and I have high hopes from you.&lt;/p&gt;
&lt;p&gt;Next came my folks in &lt;em&gt;Kitaabe&lt;/em&gt;. I never did share such passionate group around books ever, and the impromptu decision to form &lt;em&gt;Kitaabe&lt;/em&gt; was for the best. Folks here became my go-to folks for arcades, movies, parties, trips and  formost books; loads of book exchanges and discussions. Special shoutout to A Man Called Ove by Fredrik Backman, which started it all, which almost all of us devoured one after another by passing the copy.&lt;/p&gt;
&lt;p&gt;Telling Aviral and Mohita that I&amp;rsquo;m leaving, was probably the hardest amongst the lot. You both know why. We started connecting more towards the end of my period here, which was sad becuase we could have way more fun if we had connected and known each other better, earlier. Aviral, I just love the conversation we share and I can&amp;rsquo;t thank you enough for all the food for thoughts and expanding my worldview, it&amp;rsquo;s been a while since I had these kinds of conversation with someone, questioning my own biases and thoughts on a deeper level, which I always feel the world lack on many levels. I&amp;rsquo;m probably the biggest fan of your writings and word play (in good sense). I couldn&amp;rsquo;t ever match the word usage and the beautiful sentences that came out of those words ever, even now when I have been doing this since almost three years on this blog itself. Looking forward to hearing your thoughts (in written), on your blog. Mohita ji, you are quite senior to us, about 47 years IG :P. Just kidding, 78 is the right age gap :D. But we had lots of fun teasing you on this. You were a guiding person in the chaos(es) we faced, which we couldn&amp;rsquo;t even comprehend, thanks a lot for this. I&amp;rsquo;m always amazed at your knowledge, speaking truth to superiors and hunger to learn and grow.&lt;/p&gt;
&lt;p&gt;In later part of stint here, I shifted to Kartikeya boi&amp;rsquo;s team when my notice period started and boi o boi, he&amp;rsquo;s one hell of an optimistic and humorous person, inserting a punchline everywhere make the even serious conversation sound like fun little banters. And Ankur, the person who never says no to Gol Gappa outings (though spicy Gol Gappas are always better, sweet bad), someone matching my Gol Gappa appetite. Don&amp;rsquo;t know why our Metro, public transport and civic infrastructure talks keep coming to my mind while writing about you (which too I can talk to very few folks about). Lastly Shivam sir, we shared less time together due to your marriage and then my eventual team change, but your experience and strong opinion for how things should be around workplace helped me orient stuff.&lt;/p&gt;
&lt;p&gt;A TED talk, I listened to a while back, by a Harvard researcher on the secret to long life is human relationships. Being on notice period and realizing the connect I shared with folks genuinely made a realize how happy they made me feel. I cherish those relationships, no longer co-workers but friends.  All in all, I would hope for the best for all of you and only suggest to experiment. I have learned how monotonous life is, and how we can radically change it with experimentation. Be the change. That is my two cents for you all.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/dlf_epitome_tower.jpg&#34; alt=&#34;DLF Epitome Tower&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;
    DLF Epitome Tower, as seen from DLF Phase II metro station
    &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;In conclusion, henceforth whenever I&amp;rsquo;ll pass the Epitome tower or someone mentions MMT, I&amp;rsquo;ll have the good feeling that I use to work there. Would I miss my collegues, no! because those who matter would still be in touch. I would miss the environment, the times together with those mates and everything that came out of those moments.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: The sticker on my Mac isn&amp;rsquo;t from an anime, it&amp;rsquo;s the logo for Debian Project, which I&amp;rsquo;m associated with since a while.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>A Debian Developer non uploading now</title>
      <link>https://blog.sahilister.in/2023/02/a-debian-developer-non-uploading-now/</link>
      <pubDate>Mon, 27 Feb 2023 00:17:55 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2023/02/a-debian-developer-non-uploading-now/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/phase-3-metro-station.jpg&#34; alt=&#34;Office buildings&#34;&gt;&lt;/p&gt;
&lt;p&gt;I was standing on an elevated metro platform, looking at high rise office buildings. People were walking in the small park nearby, few were working in the office, unbeknown to the one event that I have been actively looking forward to. These high rises office spaces and people returning from work, again made me realize how small I am. The thought that I&amp;rsquo;m becoming a Debian Developer (non-uploading) and none of the folks I&amp;rsquo;m looking at would ever know, wouldn&amp;rsquo;t care, was a humbling feeling.&lt;/p&gt;
&lt;p&gt;Starting with series of broken Pop!_OS and Ubuntu OS installations to one month long hit and trials to get my Debian installation right, to DebConf20 happening online, to India winning the bid to host DebConf, meeting the Debian India community, to a bunch of other events finally lead to me becoming a DD.&lt;/p&gt;
&lt;p&gt;Back in 2020, I had dreamed of becoming a Debian Developer before DebConf23 Kochi. That squarely gave me three years for becoming a DD. After almost three somewhat not so successful attempts at packaging, I had almost forgotten about that dream of becoming a DD and just went about helping in Debian conferences.&lt;/p&gt;
&lt;p&gt;Initially, I wanted to grab &lt;em&gt;sahil@debian.org&lt;/em&gt; because I&amp;rsquo;m fascinated with emails, and this was one heck of a cool email address to give around. I was also excited about getting a LWN.net subscription as an added benefit to DDs. No one covers Linux and Free Software news better than LWN.net. Though on later discussions, I got to know that outgoing email delivery on @debian.org isn&amp;rsquo;t good and LWN.net subscription benefit was trimmed down.&lt;/p&gt;
&lt;p&gt;Looking back, I&amp;rsquo;m grateful to all the people who make Debian and the surrounding community happen. They have impacted many lives (including mine) greatly positive direction. If Debian wasn&amp;rsquo;t there, I wouldn&amp;rsquo;t have got the opportunity to meet so many interesting folks and my enthusiasm to attend all these events.  Debian is one of the few tech communities where I belonged :)&lt;/p&gt;
&lt;p&gt;Going forward, now I would have a slightly bigger part to play in Debian (and with complete access to -private to keep me company ;)) I&amp;rsquo;ll continue volunteering for various community and technical activities as usual, as becoming a DD changes nothing. Tomorrow again, the sun would rise. I&amp;rsquo;ll wake up, get ready, go to work, see people and nothing would change. But there would be an inner joy that finally I have become a DD indeed :)&lt;/p&gt;
&lt;p&gt;I would like to conclude with a few lines from Robert Frost&amp;rsquo;s &lt;em&gt;Stopping by Woods on a Snowy Evening&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&amp;rsquo;..The woods are lovely, dark and deep,&lt;/em&gt; &lt;br&gt;
&lt;em&gt;But I have promises to keep,&lt;/em&gt; &lt;br&gt;
&lt;em&gt;And miles to go before I sleep,&lt;/em&gt; &lt;br&gt;
&lt;em&gt;And miles to go before I sleep.&lt;/em&gt;&#39;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;PS - Now you can mail me at sahil@debian.org&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PPS - Just looked at db.debian.org today, and it seems I&amp;rsquo;m one of the fourteen DDs in India. Cool!&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>MiniDebConf Tamil Nadu 2023</title>
      <link>https://blog.sahilister.in/2023/02/minidebconf-tamil-nadu-2023/</link>
      <pubDate>Sun, 05 Feb 2023 11:39:27 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2023/02/minidebconf-tamil-nadu-2023/</guid>
      <description>&lt;p&gt;The first MiniDebConf of year 2023 - MiniDebConf Tamil Nadu 2023 or MDC TN23 in short, happened on 28th and 29th of January 2023 in University College of Engineering Viluppuram in Tamil Nadu. It was done with the local GNU/Linux user group - Villupuram GLUG.&lt;/p&gt;
&lt;p&gt;Officially speaking, MDC TN23 was announced at the closing ceremony for &lt;a href=&#34;https://blog.sahilister.in/2023/01/minidebconf-palakkad-2022/&#34;&gt;MDC Palakkad 2022&lt;/a&gt; in November of 2022 by VGLUG. I got to know from Praveen that the conversation around this started during VGLUG&amp;rsquo;s Software Freedom Day celebration in September, which Praveen and Sruthi attended. Post MDC Palakkad, Praveen invited all the interested folks to join in organizing MDC TN23 with VGLUG team. The prepartions started and VGLUG team, being organized and experienced in event management, did most of the work with inputs from Debian India folks. There were some gaps in communications and disagreements like on budgeting but after many meetings, we came to an agreeable enough budget (and got the requested budget approved from DPL/Debian).&lt;/p&gt;
&lt;p&gt;As usual I asked Ravi if he planned to attend, to which he said yes. The journey started at New Delhi airport. The flight was to take off at 7.40 AM and I had planned to reach the airport by 5 AM, due to long security and check-in times. I was seriously doubting myself getting up at 4 AM, getting in the taxi by 4:30 and reaching airport by 5 AM, but I did indeed made it. I met Ravi at the airport, and we flew down to Chennai airport. We then took the Chennai Metro and met Nilesh with whom we took a train to Villupuram where a cab was waiting to take us to our accommodation. There we met rest of the Debian India team and other speakers.&lt;/p&gt;
&lt;p&gt;The opening ceremony took place in a marriage hall and guest of honor was the Member of Parliament (MP) from Villupuram, Dr D Ravikumar, which was a first for us followed by the events at University College of Engineering. This time, I had only submitted a DebConf23 introductory talk and took the time to enjoy the conference rather than worrying about my talk and stuff. I had planned to set up my mail server and update &lt;em&gt;poddery.com&lt;/em&gt;&amp;rsquo;s Synapse server update with team, but didn&amp;rsquo;t got the time to do any. The number of interesting conversations, meeting friends and fellow community members, and interesting events kept me engaged. Though I did complete my &lt;a href=&#34;https://blog.sahilister.in/2023/01/minidebconf-palakkad-2022/&#34;&gt;MDC Palakkad&lt;/a&gt; blog post and setting up Onion URL for Debian Fasttrack.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/mdc-tn-debconf23-team-photo.jpg&#34; alt=&#34;Some of the members of DebConf23 team&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;
    Some of the members of DebConf23 team
    &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;As usual, we had DebConf23 meetings on the sideline. This time, international DebConf team including Nattie, Gwolf and Tzafir too joined for the conf, as the team planned to do a DebConf23 venue visit in Kochi post conf. Also meet them for the first time due to this.&lt;/p&gt;
&lt;p&gt;During the visit, I tried a variety of Tamil foods and snacks, many names I can&amp;rsquo;t even pronounce properly. I had a hearty serving of filter coffee and even started to enjoy Rasam. However, I didn&amp;rsquo;t like the taste of ghee masala dosa. I also visited Ratna Cafe and Sangeetha Cafe in Chennai, and my desire to try local food was fully satisfied during this visit.&lt;/p&gt;
&lt;p&gt;My Debian Developer, non uploading AM process was already completed by 15th, so had hopped that the DD process would have completed by the time of the conf, but that didn&amp;rsquo;t happen. The FD or DAM approval step was still pending. Now the next conf would become my first conf post becoming a DD :D.&lt;/p&gt;
&lt;p&gt;The event was also covered by New Indian Express, though they got many of the details wrong. Here&amp;rsquo;s the &lt;a href=&#34;https://www.newindianexpress.com/states/tamil-nadu/2023/jan/31/techies-converge-at-the-debconf-in-villupuram-2542780.html&#34;&gt;link&lt;/a&gt; to the news article.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/mdc-tn-group-photo.jpg&#34; alt=&#34;MiniDebConf Tamil Nadu 2023 group photo&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;
    MiniDebConf Tamil Nadu 2023 group photo. &lt;a href=&#34;https://blog.sahilister.in/img/mdc-tn-group-photo.jpg&#34;&gt;Click to enlarge&lt;/a&gt;
    &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;Hoping that MiniDebConf Tamil Nadu would becomes an annual thing, as we get to meet, learn, chill and re-visit Tamil Nadu every year.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>MiniDebConf Palakkad 2022</title>
      <link>https://blog.sahilister.in/2023/01/minidebconf-palakkad-2022/</link>
      <pubDate>Sat, 28 Jan 2023 18:02:50 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2023/01/minidebconf-palakkad-2022/</guid>
      <description>&lt;p&gt;It all started with a discussion that we&amp;rsquo;ll meet IRL if we have a physical Debian event. A few texts exchanged - we got a venue, we had an organization team, and we were set for an event. This was how MiniDebConf Palakkad 2022 which happened on November 12 to November 13, in NSS College of Engineering Palakkad, Kerala came to be.&lt;/p&gt;
&lt;p&gt;To give you folks a bit of context, I have been active in Debian and Debian India since DebConf20, which was around the time when I started using Debian full time on my machine. Debian been such a welcoming community, and DebConf22 Kochi (which has since changed to DebConf23 Kochi) preparations ongoing, pulled me in for more participating and volunteering for more Debian events since. Due to Covid-19 pandemic, DebConf22 Kosovo was probably the first physical Debian event. As official host of next DebConf, the Debian India had to send a delegation to attend and receive Pollito. I wanted to attend this conference and meet folks I was working, interacting and gossiping with since I started on Debian, as we hadn&amp;rsquo;t met IRL ever. But alas! Due to work, I had to skip attending the conf. Also, all the attendees kept saying, I should have attended it, it was so much fun. Now during once such conversation among the MDC Shoutout team (if you know, you know ;)), we were discussing this and that&amp;rsquo;s when the idea of a Debian event came to be. A few texts by Abbyck to his alma mater club at FOSSNSS, and soon we had them onboard for venue and event. From there it all came to be.&lt;/p&gt;
&lt;p&gt;Now, coming up with a two day, two track Debian event is never easy. Call for proposals needs to be sent, website has to be done, registrations has to be taken care of, money needs to be raised, publicity has to be done and then on the venue, projection and sound system is to be setup, attendees need food and accommodation and all the nitty-gritty has to be planned, arranged and executed for the conference to happen. Discussions started around September and conference dates were fixed mid-November. Teams, consisting mostly of FOSSNSS and Debian India folks, started work under guidance from Anupa. (She&amp;rsquo;s usually the one doing most stuff, never ever taking the credit for.) All the folks did loads of work, multiple meetings were conducted and on ground stuff was done.&lt;/p&gt;
&lt;p&gt;As Ravi too planned to join the conference, we booked the tickets to Coimbatore, from there we planned to travel by road to Palakkad. After landing in Coimbatore, rain was the last thing I was expecting in the month of November. Later on, I came to know it&amp;rsquo;s always rainy here in South India for half the year. As I hadn&amp;rsquo;t anticipated rain, I was wearing white shoes, and it felt real bad seeing them catch all the mud and dirt. Coming here was also a cultural shock for me. Since childhood, I had never travelled to south India or any place where Hindi wasn&amp;rsquo;t a commonly understood or spoken language. Now, here I was in Tamil Nadu with no understanding of Tamil. It wasn&amp;rsquo;t very hard per se, but me being in a bit of a cultural hocked state elevated the hardship. Being with Ravi, who has travelled to places, helped. He knew how to navigate unknown areas. Initially, the plan was to travel in cab via Uber, but that plan fell apart due to price differences. We finally travelled in KSRTC i.e. Kerala State Road Transport Corporation bus, much to the delight of Ravi. The accommodation for was arranged by local team and I got a hotel named KTDC Garden House near the scenic Malampuzha Dam. It was a scenic place, but with limited food options. Malampuzha Dam was beautiful but due to time constraint I couldn&amp;rsquo;t explore it fully with rope way and activities near it.&lt;/p&gt;
&lt;p&gt;This was my first in-person Debian event, so was excited to attend it. On the day of conf, I meet many folks to which I was talking to since a very long time in-person. I also got to know many new folks. In total, I had proposed two Birds of Feathers (BoF), one short talk and a workshop, of which the workshop didn&amp;rsquo;t happen as we (Abbyck and me) didn&amp;rsquo;t get the time to sit together and prepare it. Coming to the BoFs, the &lt;a href=&#34;https://in2022.mini.debconf.org/talks/9-debconf23-kochi-bof/&#34;&gt;DebConf India BoF&lt;/a&gt; happened on Day 1. It was intended to introduce folks to DebConf23 and get them to join the team (though we weren&amp;rsquo;t too successful on that part). Various teams and members were introduced, and work status was discussed. The second BoF was &lt;a href=&#34;https://in2022.mini.debconf.org/talks/37-debian-india-bof/&#34;&gt;Debian India&lt;/a&gt; BoF to discuss direction for Debian community in India. Various issues and suggestions were discussed. Moderating this BoF, was more difficult than I had anticipated, but that&amp;rsquo;s how things are. They don&amp;rsquo;t always turn out as we expect them to.&lt;/p&gt;
&lt;p&gt;I had a short talk too on the topic, &lt;a href=&#34;https://in2022.mini.debconf.org/talks/12-mobile-openstreetmap-contribution-on-the-go/&#34;&gt;Mobile OpenStreetMap mapping on the go&lt;/a&gt;. I had a few screenshots and outdoor pictures collected, which I planned to incorporate in my talk. I cobbled together all those pictures and finally completed my presentation just in nick of time for the talk. The idea was to present all the use cases and different mobile applications to map those in OpenStreetMap. (I plan to do a write-up for the talk, but let&amp;rsquo;s see if it comes around). The presentation went well, though no-one ask any question in QnA.&lt;/p&gt;
&lt;p&gt;For final submission, the workshop on self-hosting with Abbyck, we decided to cancel due to time constraints.&lt;/p&gt;
&lt;p&gt;As being the tradition with Debian events, GPG key signing was part of the event. Ravi gave an introduction on it and Pirate Praveen dived into details how it&amp;rsquo;s done in his talk. It was a fun little activity where people came with their government IDs (some had their pictures from when they were teens) and key signature written or printed somewhere, and we cross verified it and then signed their key. I got my keys signed by Praveen and Anupa, both DDs to meet the criteria to start the DD process. Post that, I started my non uploading DD application. Nilesh, another DD had mentioned that he might be my Account Manager (AM) as his AM slot was empty, and by chance, he was chosen to be my AM, the role he has taken quite seriously since then. The AM process is complete now. I&amp;rsquo;m awaiting final step of Front desk or DAM approval, post which I&amp;rsquo;ll officially become a Debian Developer, non uploading.&lt;/p&gt;
&lt;p&gt;I was meeting the whole DebConf23 Kochi organizing team for the first time (mostly I was the one coming from far, most of the team lives in and around Kerala). The whole organizing team was housed in KTDC to allow discussions in person to happen, which were held on the night of 12th. In person discussions were way more productive as we were able to discuss and deliberate on DC issues faster.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/pollito.jpg&#34; alt=&#34;Pollito at Palakkad&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;
    Pollito at Palakkad
    &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;Finally, the event was also graced by the presence of DebConf mascot Pollito which is in India for DebConf23. Raju brought the Pollito on the last day of the conf, and it was an instant celebrity. Raju was mobbed by the crowd for getting a picture with it, and it was also given it&amp;rsquo;s MDC ID as well. I, too, saw and held Pollito for the first time.&lt;/p&gt;
&lt;p&gt;In conf, everyone agreed that we needed more decentralized, in-person events in various parts of India; various nascent plans were made to conduct MDCs in Villupuram, Bengaluru, Hyderabad and Pune. For now, the Villupurm one is happening thanks to active local community VGLUG, titled MiniDebConf Tamil Nadu 2023. Another MDC might take place before DebConf23, Kochi. I hope starting with these MDC, at least the Palakkad and Villupuram MDCs become annual affairs. Fingers crossed on that.  If you want to organize an MiniDebConf in your city, get in contact, and we&amp;rsquo;ll together figure something out.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/mdc-palakkad-volunteers.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;
    Volunteer team for the conference
    &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;Finally, I would like to thanks all the folks who came together to make this conference a success, and also gave me the opportunity to meet everyone.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/mdc-palakkad-group-photo.jpg&#34; alt=&#34;MiniDebConf Palakkad group photo&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;
    MiniDebconf Palakkad 2022 group photo. &lt;a href=&#34;https://blog.sahilister.in/img/mdc-palakkad-group-photo.jpg&#34;&gt;Click to enlarge&lt;/a&gt;
    &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;PS - Finally, shoutout to Abbyck!&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>23 and Counting</title>
      <link>https://blog.sahilister.in/2022/10/23-and-counting/</link>
      <pubDate>Thu, 06 Oct 2022 00:07:43 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2022/10/23-and-counting/</guid>
      <description>&lt;p&gt;23 is two years older than 21, when you&amp;rsquo;re legally allowed to marry in India and one year older than 22, when I came to the realization that I old now, not old age wise but old in some mental sense to me. The age number tells that I&amp;rsquo;ve become an adult, but inside, it doesn&amp;rsquo;t feel like it. I still don&amp;rsquo;t feel like an adult. When I&amp;rsquo;m at home, mum does my packing, dad still do governmental and other stuff. Frankly, I don&amp;rsquo;t feel like growing now.&lt;/p&gt;
&lt;p&gt;As usual, life continued after 22nd birthday. Professionally, I&amp;rsquo;m still with the same organization and naturally become more comfortable and confident with my job. It has given me the freedom to not think twice on buying or eating out as I have become independent, not accountable to anybody for my spends.&lt;/p&gt;
&lt;p&gt;Once again, months and year seem to have intermingled. The year seem to be have flown by. Jotting down the months and trying to remember happening in them; couldn&amp;rsquo;t come up with interesting happening in the year. Either my memory is not that great or things were really mild these past months.&lt;/p&gt;
&lt;p&gt;On my blog, writings have grown to focus more on my life and experiences now. Earlier, I was exploring a lot of technologies and stuff, but recently I find my writings to lean towards my feelings and thoughts. These posts usually start on Notally, my note-taking app on the phone, copied over to Etherpad with random bits and pieces of first thoughts. I usually jot down pointers I want to think/write about and then elaborate on them.&lt;/p&gt;
&lt;p&gt;This year also marked less time dedicated to exploring hosting new applications in server space, though have started hosting my own Mastodon server at &lt;a href=&#34;https://masto.sahilister.in&#34;&gt;&lt;em&gt;masto.sahilister.in&lt;/em&gt;&lt;/a&gt; which has me and Ravi as the users. I also took a more active role in maintaining diasp.in with Raju Dev through co-sponsoring it, though don&amp;rsquo;t have any concrete will to keep it running due to low to no participation from the community. Next,  working on pulling up a Free Software mirror hosted at &lt;a href=&#34;https://mirrors.sahilister.in&#34;&gt;&lt;em&gt;mirrors.sahilister.in&lt;/em&gt;&lt;/a&gt;. At the moment, it houses official mirrors for termux, NomadBSD and OSMC seeing more than 100k requests/day with average network usage of ~45GB/day. Work is in progress to become a Blender and Trisquel mirror, though that has already taken a long time, and I&amp;rsquo;m not seeing a completion to them in the distant future due to long back and forth with those projects.&lt;/p&gt;
&lt;p&gt;Coming to our operating system of choice - Debian, I missed the opportunity to attend DebConf22 Kosovo. It was a wonderful opportunity to interact with the larger Debian community with whom I have been working, having fun, for the past two years. In person MiniDebConf Palakkad, Kerala is planned for November. That should give ample time to visit Kerala and interact with the folks. On the sideline, preparations for DebConf23 Kochi are also in full swing.&lt;/p&gt;
&lt;p&gt;A highlight for this year was contributing to OpenStreetMap (OSM). Finding random usage of OSM data ranging from online bus tracking website to live booking screen in my office has intrigued me. Even big tech players like Snap Maps and Instagram use it in their applications. Now my phone contains five different OSM apps for various navigation and contributing purposes. Going on a new road always leads to bunch local survey and POI addition, note-taking and GPS track recording for editing the map later on laptop. It has helped me be geographically aware of places near me, like knowing about the weird naming of villages near my native place which have different naming on paper and on signboards.  It has also made my conversation with my family more interesting, as I now come up with questions about nearby places, and they have to brainstorm and discuss giving me a suitable answer together. This also leads to many visits to unknown roads as well, which is always exciting.&lt;/p&gt;
&lt;p&gt;Lately, life gave a few setbacks (and they seem to keep coming more these days), which I&amp;rsquo;m trying to see as challenges and life lessons to be learned. This year, I want to explore the mountains, go on treks, be in nature and feel the silence. I want to be in my own and company more and want to enjoy it too. Also want to remove desire for external validation on my actions as no one has seen the world through my eyes and none desire to do accomplish the same things as I do.&lt;/p&gt;
&lt;p&gt;Lastly, I feel blessed and grateful for having my parents, sister and other people in my life who have always been supporting me in navigating life. They have eased many of my transitions and I didn&amp;rsquo;t have to face  many troubles because of them.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS - Read last year&amp;rsquo;s birthday post &lt;a href=&#34;https://blog.sahilister.in/2021/09/another-year-passed-22/&#34;&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PPS - Team change notified at work, so back to hustle.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Metro and City Intersection</title>
      <link>https://blog.sahilister.in/2022/09/metro-and-city-intersection/</link>
      <pubDate>Fri, 23 Sep 2022 01:02:21 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2022/09/metro-and-city-intersection/</guid>
      <description>&lt;p&gt;&lt;em&gt;These are my experiences specific to Delhi Metro and Rapid Metro Gurugram, which I frequent almost daily. Metros in other cities may or may not share these traits.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Metro seems to carry almost everyone. I haven&amp;rsquo;t seen so many people in one place together and such diversity between them. After reading &lt;em&gt;Metronama: Scenes From The Delhi Metro&lt;/em&gt; by Rashmi Sadana, I came to the realization that travelling by Metro isn&amp;rsquo;t economical for economically weaker section of the society. Barring these strata of people, almost everyone is represented in these Metro coaches. Metro really blurs the line of societal differences; I can see, a daily wageworker seating next to an IT professional. Metro brings them together like no other public space could.&lt;/p&gt;
&lt;p&gt;Metro is truly made for city use and quick movement. Large windows for light to seep in and eight doors in each coach to quickly move in and out. Metro coaches in rush hours are no fun. Shoulder to shoulder pushing, and difficulty getting in and out is a norm during office hours. In lean hours, one can comfortably sit back and observe (no fun observing others when your legs are aching due to standing and constant motion). Ladies, depressed working professionals, hopping kids, friends enjoying their going places chit-chat amongst others are common fixtures in these coaches. Loud gossips and phone calls can be heard, though most folks are down in their phones, head bowed and earphones plugged enjoying a downloaded OTT series.&lt;/p&gt;
&lt;p&gt;Even though the public announcement and notices in Delhi Metro says luggage heavier than 25kgs and exceeding 80x50x30 cm dimensions are not allowed but is rarely enforced where we move from railway station to Metro station and vice-versa. Metro serves as our last mile to reach a secondary home in the city.&lt;/p&gt;
&lt;p&gt;Metro stations are architectural marvels. They&amp;rsquo;re well planned, functional public spaces made to onboard people from a chaotic city like Delhi. Each above ground station are build differently according to situation. As Metro traverse in different places - different landscape. The Metro zooms over bridges; sometimes near multistory houses where a curious passenger can peer into a persons households. Metro windows are screens with changing visuals, forests if you come to Gurugram side on yellow line, parks and city landscape on violet line towards Faridabad and others. Underground stations are sad with no visuals other than narrow black walls. Metro had a forward-looking approach, the leadership also seems to have emphasized it through adopting accessibility everywhere. Accessibility seems like an afterthought in other mode of public transport like bus and rail. Lifts and ramps are first place citizens in stations, with Metro staff placed around the station to help people around. With dedicated gates for entry and exit, flow of people is highly channeled through Metro stations.  Station exit barriers are fun too. I usually look at the amount deduced from the person in front&amp;rsquo;s card and guess how far the person has travelled to reach this station. Metro stations stand in contrast in terms of cleanliness from other public spaces in India. There are neat and clean, and feels more like an airport than their rail cousin. The cleanliness culture of Metro really seems to have seeped into its passengers as well, who for the most part don&amp;rsquo;t litter any on/in most station. Another fascinating aspects are Metro lifts, which house a soul of their own. Moving up or down a life, one stand close and times, too close to hear people&amp;rsquo;s personal call; their social media timelines and their odor. Metro stations have also provided a safe space to couples who can be seen huddled together, sitting and chit-chatting with no worries or hugging as they part.&lt;/p&gt;
&lt;p&gt;Metro is a true people mover and has increased accessibility to and fro from far flung areas. One don&amp;rsquo;t need to face long traffic jams. Earlier people had to travel 2-3 hours to places, so plans were avoided, now in 25 mins, so people can cover the same distance. It has made places accessible, and people have better opportunities professionally, educationally and socially. Now they can reach right into city heart from hinterland.&lt;/p&gt;
&lt;p&gt;Overall, Metro is what keeps the city like Delhi moving, else everyone would just have been sitting in traffic for long hours and getting frustrated with it.&lt;/p&gt;
&lt;p&gt;PS - I&amp;rsquo;ll highly recommend the book &lt;em&gt;Metronama: Scenes From The Delhi Metro&lt;/em&gt; by Rashmi Sadana for people who want to understand how Delhi Metro came to be and it&amp;rsquo;s affects on the society. Rashmi being Associate professor of Anthropology has captured the intersection of this massive public infrastructure project and people who use it daily using first hand instances conversations with them. It really shows how Metro has transformed life of Delhiites for the better.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>OpenStreetMap and Snapchat</title>
      <link>https://blog.sahilister.in/2022/08/openstreetmap-and-snapchat/</link>
      <pubDate>Fri, 26 Aug 2022 06:03:19 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2022/08/openstreetmap-and-snapchat/</guid>
      <description>&lt;p&gt;A casual talk regarding OpenStreetMap (OSM) with my roommate lead to the discovery that Snapchat uses OpenStreetMap as basemap for their map functionality. It was felt great learning about this development.&lt;/p&gt;
&lt;p&gt;I was mapping actively since the time I moved to Gurugram with my colleague/roommate. My roommate use to see me doing edits and making roads in OSM. He was curious to know who even uses those maps, and during one of these discussions, I remembered vaguely reading somewhere about Snapchat and OpenStreetMap. Personally, I don&amp;rsquo;t use Snapchat, so asked him to open the map feature to confirm. Clicking on the small info icon on the bottom, confirmed that Snapchat uses OpenStreetMap data through Mapbox (seems to be using a secondary source for POI data). That got his interest piqued as well. Snap Map (as they&amp;rsquo;re called) can be viewed online here &lt;a href=&#34;https://map.snapchat.com&#34;&gt;map.snapchat.com&lt;/a&gt; as well.&lt;/p&gt;
&lt;p&gt;After Snap Maps, I also discovered that the big live bookings screen at my office (an online travel aggregator), also uses OpenStreetMap data. Been  passing this screen everyday and just noticed the small OpenStreetMap credits at the bottom. Next, discovered OpenStreetMap being used in my live bus tracking link through MapTiler (though the data seemed to be old and didn&amp;rsquo;t contain my POI and roads edits in my nearby areas).
Zomato also seems to used OpenStreetMap for restaurant location screenshots on their website.&lt;/p&gt;
&lt;p&gt;These usages of OSM data in wild gives me the motivation to add/edit even more to improve maps for everyone, including Snapchatters and Pokémon Go players everywhere. OpenStreetMap mapping has helped me know places better. The history/road types/classifications and figuring out the appropriate tags is always an experience. Seeing roads and POIs fill up empty stretches of maps, always look good.
OpenStreetMap data has given rise to so wonderful uses which wouldn&amp;rsquo;t have been possible with non-free licensed geographical data.&lt;/p&gt;
&lt;p&gt;PS - If you&amp;rsquo;re new to OpenStreetMap and want to contribute, start with StreetComplete app. It gamifies the whole data addition part by asking questions on missing nodes in your local area.&lt;/p&gt;
&lt;p&gt;PSS  - My inbox is always open for chats regarding mapping and OSM.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Meeting With School Juniors</title>
      <link>https://blog.sahilister.in/2022/05/meeting-with-school-juniors/</link>
      <pubDate>Sun, 08 May 2022 18:35:27 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2022/05/meeting-with-school-juniors/</guid>
      <description>&lt;p&gt;Had a chance meeting with school juniors few days back. I was out hanging with Rajan, while we by chance met them. All of them were of the same year, a year junior to us and hanging out together.&lt;/p&gt;
&lt;p&gt;I remembered most of them. Apparently they remembered me too. The interaction was easy going and fun. Aarush was amongst them too, one of my favorites from their batch. Felt joy, they were happy faces indeed. It was more heartfelt than even meeting my own classmates, maybe due to the fact I was seeing them after such a long time. Came to the realization that human interactions feel better and can’t be replaced with time spent on books/computer/mobile and what not.&lt;/p&gt;
&lt;p&gt;Now I want to plan alumni meet someday where we simply meet and interact how life has been and remember the good old days when deadlines weren’t so scary.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Navratri Hunger Cycle</title>
      <link>https://blog.sahilister.in/2022/05/navratri-hunger-cycle/</link>
      <pubDate>Sun, 01 May 2022 09:14:00 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2022/05/navratri-hunger-cycle/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Navaratri&#34;&gt;Navratri&lt;/a&gt; is a bi-annual celebration in Hinduism spanning over nine (sometimes eight) days. It is usually celebrated with fasting and ends with various ceremonies. Now, fasting is our topic for this post today. I have been fasting for Navratri once a year, since quite a few years. Due to family traditions, we only do fasting till eighth day, which is called &lt;em&gt;Ashtami&lt;/em&gt;. I have some observation on my hunger and thought patterns during these fasting periods.&lt;/p&gt;
&lt;p&gt;The initial, one to three days are filled with thoughts about all the delicacies the world has to offer. Spicy, &lt;em&gt;chat-patta&lt;/em&gt; &lt;em&gt;Gol Gappas&lt;/em&gt;, &lt;em&gt;Chole Samosa&lt;/em&gt;, &lt;em&gt;Gulab Jamuns&lt;/em&gt; and what not. It&amp;rsquo;s the period when most will power is tested on the question of why even deprave oneself from all these worldly pleasures.&lt;/p&gt;
&lt;p&gt;Day four to six are when, the mind usually makes peace with the situation. It doesn&amp;rsquo;t matter if I eat food or not, it doesn&amp;rsquo;t cross my mind. Things are better, there are no hunger pangs. Even if someone eats or brings some delicacy, it really doesn&amp;rsquo;t matter much.&lt;/p&gt;
&lt;p&gt;Day seven is usually an exciting day that finally it is coming to an end. A bunch of eat this and that lists starts forming in mind.&lt;/p&gt;
&lt;p&gt;Day eight, the day when &lt;em&gt;Chole Puri&lt;/em&gt; and &lt;em&gt;Halwa&lt;/em&gt; are made for &lt;a href=&#34;https://en.wikipedia.org/wiki/Puja_(Hinduism)&#34;&gt;&lt;em&gt;Puja&lt;/em&gt;&lt;/a&gt; and rituals are performed. It is followed by eating of &lt;em&gt;Chole Puri&lt;/em&gt;, which to be frank becomes a bit under-whelming experience. As the day goes by and various, normal food is eaten, a gloom starts coming that why even eat now. It doesn&amp;rsquo;t matter. Grand lists made on seventh day just don&amp;rsquo;t feel so good anymore. The cravings are all gone by this time. Food feels just like a necessity to mind, leading to completion of Navratri.&lt;/p&gt;
&lt;p&gt;Still, I feel Navratris are good time. It gives the opportunity to strengthen mental strength over physical needs. Also, it&amp;rsquo;s fun seeing the reaction of folks when they get to know that someone is keeping all the fasts.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Late, Late Experience Post of DebConf21</title>
      <link>https://blog.sahilister.in/2022/04/late-late-experience-post-of-debconf21/</link>
      <pubDate>Mon, 18 Apr 2022 07:47:48 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2022/04/late-late-experience-post-of-debconf21/</guid>
      <description>&lt;p&gt;DebConf21 was held online from August 24th to August 28th, 2021. As the tradition dictates, I wanted to jot down the experience for my future self and others, but it kept slipping. Now, as DebConf22, Kosovo looms (and preparations for DebConf23 here in India begins), I feel obliged to quickly write down as much as I can remember. As this year&amp;rsquo;s DebConf is in-person again, in Kosovo, I won&amp;rsquo;t be attending it, so no experience post this year around.&lt;/p&gt;
&lt;p&gt;This time our focus was to bring a separate Indic track featuring talks and workshops in Indic languages. Though a separate Indic track wasn&amp;rsquo;t added, five Indic languages were added in talk submission page to be directly included in main DebConf. We did outreach for bringing people to submit talks in their native language. Finally, on the lower end, but we did manage to persuade some folks to submit talks.&lt;/p&gt;
&lt;p&gt;As usual this time too during the conference I volunteered to do the talk meistering and talk direction. The setup was similar to &lt;a href=&#34;https://blog.sahilister.in/2020/09/experience-attending-debconf20/&#34;&gt;DebConf20&lt;/a&gt; and &lt;a href=&#34;https://blog.sahilister.in/2021/01/experience-volunteering-for-minidebconf-india-2021/&#34;&gt;MiniDebConf India&lt;/a&gt; though this year was more fun because of the inclusion of a number of Indic language talks, four out of five of which I didn&amp;rsquo;t understand.&lt;/p&gt;
&lt;p&gt;This year, four Hindi talks were accepted (including mine), which was the biggest number ever (as far I as I know). I was elated, seeing this. Alas, three of the talks were cancelled at the last moment. Mine was the only Hindi talk in the end.&lt;/p&gt;
&lt;p&gt;About talk; my first talk was a short talk titled: &lt;a href=&#34;https://debconf21.debconf.org/talks/43-/&#34;&gt;&lt;em&gt;डेबियन में योगदान कैसे करें&lt;/em&gt; &lt;/a&gt; (How to contribute to Debian). I prepared the talk with 2 pages of pointers on notebook and taking presentation help from Praveen. Made the slides in Cryptpad and OBS, capturing 1/4th of the screen with presentation and webcam. As usual, made the video in one take. The &lt;a href=&#34;https://salsa.debian.org/debconf-team/public/data/dc21-online/-/raw/master/etherpads/txt/43-.txt&#34;&gt;talk etherpad&lt;/a&gt; looks funny now :) Someone mentioned (don&amp;rsquo;t remember who), that I was doing all the stuff and by chance during this talk QnA, talk meister for talk, Sruthi&amp;rsquo;s internet blinked. As I was already the talk director and was on call, I stepped in to give the closing notes. You can see it starting at 20.16 mins into the video. Finally, I edited the final cut of my video as well as the video team :D&lt;/p&gt;
&lt;p&gt;I was also part of &lt;a href=&#34;https://debconf21.debconf.org/talks/66-growing-the-debian-community-in-india/&#34;&gt;BoF on Growing the Debian Community in India&lt;/a&gt;. I did particularly like the fact folks put in their honest views, leading to prolonged discussions on the same. As the discussion went on, the 45-minute time seemed less. The BoF saw the participation of Anupa, &lt;a href=&#34;https://debconf21.debconf.org/users/srud/&#34;&gt;Sruthi&lt;/a&gt;, &lt;a href=&#34;https://asd.learnlearn.in/&#34;&gt;Akshay&lt;/a&gt;, &lt;a href=&#34;https://social.masto.host/@praveen&#34;&gt;Praveen&lt;/a&gt;, &lt;a href=&#34;https://abrahamraji.in/&#34;&gt;Abraham&lt;/a&gt; and &lt;a href=&#34;https://utkarsh2102.com/&#34;&gt;Utkarsh&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Participated in the DebConf closing ceremony and party thereafter with online with &lt;em&gt;gol gappa chat&lt;/em&gt;. It was delicious as always. After the closure, we also did an 8.5 hour late night video call, discussing Debian, software and life in general.&lt;/p&gt;
&lt;p&gt;Initial preparations for DebConf23 India have already started, scheduled for next year. Will be actively participating in the prep, albeit online. DebConf23 seems to be the first Debian event I would attend in-person. Come join us, if you want to make DebConf23 India a success.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: &lt;a href=&#34;https://ravidwivedi.in/&#34;&gt;Ravi&lt;/a&gt; mentioned that he showed my Hindi talk to his mother, and now she knows what Debian is. A small win.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Humans and Home</title>
      <link>https://blog.sahilister.in/2022/03/humans-and-home/</link>
      <pubDate>Wed, 23 Mar 2022 08:11:00 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2022/03/humans-and-home/</guid>
      <description>&lt;p&gt;I always wonder that humans erect walls to keep themselves safe when they&amp;rsquo;re most vulnerable, ie in their sleep. Walls or something akin gives a feeling of protection. It protects them from natural elements (weather, heat, rain etc.), seems to be a basic human instinct to want to be safe.&lt;/p&gt;
&lt;p&gt;Eventually, it seems as possession keeps on mounting (as compared to our hunter-gather roots), those walls gave protection to possessions as well. A reassurance of safekeeping and ownership that everything between these walls is &amp;ldquo;mine&amp;rdquo;. And we started calling the area between the walls as our place or home.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Aapka Bunty and Some Thoughts</title>
      <link>https://blog.sahilister.in/2022/03/aapka-bunty-and-some-thoughts/</link>
      <pubDate>Sat, 19 Mar 2022 12:32:38 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2022/03/aapka-bunty-and-some-thoughts/</guid>
      <description>&lt;p&gt;Stories are windows in someone&amp;rsquo;s life. The author may find it suitable to open and close it at a juncture, leaving us in a mix of emotions. We may wish it closes at different point or the window is open a little longer to peer what happened with the protagonist, but as the story window open at random it may well close as that.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;आपका बंटी&lt;/em&gt;    &lt;em&gt;(Aapka Bunty)&lt;/em&gt; by Mannu Bhandari was about a small boy and his relations with divorced parents. He used to live with his mother (who later remarried, just like his father). The surge of emotions; fear, anger, confusion made him disconnected, stubborn and disagreeable. The complexity of circumstances made me want the mother-son could come back to former connected self, but alas, the emotional turmoil broke them apart. Things may look simple from outside, but internally, feelings gets&amp;rsquo; harder to make sense or connect. Our feelings for someone&amp;rsquo;s or something remains and are usually hard to change.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Aapka Bunty&lt;/em&gt; stirred and brought back memories of my childhood. School, family, friends were fine but mentally, all sorts of thoughts, fear, at times anger, new realizations about my self and world around kept my brain buzzing. Most times, I wouldn&amp;rsquo;t share those with anyone (which may have sorted many of them) but most times trusted another soul was hard to come by. The story hit hard and brought back memories of those time almost 13-14 years later now. After reading it, I also realized that how privileged to have guidance, love and care from both parents. It&amp;rsquo;s even more significant as I transition to an in-office workplace at my first job in Gurgaon. Father guiding me about the world around and mother taking care of my household needs; complementing each other to ease the move.&lt;/p&gt;
&lt;p&gt;An interesting aspect I find is the sea of different emotions portrayed/described in Hindi literature, which I could not find in English or translated literature. Maybe English too has its depth, but I could connect to Hindi completely.&lt;/p&gt;
&lt;p&gt;As usual, as the end of the novel was drawing near; an excitement of end and a dread of closing of the window coincided. The window in Bunty&amp;rsquo;s life closed, leaving with thought&amp;rsquo;s how he coped the now physical distance from his mother and incoming hostel life. Surely this would have adverse effects on his teenage and adult life later, or perhaps he came to peace with his life.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Life Goes On</title>
      <link>https://blog.sahilister.in/2022/03/life-goes-on/</link>
      <pubDate>Fri, 11 Mar 2022 11:36:40 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2022/03/life-goes-on/</guid>
      <description>&lt;p&gt;Whether it&amp;rsquo;s life after someone&amp;rsquo;s death or traffic on a highway, it keeps on going.&lt;/p&gt;
&lt;p&gt;A small particle, person or writing is just a minute dent in the grand scheme of the universe. Big bang is big or probably the biggest event in comparison to just an exam or a deadline. Everything is relative.
A thing that&amp;rsquo;s worrying can fade as soon as a different, &amp;ldquo;bigger&amp;rdquo; issue crops up. So, does anything matter, or we should say all is well and things will pan out fine in the end (or if they don&amp;rsquo;t, a &amp;ldquo;bigger&amp;rdquo; issue is surely on the way).&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>100DaysToOffload Conclusion</title>
      <link>https://blog.sahilister.in/2022/02/100daystooffload-conclusion/</link>
      <pubDate>Sat, 05 Feb 2022 10:02:16 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2022/02/100daystooffload-conclusion/</guid>
      <description>&lt;p&gt;I took the &lt;a href=&#34;https://100daystooffload.com/&#34;&gt;#100DaysToOffload&lt;/a&gt; challenge last year, thanks to &lt;a href=&#34;https://janusworx.com/&#34;&gt;Jason&lt;/a&gt;. The whole concept of #100DaysToOffload challenge was to write 100 posts in the span of 365 days. Now counting this post (which is coming out 365+ some days ;)), I managed to write about 54 posts (starting with &lt;a href=&#34;https://blog.sahilister.in/2021/01/beginners-guide-to-host-static-content-on-a-server/&#34;&gt;this write-up&lt;/a&gt;), a little more than the halfway mark.&lt;/p&gt;
&lt;p&gt;Initially, I was hesitant to take it up, saying 50 is a more reasonable number, but Jason&amp;rsquo;s mentioning it&amp;rsquo;s only two posts/week and seeing he did multiple 100s of posts for some years around gave the boost to go for it. It seems that January to July were quite productive months in terms of writings, 40 till then. August came, which saw no writing (probably due to work stuff coming in full swing). After August, it was slower, leading to this conclusion post.&lt;/p&gt;
&lt;p&gt;#100DaysToOffload was a good motivator to write, but it later became a burden. In hindsight, I have more clarity and my writing is better than before, but I won&amp;rsquo;t re-attempt it again. Writing is better (and easier) with no commitments attached and posting as and when something is completed. Still, I don&amp;rsquo;t see myself committing less to writing, the blog will keep on pinging :)&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: Having # in title and in turn URL seems not easy in Hugo.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Quick-wiki: Mastodon</title>
      <link>https://blog.sahilister.in/2022/01/quick-wiki-mastodon/</link>
      <pubDate>Fri, 28 Jan 2022 20:26:45 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2022/01/quick-wiki-mastodon/</guid>
      <description>&lt;p&gt;&lt;em&gt;Last update: 02/2022, Mastodon v3.4.6 from Docker Hub.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is a &lt;a href=&#34;https://www.urbandictionary.com/define.php?term=quick-wiki&#34;&gt;quick-wiki&lt;/a&gt; for &lt;a href=&#34;https://joinmastodon.org/&#34;&gt;Mastodon&lt;/a&gt;, a federated, self-hostable social media software. As the installation was done via docker-compose, it&amp;rsquo;s more oriented towards it and may see fewer customizations.&lt;/p&gt;
&lt;h2 id=&#34;table-of-content&#34;&gt;Table of Content&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#updates&#34;&gt;Updates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#accounts&#34;&gt;Accounts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#instance-info&#34;&gt;Instance Info&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#glossary&#34;&gt;Glossary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#quick-links&#34;&gt;Quick links&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;updates&#34;&gt;Updates&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Read changelog and instructions from GitHub &lt;a href=&#34;https://github.com/mastodon/mastodon/releases&#34;&gt;release page&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Now pull down the containers and update version numbers in docker-compose file:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;## backup db&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; mastodon-db-1 pg_dump -Fc -U postgres postgres &amp;gt; name_of_the_backup.dump
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; mastodon
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sed -i &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/v3.4.5/v3.4.6/g&amp;#39;&lt;/span&gt; docker-compose.yml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker-compose pull
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker-compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;accounts&#34;&gt;Accounts&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Create new account via admin CLI:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; -it mastodon-web-1 sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tootctl accounts create &amp;lt;USERNAME&amp;gt; --email&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;EMAIL&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# a password would be generated for login&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Create new account via web UI by visiting &lt;URL&gt;/admin/invites&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Note: Accounts need manual approval (confirm CTA) via &amp;lt;MASTODON_URL&amp;gt;/admin/accounts as email setup isn&amp;rsquo;t present.&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Delete an account via admin CLI:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; -it mastodon-web-1 sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tootctl accounts delete &amp;lt;USERNAME&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Direct account deletion isn&amp;rsquo;t possible via web UI. The account is first suspended and then data is deleted.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;database-backup&#34;&gt;Database backup&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; mastodon-db-1 pg_dump -Fc -U postgres postgres &amp;gt; db.dump
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;regain-storage&#34;&gt;Regain storage&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Steps to delete media older than seven days:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; -it mastodon-web-1 sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tootctl media remove
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tootctl media remove-orphans
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;instance-info&#34;&gt;Instance Info&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;api/v1/instance/peers&lt;/code&gt; endpoint can be used to query known peers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;glossary&#34;&gt;Glossary&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Web (through Puma)&lt;/strong&gt; - Short lived HTTP requests.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Streaming API&lt;/strong&gt; - Streaming API handles long-lived HTTP and WebSockets connections for real time updates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Background processing (through Sidekiq)&lt;/strong&gt; - Many tasks are delegated to background processes for quick HTTP requests. Sidekiq handles these. Sidekiq has the following queues - default (local users tasks), push (push content to remote servers), mailers, pull (fetching content from remote servers) and scheduler (cron jobs like log cleanups and refreshing trending hashtags) - in decreasing order of preference.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;quick-links&#34;&gt;Quick links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/mastodon/mastodon/releases&#34;&gt;Release page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://hub.docker.com/r/tootsuite/mastodon/tags&#34;&gt;Docker Hub release page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.joinmastodon.org/&#34;&gt;Mastodon Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.linode.com/docs/guides/install-mastodon-on-debian-10/&#34;&gt;Linode&amp;rsquo;s installation guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.joinmastodon.org/admin/tootctl/&#34;&gt;Admin CLI documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Men, Please Respect Women!</title>
      <link>https://blog.sahilister.in/2022/01/men-please-respect-women/</link>
      <pubDate>Sat, 15 Jan 2022 23:41:18 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2022/01/men-please-respect-women/</guid>
      <description>&lt;p&gt;A humble appeal to men to please respect women and their consent. It pains me immensely to say that &lt;strong&gt;EVERY SINGLE FEMALE FRIEND&lt;/strong&gt; I came in close contact with has multitudes of horrible stories to tell about happenings of men following, molesting, character assassinating, making unsolicited sexual advances and what not. These were terrible things to hear, and every one of these girls were traumatized beyond belief. On the surface, these female friends seem happy or fine, but the constant amount of these bad advances have them scared, mentally. Single acts go a long way and keep on affecting for years.&lt;/p&gt;
&lt;p&gt;So please BACK-OFF or just go ask a female friend how horribly results these things can have.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>termux.sahilister.in, a Termux Mirror Is Live Now</title>
      <link>https://blog.sahilister.in/2022/01/termux.sahilister.in-a-termux-mirror-is-live-now/</link>
      <pubDate>Wed, 12 Jan 2022 17:05:56 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2022/01/termux.sahilister.in-a-termux-mirror-is-live-now/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://termux.sahilister.in/&#34;&gt;&lt;em&gt;termux.sahilister.in&lt;/em&gt;&lt;/a&gt;, a &lt;a href=&#34;https://termux.com/&#34;&gt;termux&lt;/a&gt; mirror is live now.&lt;/p&gt;
&lt;p&gt;To use it, &lt;code&gt;termux-change-repo&lt;/code&gt; (part &lt;code&gt;termux-tools&lt;/code&gt; package) can be used to modify sources. Doing &lt;code&gt;apt edit-sources&lt;/code&gt; and using the following lines, would achieve the same purpose:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# main&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deb https://termux.sahilister.in/apt/termux-main stable main
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# root&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deb https://termux.sahilister.in/apt/termux-root root stable
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# X11&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deb https://termux.sahilister.in/apt/termux-x11 x11 main
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The mirror is hosted on Contabo, in Germany, and syncs with upstream every 6 hours.&lt;/p&gt;
&lt;p&gt;Since the time I got in servers and hosting, I wanted to help the community by hosting a free software mirror, but most required too much storage or already had an abundant number of mirrors. Recently, I got to know about termux and saw the &lt;a href=&#34;https://github.com/termux/termux-packages/wiki/Mirrors&#34;&gt;less number of its mirrors&lt;/a&gt;. Thought that this might be the right candidate for a mirror, I started setting it up. A &lt;a href=&#34;https://www.reddit.com/r/termux/comments/nizn7x/comment/gz5dtvs/&#34;&gt;Reddit reply&lt;/a&gt; from termux dev team member and &lt;a href=&#34;https://www.librehat.com/a-new-termux-mirror/&#34;&gt;&amp;lsquo;A New Termux Mirror&amp;rsquo;&lt;/a&gt; post by &lt;a href=&#34;https://www.librehat.com/&#34;&gt;Librehat&lt;/a&gt;, another mirror operator, made the setup a breeze. Finally, I opened an issue on &lt;a href=&#34;https://github.com/termux/termux-packages/issues&#34;&gt;termux-packages repo&lt;/a&gt; to get it added in official mirrors wiki and package.&lt;/p&gt;
&lt;p&gt;Update - The termux mirror has been moved domain. It now can be accessed at &lt;a href=&#34;http://mirrors.sahilister.in/termux&#34;&gt;http://mirrors.sahilister.in/termux&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Write for Yourself</title>
      <link>https://blog.sahilister.in/2022/01/write-for-yourself/</link>
      <pubDate>Tue, 04 Jan 2022 20:35:17 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2022/01/write-for-yourself/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://asd.learnlearn.in/about/&#34;&gt;Akshay&lt;/a&gt;, during one of our mail correspondence, said - &amp;ldquo;The whole blogging thing is a giant ego boost&amp;rdquo;.  Now I can&amp;rsquo;t agree more. I spent the past half hour and countless nights before reading my life blogs and loved the feeling. Even though all of them were my experiences, written, edited and posted by me, still going through them was like reliving my past once again.&lt;/p&gt;
&lt;p&gt;Many of my blogs feel worthless and not fit for posting immediately when in process of their creation, but I have come to this realization that they were/aren&amp;rsquo;t for immediate me but for future me.&lt;/p&gt;
&lt;p&gt;As I say, blog writing is like writing one&amp;rsquo;s own history/autobiography. No one would appreciate them more than your future self. Reliving the moment is what they will help you. I encourage you to write, write for yourself.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Significance of a Day</title>
      <link>https://blog.sahilister.in/2021/12/significance-of-a-day/</link>
      <pubDate>Fri, 31 Dec 2021 20:02:34 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/12/significance-of-a-day/</guid>
      <description>&lt;p&gt;This is the first time in more than two decades when it&amp;rsquo;s not holidays in Christmas-New Year season. Getting up, switching on the laptop to work while seeing the dates of new year is giving mixed feelings. It&amp;rsquo;s almost the new year, and it should feel special, different or significant of a sort, but going through the day, working, it feels like just another day and right now, night. Colleagues are taking leaves to go out or just relax - another thing that tells it&amp;rsquo;s the new year.&lt;/p&gt;
&lt;p&gt;During childhood, birthdays were happening days; not much anymore. It makes me wonder if only ones perception that makes the day special. It&amp;rsquo;s what significance we give a day which make it special. Anyday can be special if one care or feel like it.&lt;/p&gt;
&lt;p&gt;Not 2021 - in some time.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Second Tor Relay on Same Node</title>
      <link>https://blog.sahilister.in/2021/12/second-tor-relay-on-same-node/</link>
      <pubDate>Wed, 29 Dec 2021 12:54:58 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/12/second-tor-relay-on-same-node/</guid>
      <description>&lt;p&gt;Tor project says&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Note: You can only run two Tor relays per public IPv4 address.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If the bandwidth, CPU and memory usage allow, hosting a second Tor relay on the same machine is possible to maximize resource utilization.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how I hosted a secondary Tor relay on a Debian machine, which was already running a middle (soon to be guard) relay. Debian systems already are capable of running multiple relays via &lt;code&gt;tor_instance_create&lt;/code&gt; package which is already part of Debian/Ubuntu Tor package, the manual page of which can be found &lt;a href=&#34;https://manpages.debian.org/testing/tor/tor-instance-create.8.en.html&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how to setup the node:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo /usr/sbin/tor-instance-create &amp;lt;relay-name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo vim /etc/tor/instances/&amp;lt;relay-name&amp;gt;/torrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Comment out +SocksPort auto line.
Add the &lt;a href=&#34;https://community.torproject.org/relay/setup/guard/debian-ubuntu/#4-configuration-file&#34;&gt;details for the second relay&lt;/a&gt; on a different port and nickname.&lt;/p&gt;
&lt;p&gt;Next, we need to add both relays fingerprint in their &lt;code&gt;torrc&lt;/code&gt;, so clients don&amp;rsquo;t make a circuit via both at once. We avoid this by adding the &lt;code&gt;MyFamily&lt;/code&gt; variable. To get the fingerprint of second relay, start the relay, wait for the bootstrapping process by monitoring the &lt;code&gt;syslog&lt;/code&gt; (found in &lt;code&gt;/var/log/syslog&lt;/code&gt;). Do the following to get the fingerprint:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# start the relay&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl start tor@&amp;lt;relay-name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# wait for fingerprint generation and then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl stop tor@&amp;lt;relay-name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Next, add the following line in both relay&amp;rsquo;s &lt;code&gt;torrc&lt;/code&gt; files:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;MyFamily &amp;lt;relay-1-fingerprint&amp;gt;, &amp;lt;relay-2-fingerprint&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Restart Tor for it to take effect:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl restart tor
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It will restart both the relays at once.&lt;/p&gt;
&lt;p&gt;Monitor &lt;code&gt;syslog&lt;/code&gt; for progress. Verify everything is fine by visiting &lt;a href=&#34;https://metrics.torproject.org/rs.html#search&#34;&gt;&lt;em&gt;metrics.torproject.org&lt;/em&gt;&lt;/a&gt; (after three hours) to check if &amp;ldquo;Effective Family Members&amp;rdquo; and other settings are as intended.&lt;/p&gt;
&lt;p&gt;And that&amp;rsquo;s how we hammer our server for the benefit of the society ;)&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://community.torproject.org/relay/relays-requirements/#public-ipv4-address&#34;&gt;&amp;ldquo;Tor Project | Relay Requirements&amp;rdquo;&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Hosting a Mastodon Server</title>
      <link>https://blog.sahilister.in/2021/12/hosting-a-mastodon-server/</link>
      <pubDate>Tue, 21 Dec 2021 09:35:08 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/12/hosting-a-mastodon-server/</guid>
      <description>&lt;p&gt;&lt;em&gt;Never heard of Mastodon? &lt;a href=&#34;https://masto.sahilister.in/@sahil/107274773199794221&#34;&gt;See this video&lt;/a&gt; to know.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s been more than a month since &lt;a href=&#34;https://masto.sahilister.in/about&#34;&gt;&lt;em&gt;masto.sahilister.in&lt;/em&gt;&lt;/a&gt;, the Mastodon instance I host is up and running. It has been surprisingly easy to maintain and hasn&amp;rsquo;t given any real troubles yet. Part of it can be attributed to using docker-compose for setting it up due to non-successful attempts to get it up native method and partially due to my apprehension to not handle the DB (Postgres in this case).&lt;/p&gt;
&lt;p&gt;It came to be when &lt;a href=&#34;https://abhinavkrishna.in/&#34;&gt;Abbyck&lt;/a&gt; mentioned Racknerd&amp;rsquo;s 11.11 deal offering a 3 vCPU, 4 GB RAM rig with 75 GB storage for 50 USD/year, which I bought. Had some discussions with Ravi that as the rig is already paid for a year, hosting a Mastodon instance on it won&amp;rsquo;t be of much trouble. I did setup-ed Pleroma a while back (on &lt;em&gt;social.sahilister.in&lt;/em&gt; namespace); it&amp;rsquo;s lighter and more customizable. But Mastodon has its pull, it feels more mature, and I love the UI, so Mastodon was the natural choice. &lt;a href=&#34;https://fosstodon.org/@sahilister/107233931955848475&#34;&gt;Asked the fediverse&lt;/a&gt; on requirements which got diverse set of answers.  Experimented, things got stable and migrated my account using Mastodon&amp;rsquo;s account migration tool, which migrated everything except for toots.&lt;/p&gt;
&lt;p&gt;The instance is now home to &lt;a href=&#34;https://masto.sahilister.in/@sahil&#34;&gt;me&lt;/a&gt; and &lt;a href=&#34;https://masto.sahilister.in/@ravi&#34;&gt;Ravi&lt;/a&gt;. Federation works fine and interactions with fediverse are a breeze. Earlier, I wasn&amp;rsquo;t keen on getting a personal instance as the local timeline on &lt;a href=&#34;https://fosstodon.org&#34;&gt;&lt;em&gt;fosstodon.org&lt;/em&gt;&lt;/a&gt; was always full of technology, software based conversations. After migrating, my local timeline only houses, as of now (other than mine) Ravi&amp;rsquo;s posts who I already follow. Due to the nature of the federated timeline, it wasn&amp;rsquo;t much populated. I had read about relays. Relays federate post from bigger Mastodon/Pleroma/Fedi instances to one&amp;rsquo;s personal/smaller instance to populate the federated timeline with their, diverse content. I got around subscribing to &lt;a href=&#34;https://mas.to&#34;&gt;&lt;em&gt;mas.to&lt;/em&gt;&lt;/a&gt;&amp;rsquo;s &lt;a href=&#34;https://mas.to/about/more#Relay&#34;&gt;relay&lt;/a&gt;. Now things are more happening on the timeline.&lt;/p&gt;
&lt;p&gt;As for the maintenance part, I usually ssh into the machine and log into the docker container, to purge media every few days (which needs to be automated). Presently, Mastodon is using around 5 GBs of storage, 1.47 GBs of memory and less than 10% tops for CPU. Though due to latency, &lt;em&gt;Tusky&lt;/em&gt;, my android client, while trying to play a video timeout saying &amp;ldquo;Can&amp;rsquo;t play this video&amp;rdquo;. Web/browser seems to play videos just fine. Probably due to smaller buffer/load time limits.&lt;/p&gt;
&lt;p&gt;Essentially, hosting the instance gave insights on how federation works while giving the cool boosting factor of running it on own domain ;)&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: If you know me and want a home on the fediverse/on mastodon and okay-ish with occasional (albeit rare) downtimes, feel free to ping.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Run a Tor Bridge</title>
      <link>https://blog.sahilister.in/2021/12/run-a-tor-bridge/</link>
      <pubDate>Sun, 19 Dec 2021 08:37:53 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/12/run-a-tor-bridge/</guid>
      <description>&lt;p&gt;I finally got around setting up a Tor bridge node. It&amp;rsquo;s an easy way to help others and you have a private internet.&lt;/p&gt;
&lt;p&gt;Last month, the Tor Project sent out a call for running a Tor bridges on their &lt;a href=&#34;https://web.archive.org/web/20211219031519/https://mastodon.social/@torproject/107300752194094294&#34;&gt;socials&lt;/a&gt;. I had discussions with &lt;a href=&#34;https://ravidwivedi.in/&#34;&gt;Ravi&lt;/a&gt; about this and concluded that it shouldn&amp;rsquo;t be hard getting a bridge up. The only real requirement is an ample amount of bandwidth (and an updated, secure system). Most European and US based providers provide multiple Tbs of bandwidth with plans already.&lt;/p&gt;
&lt;p&gt;Yesterday, finally, I got around setting it up. The step-by-step &lt;a href=&#34;https://community.torproject.org/relay/setup/bridge/debian-ubuntu/&#34;&gt;documentation&lt;/a&gt; was easy to follow. It took around three hours for the bridge to show up on relay search to confirm things are working as expected. After it, as each bridge is assigned to a &lt;a href=&#34;https://bridges.torproject.org/info&#34;&gt;bridge distribution mechanism&lt;/a&gt; - HTTPs, Moat, Email or Reserved; which usually takes upto a day, so I had to wait for my bridge to see some action.
Last night, the bridge was assigned to Moat - bridges, which show up for selection in Tor Browser settings. The bridge started getting connections before I woke up today. From the &lt;code&gt;syslogs&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Dec 19 01:42:36 workspace Tor[583530]: Heartbeat: Tor&amp;#39;s uptime is 12:00 hours, with 66 circuits open. I&amp;#39;ve sent 10.04 GB and received 10.03 GB. I&amp;#39;ve received 532 connections on IPv4 and 38 on IPv6. I&amp;#39;ve made 4978 connections with IPv4 and 1378 with IPv6.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;532+38 connections already, 10 GB both ways, already done! That was a real good sight.&lt;/p&gt;
&lt;p&gt;Running a relay is better. If for certain reasons you can&amp;rsquo;t run one and have a server rig running with some bandwidth to spare (you can specify limits as well); spend 20 mins setting a Tor bridge on it. A bridge is an added, hidden layer in Tor traffic which helps censored internet users &amp;ldquo;bridge&amp;rdquo; or &amp;ldquo;enter&amp;rdquo; the Tor network as most relay and their IPs henceforth are public info and are readily blocked by the censoring party. Bridge acts as hidden proxy to enter the Tor network. The end website don&amp;rsquo;t see your bridge&amp;rsquo;s IP, it&amp;rsquo;s always the exit node&amp;rsquo;s one, so you&amp;rsquo;re safe there as well.&lt;/p&gt;
&lt;p&gt;Most of monthly bandwidth is already remains unused, why not use it to a good cause ;)&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: If not a bridge, try running a &lt;a href=&#34;https://snowflake.torproject.org/&#34;&gt;Snowflake proxy&lt;/a&gt;. It&amp;rsquo;s a browser extension (&lt;a href=&#34;https://addons.mozilla.org/en-US/firefox/addon/torproject-snowflake/&#34;&gt;Firefox&lt;/a&gt;, &lt;a href=&#34;https://chrome.google.com/webstore/detail/snowflake/mafpmfcccpbjnhfhjnllmmalhifmlcie&#34;&gt;chrome&lt;/a&gt;), which turns your browser into a proxy that connects Tor users in censored regions to the Tor network. Again, it&amp;rsquo;s the exit node IP showing up in website logs, not yours.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update (12/2021): Added another bridge. This one was allocated to HTTPs so seeing less traffic. Moat bridge is proxing more than 25+ GB of data everyday.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Updates: Hosting Moved and Nginx Logs</title>
      <link>https://blog.sahilister.in/2021/11/updates-hosting-moved-and-nginx-logs/</link>
      <pubDate>Fri, 19 Nov 2021 18:03:47 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/11/updates-hosting-moved-and-nginx-logs/</guid>
      <description>&lt;p&gt;&lt;em&gt;Note - If you&amp;rsquo;re facing troubles accessing the feed, please delete and re-add ie &lt;a href=&#34;https://blog.sahilister.in/index.xml&#34;&gt;https://blog.sahilister.in/index.xml&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The blog has moved home from GitLab Pages to own, Hetzner rig in Germany. Earlier, using my &lt;a href=&#34;https://blog.sahilister.in/2021/04/script-to-automatically-mirror-blog-on-seperate-domain/index.html&#34;&gt;mirror script&lt;/a&gt;, I had the main blog hosted on GitLab Pages and mirrored/backup hosted on Hetzner, but a recent discussion prompted the reversing of the same.&lt;/p&gt;
&lt;p&gt;During a discussion after a session in &lt;a href=&#34;https://camp.fsci.in/&#34;&gt;Software Freedom camp&lt;/a&gt;, a learner/user from Iran mentioned that how people in Iran are denied access to many internet based services like Docker, GitHub, GitLab, GCP/AWS/Azure services, Cloudflare and hoards of US based services due to US sanctions on Iran. Many of these services host &lt;a href=&#34;https://www.gnu.org/philosophy/free-sw.html&#34;&gt;Free Software&lt;/a&gt; which essentially deny them the freedom to use them. Further, in the discussion, we also learned that GitLab pages sites are also not available to them without VPN or Tor. This essentially made this site unavailable to users due to no faults of their own. &lt;a href=&#34;https://ravidwivedi.in/index.html&#34;&gt;Ravi&lt;/a&gt;, who was also present there, and I had this discussion in which I suggested moving own sites to non-US based hosting. I already had this mirroring setup, so decided to move the main site to Hetzner server in Germany, along with Ravi&amp;rsquo;s. So now the setup is as follows - &lt;em&gt;blog.mirror.sahilister.in&lt;/em&gt; is served through GitLab pages. All the changes, git and Hugo build is done on GitLab and a cronjob runs every hour mirroring the content to &lt;em&gt;blog.sahilister.in&lt;/em&gt; on Hetzner. This was done to avoid introducing any change to my blogging flow. Though the &lt;a href=&#34;https://blog.sahilister.in/2021/04/script-to-automatically-mirror-blog-on-seperate-domain/index.html&#34;&gt;mirroring script&lt;/a&gt; handled everything else, the links in feed were pointing to blog.mirror.s.i instead of blog.s.i on main as well (thanks to &lt;a href=&#34;https://functional.cafe/@minoru&#34;&gt;@minoru&lt;/a&gt; for pointing it out :)). It was solved by adding the following command in mirroring script:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sed -i &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/blog.mirror.sahilister.in/blog.sahilister.in/g&amp;#39;&lt;/span&gt; index.xml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On a different note, as the main blog is served from my own box through nginx, I do have nginx access logs telling me if someone accessed/visited a particular section on the blog (and Ravi&amp;rsquo;s blog too :D). Though, I&amp;rsquo;m thinking of using logrotate to purge them. So you can now say, I do have an idea that you&amp;rsquo;re reading this. &lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Earlier, due to my setup, I had &lt;a href=&#34;https://blog.sahilister.in/2021/07/i-have-no-idea-youre-reading-this/index.html&#34;&gt;no idea that you were reading the blog&lt;/a&gt;.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Experience Volunteering for Debian Release Party India</title>
      <link>https://blog.sahilister.in/2021/10/experience-volunteering-for-debian-release-party-india/</link>
      <pubDate>Sat, 09 Oct 2021 20:40:09 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/10/experience-volunteering-for-debian-release-party-india/</guid>
      <description>&lt;p&gt;&lt;em&gt;A much delayed experience post of Debian Release Party that happened on 14th August.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Debian has a stable release every two to three years. So whenever a release happens, after the long freeze, it&amp;rsquo;s an occasion for release parties. This release was codenamed bullseye, the 11th Debian stable release and happened on 14th of August 2021.&lt;/p&gt;
&lt;p&gt;This time also, it was Anupa who initiated the conversation of having a Debian release party India. Initially, I believe &lt;a href=&#34;https://abrahamraji.in/&#34;&gt;Abraham Raji&lt;/a&gt; was the only other one who joined in and they started with planning, publicity and events. A virtual release party hosted on BigBlueButton was planned. Anupa pinged me for getting a placeholder, redirect URL for going on publicity material. This piqued my interest as this was the perfect opportunity to implement a nice &lt;a href=&#34;https://gitlab.com/emacs-apac/r&#34;&gt;redirect hack&lt;/a&gt; used by folks at Emacs APAC. I made the &lt;a href=&#34;https://gitlab.com/fsci/redirect&#34;&gt;following redirect&lt;/a&gt;. Call for events and event posters were send on mailing lists, irc/matrix/xmpp/telegram channels and a bunch of other places. Abraham propsed a talk, &amp;ldquo;Introduction to Debian bullseye&amp;rdquo;, Anupa a quiz on Debian and I, SuperTuxKart gaming session after the event. I got the anchoring of the event.&lt;/p&gt;
&lt;p&gt;On 14th, 6 pm IST, we started seeing folks join the BBB room. More than 30 folks joined in. I wasn&amp;rsquo;t expecting these many people to turn up, which made me happy and bit nervous. Just before the event, we planned to wear &lt;a href=&#34;https://blog.sahilister.in/2021/01/experience-volunteering-for-minidebconf-india-2021/&#34;&gt;MDCO India&lt;/a&gt; Ts but Anupa was already in her saree attire. On that date, everyone was minutely following the Debian micro-news for updates pouring in from the release team. By that time, final testing of release candidates were in full swing. We started the event with some quick introductions.  Anupa then started with the Debian quiz which made the mood light and fun, it indeed served as a nice icebreaker. Next was Abraham&amp;rsquo;s talk, which put in light on the technical changes that were landing in bullseye (which was made in IIRC org-mode, looked nice and minimal). Though the actual release was still some hours out, as the release party tradition dictates, we brought cakes next. Sruthi and Anupa made tasty looking, Debian themed cakes (we only virtually saw them eating, but I had dahi gol-gappa chat ready to eat then ;)).&lt;/p&gt;
&lt;br&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/debian-11-release-party-group-photo-cake-2.jpg&#34; alt=&#34;Image of cake made by Sruthi.&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt; Cake made by Sruthi. &lt;/i&gt;&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/debian-11-release-party-group-photo-cake-1.jpg&#34; alt=&#34;Image of cake made by Anupa&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt; Cake made by Anupa. &lt;/i&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;p&gt;A community interaction time followed. Things around Debian and Debian India were discussed. I then officially thanked everyone for joining and invited folks for the SuperTuxKart session. Most stayed back, but initially we weren&amp;rsquo;t able to join a common game, then someone suggested to join an existing server which worked fantastically, and it started the hour and half long racing on tracks. &lt;a href=&#34;https://subinsb.com/&#34;&gt;Subin&lt;/a&gt; won the initial races. He was probably the most experienced racer amongst us. A screenshare was done for folks who weren&amp;rsquo;t playing (though lower frame rate probably didn&amp;rsquo;t make the screenshare anything much watchable). All in all we started at 6 pm and I dropped IIRC at 9.30 pm from the gaming party. The gaming party, did turn out as one of the highlights.&lt;/p&gt;
&lt;p&gt;Now, I would like to thank Abraham Raji for the all the nice posters he made (we always bug him for all our events graphic needs :D), Anupa for getting everything together (as always :)) and &lt;a href=&#34;https://abhas.io/&#34;&gt;Abhas&lt;/a&gt; for the event BBB infra. It was fun little get together, got to meet folks from the community and talk Debian. Let&amp;rsquo;s see when the next event be organized, maybe the next MDCO India even :D&lt;/p&gt;
&lt;br&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/debian-11-release-party-group-photo.png&#34; alt=&#34;Group photo of release party, a screenshot of BBB room with bunch of camera&amp;rsquo;s on with people smiling&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Group photo of release party. &lt;a href=&#34;https://blog.sahilister.in/img/debian-11-release-party-group-photo.png&#34;&gt;Click to enlarge&lt;/a&gt; &lt;/i&gt;&lt;/p&gt;
&lt;/div
</description>
    </item>
    
    
    
    <item>
      <title>Quick-wiki: Prosody</title>
      <link>https://blog.sahilister.in/2021/10/quick-wiki-prosody/</link>
      <pubDate>Sun, 03 Oct 2021 10:52:11 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/10/quick-wiki-prosody/</guid>
      <description>&lt;p&gt;&lt;em&gt;Last update: 01/2025, Prosody v0.12.5-1~bpo12+1 from Debian.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is a WIP &lt;a href=&#34;https://www.urbandictionary.com/define.php?term=quick-wiki&#34;&gt;quick-wiki&lt;/a&gt; for quick reference for &lt;a href=&#34;https://prosody.im/&#34;&gt;Prosody&lt;/a&gt;, an &lt;a href=&#34;https://xmpp.org/about/technology-overview/&#34;&gt;XMPP&lt;/a&gt; server software and XMPP in general.&lt;/p&gt;
&lt;p&gt;I do had an XMPP account from my diasp.in account, but things being up down sometimes and my urge to experiment and learn how prosody works got me into this installation. It&amp;rsquo;s a mess, but it&amp;rsquo;s super lightweight to run.&lt;/p&gt;
&lt;h2 id=&#34;table-of-content&#34;&gt;Table of Content&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#rfcs&#34;&gt;RFCs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#installation-and-configurations&#34;&gt;Installation and Configurations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#prosody-modules&#34;&gt;Prosody modules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#certs&#34;&gt;Certs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#accounts&#34;&gt;Accounts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%5Bdebugging-and-logs&#34;&gt;Debugging and logs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#glossary&#34;&gt;Glossary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#quick-links&#34;&gt;Quick links&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;rfcs&#34;&gt;RFCs&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.rfc-editor.org/info/rfc6120&#34;&gt;RFC 6120:&lt;/a&gt; XMPP Core.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.rfc-editor.org/info/rfc6121&#34;&gt;RFC 6121:&lt;/a&gt; XMPP IM.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;installation-and-configurations&#34;&gt;Installation and Configurations&lt;/h3&gt;
&lt;p&gt;Most of the initial setup was done by following DO&amp;rsquo;s &lt;a href=&#34;https://www.digitalocean.com/community/tutorials/how-to-install-prosody-on-ubuntu-18-04&#34;&gt;&amp;lsquo;How To Install Prosody on Ubuntu 18.04&amp;rsquo;&lt;/a&gt;, on Debian machine with following changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;python3-certbot-nginx instead of certbot from Ubuntu PPA.&lt;/li&gt;
&lt;li&gt;prosody from Debian main.&lt;/li&gt;
&lt;li&gt;port 5269 for s2s communication instead of 5322.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;ports&#34;&gt;Ports&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;5222/tcp: For client connections.&lt;/li&gt;
&lt;li&gt;5269/tcp: For server to server connections.&lt;/li&gt;
&lt;li&gt;5280/tcp: Serving files through HTTP.&lt;/li&gt;
&lt;li&gt;5281/tcp: Serving files through HTTPS.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;dns&#34;&gt;DNS&lt;/h4&gt;
&lt;p&gt;Atleast two DNS A records needs to be added:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;chat.example.org&lt;/em&gt;: main XMPP address.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;groups.example.org&lt;/em&gt;: for multiuser chat (MUC).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A third DNS record maybe required for uploads.&lt;/p&gt;
&lt;p&gt;Prosody documentation mentions that by &lt;a href=&#34;https://prosody.im/doc/dns#srv_records&#34;&gt;using SRV records&lt;/a&gt;, a user with XMPP address &lt;em&gt;user@chat.example.org&lt;/em&gt; can use DNS redirection to use &lt;em&gt;user@example.org&lt;/em&gt; address.&lt;/p&gt;
&lt;p&gt;The following is the DNS configuration:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-dns&#34; data-lang=&#34;dns&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;py&#34;&gt;_xmpp-client._tcp.example.org. &lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;18000&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;IN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SRV&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;5222&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;py&#34;&gt;chat.example.org.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;_xmpp-server._tcp.example.org. &lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;18000&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;IN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SRV&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;5269&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;py&#34;&gt;chat.example.org.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Though implementing shows following issue in prosody logs:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;info    Incoming s2s stream example.com-&amp;gt;example.org closed: This host does not serve example.org
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;prosody-modules&#34;&gt;Prosody modules&lt;/h3&gt;
&lt;p&gt;In prosody, most of the features are enabled via modules(plugins).&lt;/p&gt;
&lt;p&gt;Debian has prosody-modules package, but it misses some community and early-stage modules. Fetched the modules from directly from prosody&amp;rsquo;s mercurial by:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  hg clone https://hg.prosody.im/prosody-modules/ prosody-modules
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And adding path to &lt;code&gt;plugin_paths&lt;/code&gt; variable in prosody conf.&lt;/p&gt;
&lt;h4 id=&#34;to-update-modules&#34;&gt;To update modules&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hg pull --update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;modules-enabled&#34;&gt;Modules enabled&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_roster&#34;&gt;roster:&lt;/a&gt; Allow users to have a roster/friend list.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_saslauth&#34;&gt;saslauth:&lt;/a&gt; Authentication for clients and server.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_tls&#34;&gt;tls:&lt;/a&gt; Add support for secure TLS on c2s/s2s connections.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_dialback&#34;&gt;dialback:&lt;/a&gt; s2s dialback support. Identity verification through DNS system before accepting new s2s traffic.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_disco&#34;&gt;disco:&lt;/a&gt; Service discovery. Essentially allows clients to discover MUCs, file transfer or other services supported by the server.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_carbons&#34;&gt;carbons:&lt;/a&gt; Keep multiple clients/devices in sync.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_pep&#34;&gt;pep:&lt;/a&gt; Enables users to publish their avatar, mood, activity, playing music and more.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_private&#34;&gt;private:&lt;/a&gt; Private XML storage (for room bookmarks, etc.).&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_blocklist&#34;&gt;blocklist:&lt;/a&gt; Allow users to block other users.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_vcard4&#34;&gt;vcard4:&lt;/a&gt; User profiles (in PEP).&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://modules.prosody.im/mod_vcard_muc.html&#34;&gt;vcard_muc:&lt;/a&gt; To allow defining avatar for MUC rooms.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_vcard_legacy&#34;&gt;vcard_legacy:&lt;/a&gt; Conversion between legacy vCard and PEP avatar.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_limits&#34;&gt;limits:&lt;/a&gt; Enable bandwidth limiting for XMPP connections, both c2s and s2s.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_uptime&#34;&gt;uptime:&lt;/a&gt; Server uptime.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_ping&#34;&gt;ping:&lt;/a&gt; Replies to pings with pong. Helps client establish if they have a stable connection to server or not.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_mam&#34;&gt;mam:&lt;/a&gt; Store messages in archive. Also used by carbons for client sync.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_csi_simple&#34;&gt;csi_simple:&lt;/a&gt; Mobile optimizations.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_admin_adhoc&#34;&gt;admin_adhoc:&lt;/a&gt; Admin through XMPP client. Gajim, Pidgin and others supports it, dino doesn&amp;rsquo;t I believe.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_bosh&#34;&gt;bosh:&lt;/a&gt; XMPP over HTTP, ie from browser clients. Also, helpful when client is behind firewalls.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_http_files&#34;&gt;http_files:&lt;/a&gt; Serve static files from a directory. Also, if chat is unencrypted, gives a public browser link like &lt;em&gt;&lt;code&gt;http://prosody.example:5280/files/&lt;/code&gt;&lt;/em&gt; for files.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://modules.prosody.im/mod_http_upload.html&#34;&gt;http_upload:&lt;/a&gt; Community module. For file uploading in chat. Says not to be added in module enabled, but seems to work anyhow, &lt;em&gt;To be investigated: how file upload works in other implementations without a separate domain or with it&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_posix&#34;&gt;posix:&lt;/a&gt; POSIX stuff.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_groups&#34;&gt;groups:&lt;/a&gt; Shared roster support ie server side shared friend/contact list like spaces in matrix.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_watchregistrations&#34;&gt;watchregistrations:&lt;/a&gt; To get notified on new registrations. People automatically see each other in contact list.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/modules/mod_muc_mam&#34;&gt;muc_mam:&lt;/a&gt; Room archives.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://modules.prosody.im/mod_smacks.html&#34;&gt;smacks:&lt;/a&gt; Stream management, allow a client to resume a disconnected session, and prevent message loss.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://modules.prosody.im/mod_bookmarks2.html&#34;&gt;bookmarks2:&lt;/a&gt; This module fetches users’ bookmarks.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://modules.prosody.im/mod_cloud_notify.html&#34;&gt;cloud_notify:&lt;/a&gt; It allows clients to register an “app server” which is notified about new messages while the user is offline, disconnected or the session is hibernated by mod_smacks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://prosody.im/doc/modules&#34;&gt;List of core modules&lt;/a&gt; with description.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://modules.prosody.im/&#34;&gt;List of prosody community modules&lt;/a&gt; with description.&lt;/p&gt;
&lt;p&gt;A reload is required for adding or removing a module from configuration.&lt;/p&gt;
&lt;h3 id=&#34;certs&#34;&gt;Certs&lt;/h3&gt;
&lt;p&gt;Wrote a &lt;a href=&#34;https://blog.sahilister.in/2025/01/prosody-certificate-management-with-nginx-and-certbot/&#34;&gt;blog post for certificate management for Prosody with Nginx and Certbot&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;accounts&#34;&gt;Accounts&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Create a new user, a password entry prompt follows.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;prosodyctl adduser user@chat.example.org
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Change a user password, a password entry prompt follows.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;prosodyctl passwd user@chat.example.org
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Delete a user account.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;prosodyctl deluser user@chat.example.org
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;debugging-and-logs&#34;&gt;Debugging and logs&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;See all prosody related information.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;prosodyctl about
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Check issues with full installation. Combination of checking configuration, DNS and certs.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;prosodyctl check
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# for individual checks only&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;prosodyctl check &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;config&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;dns&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;certs&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;glossary&#34;&gt;Glossary&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;BOSH:&lt;/strong&gt; Bidirectional-streams Over Synchronous HTTP.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;c2s/C2S:&lt;/strong&gt; client to server.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;s2s/S2S:&lt;/strong&gt; server to server.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Roster:&lt;/strong&gt; contact list.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OMEMO:&lt;/strong&gt; OMEMO Multi-End Message and Object Encryption. An extension to XMPP that allows encryption with the Signal Protocol.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MUC:&lt;/strong&gt; Multi-User Chat.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MIX:&lt;/strong&gt; Mediated Information eXchange. MIX is a potential successor to MUC. &lt;a href=&#34;https://xmpp.org/extensions/xep-0369.html&#34;&gt;Specification&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JID:&lt;/strong&gt; Jabber ID or XMPP address.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;XEP:&lt;/strong&gt; XMPP Protocol Extension. XMPP standards they&amp;rsquo;re.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;XMPP:&lt;/strong&gt; Extensible Messaging and Presence Protocol.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;XSF:&lt;/strong&gt; XMPP Standards Foundation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;quick-links&#34;&gt;Quick links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://prosody.im/doc/release&#34;&gt;Release notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://xmpp.org/extensions/&#34;&gt;All XEPs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://compliance.conversations.im/&#34;&gt;XMPP Compliance tester&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://xmpp.org/categories/newsletter/&#34;&gt;XMPP monthly newsletter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Another Year Passed, 22</title>
      <link>https://blog.sahilister.in/2021/09/another-year-passed-22/</link>
      <pubDate>Wed, 29 Sep 2021 21:26:56 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/09/another-year-passed-22/</guid>
      <description>&lt;p&gt;So 22 now.&lt;/p&gt;
&lt;p&gt;During the midday cake cutting ceremony, I was surprised to find that I&amp;rsquo;m 22 now and not 21. 22 seems older, 21 feels young.&lt;/p&gt;
&lt;p&gt;It so happened that my birthday coincided with my house shifting. We shifted place after  almost eight years at this place. Lots of usual troubles, getting stuff from here to there, which is in fact 200 meters from the present one. Internet, all the house stuff, utilities, everything needs to be moved. I wasn&amp;rsquo;t feeling anything earlier, but the feelings have started pricking now. I was seeing this as a great shift refresh where all the useless stuff was moved out, thrown or cleaned. Sold 63.55 kg of stationers, textbooks and study materials; a boot full of stuff that was (now I mostly have fictions and other good stuff left ;)). It was/is a new start. The past one was rented, as does the present one. But the attachment remains. The transferrable nature of father&amp;rsquo;s job had this that we moved places (many a times states) every three-four years, but then I was smaller, now a bit older. Eventually, with time, this one will start feeling like home.&lt;/p&gt;
&lt;p&gt;This year also saw my foray into professional life. It&amp;rsquo;s tiresome and long at times, it&amp;rsquo;s a job after all. Now I do earn, more than I expected, but after the first one-two months, it has become just something that lands in the account on the last date of the month.&lt;/p&gt;
&lt;p&gt;A significant new development was my new-found interests in servers and system administration (which may have played a big part in landing my Quality Assurance engineer job). I wasn&amp;rsquo;t conscious, but a recent discussion about hosting my own XMPP server with &lt;a href=&#34;https://ravidwivedi.in&#34;&gt;Ravi&lt;/a&gt; and his mentioning &amp;ldquo;You are the one running almost every server now, except mails&amp;rdquo; made me aware that I do run quite a &lt;a href=&#34;https://blog.sahilister.in/2021/07/services-that-i-self-host-july-2021-edition/&#34;&gt;bunch of services&lt;/a&gt; now. It&amp;rsquo;s like if I see a permanent need, I usually do start running a particular service now without second thoughts.&lt;/p&gt;
&lt;p&gt;A bunch of stuff that happened in the past year wouldn&amp;rsquo;t have been possible if I didn&amp;rsquo;t have a reliable high speed internet connection. Even now, when I&amp;rsquo;m waiting for my internet connection migration to my new place, I can feel how important this is. Most of the stuff I did, I hadn&amp;rsquo;t had to think twice about the internet connection fumbling; 4k video streams, long HD video calls, handling large video files or simply learning something, each of these were a breeze. This is a privilege which many people don&amp;rsquo;t have, which I should bear in mind more. It&amp;rsquo;s just that I&amp;rsquo;m in city areas where high speed fiber to home lines are laid and economical due to competition, albeit less, but affordable.&lt;/p&gt;
&lt;p&gt;Lastly, partly due to seeing loads of travels vlogs and partially due to change in my liking, I do often travel to unexplored streets and corners of the city all alone. Covid has this that travelling outstation isn&amp;rsquo;t doable as much, but going to this unexplored city areas give a different sort of kick. I just love them and want to continue going out to these places, mostly alone, to appreciate these and taking the time to slow down wherever I like.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>TIL - PostSecret</title>
      <link>https://blog.sahilister.in/2021/09/til-postsecret/</link>
      <pubDate>Fri, 24 Sep 2021 16:42:39 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/09/til-postsecret/</guid>
      <description>&lt;p&gt;Came across this project called &lt;a href=&#34;https://postsecret.com/&#34;&gt;PostSecret&lt;/a&gt; on search of interesting websites. PostSecret is a project where people send a postcard, with a secret they wanted to share, anonymously, which get publicly viewable at the website &lt;a href=&#34;https://postsecret.com/&#34;&gt;&lt;em&gt;PostSecret.com&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here are the instructions from the website:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/postsecret-postcard.webp&#34; alt=&#34;Share a secret postcard&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;
       Share a secret instructions from &lt;a href=&#34;https://postsecret.com/&#34;&gt;PostSecret.com&lt;/a&gt;. &lt;br&gt;
       Copyright © &lt;a href=&#34;https://postsecret.com/&#34;&gt;PostSecret.com&lt;/a&gt;. Under fair dealing. 
    &lt;/i&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;p&gt;The experiment which eventually turned into this website show&amp;rsquo;s how interesting an unknown secret can be; it&amp;rsquo;s peaceful at times, sad at others or just too damn funny. Also check out the &lt;a href=&#34;https://www.ted.com/talks/frank_warren_half_a_million_secrets&#34;&gt;Half a million secrets - TED talk&lt;/a&gt; by Frank Warren, the person behind PostSecret, this is a good one, I must admit.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>I Have No Idea You&#39;re Reading This</title>
      <link>https://blog.sahilister.in/2021/07/i-have-no-idea-youre-reading-this/</link>
      <pubDate>Thu, 29 Jul 2021 22:19:29 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/07/i-have-no-idea-youre-reading-this/</guid>
      <description>&lt;p&gt;From the beginning, this site had no analytics of any kind. It&amp;rsquo;s a static site which mostly loads three files, an HTML file, a stylesheet and CC license image at the bottom. It&amp;rsquo;s hosted on GitLab pages, so no analytics from the platform as well. Having no analytics is good due to two main reasons. First it gives peace of mind, frankly because I&amp;rsquo;m a big fan of looking at tech graphs and numbers. No numbers from the blog takes away the option of compulsively looking at page views or traffic data, which helps me concentrate on just thinking and writing. Secondly, most analytics tools and services are just bad in terms of privacy.&lt;/p&gt;
&lt;p&gt;I personally subscribe to blogs and other writings through RSS feeds in Thunderbird because it gives me bare writings, media and nothing else. No fancy styling, JavaScript or distracting themes. This blog is syndicated, in full, on &lt;a href=&#34;https://planet.fsci.in/&#34;&gt;FSCI Planet&lt;/a&gt; and on blog&amp;rsquo;s &lt;a href=&#34;https://blog.sahilister.in/index.xml&#34;&gt;RSS feed&lt;/a&gt; &lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;. I encourage you to consume it through those if you don&amp;rsquo;t feel like visiting the blog again and again.&lt;/p&gt;
&lt;p&gt;Also, if you&amp;rsquo;re reading this, feel free to say hi (hello works just as well ;)). Email in the &lt;a href=&#34;https://blog.sahilister.in/about/&#34;&gt;about section&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;If you&amp;rsquo;re new to the concept of web/RSS feeds, read about it &lt;a href=&#34;https://ncase.me/rss/&#34;&gt;here&lt;/a&gt;.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>It Get&#39;s Better</title>
      <link>https://blog.sahilister.in/2021/07/it-gets-better/</link>
      <pubDate>Sun, 25 Jul 2021 21:43:22 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/07/it-gets-better/</guid>
      <description>&lt;p&gt;It gets better, however life is now, it gets better. Whatever situation, hardship, existential thoughts/crisis one is facing now, things work out in the end. I highly encourage you to see &amp;lsquo;Episode 17 - The Watchman - &lt;em&gt;चौकीदार&lt;/em&gt;&amp;rsquo; of Doordarshan&amp;rsquo;s &lt;em&gt;Malgudi Days&lt;/em&gt; on &lt;a href=&#34;https://www.youtube.com/watch?v=5hdFB-7yGzc&#34;&gt;YouTube&lt;/a&gt; (on &lt;a href=&#34;https://yewtu.be/watch?v=5hdFB-7yGzc&#34;&gt;Invidious&lt;/a&gt; or &lt;a href=&#34;https://piped.kavin.rocks/watch?v=5hdFB-7yGzc&#34;&gt;Piped&lt;/a&gt;) to see what I meant here.&lt;/p&gt;
&lt;p&gt;On a personal level, my &amp;lsquo;&lt;a href=&#34;https://blog.sahilister.in/2021/05/college-over/&#34;&gt;College Over&lt;/a&gt;&amp;rsquo; post two months back wasn&amp;rsquo;t an optimistic one. Things seem not so good with the ending of college and no particular path in mind. Now, as I&amp;rsquo;m writing this, I&amp;rsquo;m working with MakeMyTrip as Quality Assurance engineer (or SDET ;)) and will complete two months with them on the coming 10th. It happened all of a sudden.  Everything seems fine, colleagues are great and helpful, the package is great (more than I even thought of). I look back and see how things change, and mostly for the better. Looking further back, 11th-12th were grueling times, so much so that I didn&amp;rsquo;t visit my native place for two years. Stressful times those were, but it turned out fine in the end.&lt;/p&gt;
&lt;p&gt;In yester-month when &lt;em&gt;Battlegrounds Mobile India (BGMI)&lt;/em&gt; was launched, and I got it on my new phone, I was discussing it with Abhay in-game. Two-three years back, when &lt;em&gt;PUBG Mobile&lt;/em&gt; was a thing, me and Abhay had multiple issues playing it. My mobile would sweat and heat up while running it. I would sit outside in veranda  to even  get reasonable internet connection. Now both, me and Abhay have relatively capable mobile devices with fiber internet connections at home (and both have entered professional life) so playing it is easier and more fun now. Things are better now.&lt;/p&gt;
&lt;p&gt;In the end, I would like to conclude with Shahrukh Khan&amp;rsquo;s dialogue -
&lt;br&gt;&lt;em&gt;[&amp;hellip;] अगर सब ठीक ना हो, तो दी एनड़ नहीं है दोस्तों; पीचर अभी बाकी हैं।&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Translation and &lt;a href=&#34;https://youtu.be/D6eJo5XdMhc&#34;&gt;actual video&lt;/a&gt; (on &lt;a href=&#34;https://yewtu.be/watch?v=D6eJo5XdMhc&#34;&gt;Invidious&lt;/a&gt; or &lt;a href=&#34;https://piped.kavin.rocks/watch?v=D6eJo5XdMhc&#34;&gt;Piped&lt;/a&gt;) of complete dialogue.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Services That I (Self) Host - July 2021 Edition</title>
      <link>https://blog.sahilister.in/2021/07/services-that-i-self-host-july-2021-edition/</link>
      <pubDate>Sat, 17 Jul 2021 15:40:57 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/07/services-that-i-self-host-july-2021-edition/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s been a year since I started fiddling with servers (expiration of AWS 12 months free tier on 30th June told me that). Most of the stuff just manages fine (or that&amp;rsquo;s what I believe).&lt;/p&gt;
&lt;p&gt;Presently, following are all the virtual rigs I manage for personal stuff:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Two &lt;strong&gt;AMD Compute VMs&lt;/strong&gt; on always free tier with 1/8th OCPU with 1 GB RAM and 2 GB swap each.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure B1S Standard&lt;/strong&gt; on student account with 1 GB RAM and 2 GB swap.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hetzner CPX21&lt;/strong&gt; with 3 vCPU, 4 GB RAM and 4 GB swap.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These rigs power the following, ever evolving list of software packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Nextcloud&lt;/strong&gt;, through snap. Snap, snap because LAMP stack is messy (atleast for me) and getting the native package up for Nextcloud is too. More than files sharing,  it now powers my music streaming, RSS feed reader, notes, forms and a bunch of other stuff through add-ons. Snap handles updates on its own but nowadays, it&amp;rsquo;s giving storage troubles, let&amp;rsquo;s see about that later (or it will go down and come back as fresh install which I dread, considering the number of additional add-on services and apps I have to reconfigure).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Lounge&lt;/strong&gt; as an IRC bouncer and web client. It&amp;rsquo;s a progressive web app (PWA) so added it on mobile for native-like experience without a dedicated app. Probably the coolest and easiest IRC setup on mobile, though I usually lurk IRC through desktop more ;). IRC was one of the biggest reason I quickly picked a Hetzner server and migrated The Lounge from AWS as the free tier credits expired on 30th.&lt;/li&gt;
&lt;li&gt;Temporary file sharing and pastebin through &lt;strong&gt;linx-server&lt;/strong&gt;, using docker. Why docker? Just that I was fiddling with docker when I came across this, and hence linx-server rolled with docker.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blog mirror&lt;/strong&gt;, with this &lt;a href=&#34;https://blog.sahilister.in/2021/04/script-to-automatically-mirror-blog-on-seperate-domain/&#34;&gt;mirror script&lt;/a&gt;. It mirrors my blog hosted through GitLab Pages on my server, viewable at &lt;a href=&#34;https://blog.mirror.sahilister.in/&#34;&gt;blog.mirror.sahilister.in&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wireguard&lt;/strong&gt; for virtual private network (VPN).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Searx&lt;/strong&gt; as meta-search engine.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;rsquo;m working to setup the following service:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Prosody&lt;/strong&gt;, an XMPP server for experimenting and learning the complicated XMPP ecosystem.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;PS: This post was inspired from &lt;a href=&#34;https://bsd.network/@h3artbl33d/106541046199854963&#34;&gt;this thread&lt;/a&gt; on Mastodon (archive link &lt;a href=&#34;https://web.archive.org/web/20210708073903if_/https://bsd.network/@h3artbl33d/106541046199854963&#34;&gt;here&lt;/a&gt;. Also, it seems most folks have reply set to some non-public setting, login through your fedi account to see the complete thread). People self host crazy amount of stuff and  email ;)&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Iconic Manhole Covers are Getting Replaced in Chandigarh</title>
      <link>https://blog.sahilister.in/2021/07/iconic-manhole-covers-are-getting-replaced-in-chandigarh/</link>
      <pubDate>Mon, 12 Jul 2021 22:16:35 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/07/iconic-manhole-covers-are-getting-replaced-in-chandigarh/</guid>
      <description>&lt;p&gt;Recently, I came across the following news:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/chandigarh-manhole-cover-newspaper-report.jpg&#34; alt=&#34;Newspaper report of Chandigarh administration plan to replace the iconic manholes to prevent theft, smuggling&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
    &lt;i&gt;
        Newspaper report of Chandigarh administration plan to replace the iconic manholes to prevent theft, smuggling. &lt;a href=&#34;https://blog.sahilister.in/img/chandigarh-manhole-cover-newspaper-report.jpg&#34;&gt;Click to enlarge&lt;/a&gt;
    &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;Chandigarh administration is planning to replace the iconic manhole covers of Chandigarh. To give you some history lesson on Chandigarh, the city is a planned city with grid layout called sectors. It was developed post India&amp;rsquo;s independence to serve as capital of Indian state of Punjab. The erstwhile Punjab got bifurcated into East Punjab (now Punjab, India) and West Punjab (now Punjab, Pakistan) with then capital, Lahore going to West Punjab. Existing cities like Amritsar, Jalandhar and Ludhiana were rejected for capital due to various reasons and the decision was made to develop a brand new capital from ground up in the foothills of Shivalik Range. It was to be India&amp;rsquo;s first planned city, which was designed by Swiss-French architect Le Corbusier with help from his cousin and fellow architect Pierre Jeanneret and English couple Maxwell Fry and Jane Drew alongside a number of Indian planners and architect. It was completed in the 1960s. The manhole cover was part of the original plan and were designed by Le Corbusier himself.&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/chandigarh-manhole-cover.jpg&#34; alt=&#34;Chandigarh&amp;rsquo;s iconic manhole cover image&#34;&gt;&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;&lt;i&gt;
         &lt;a href=&#34;https://www.flickr.com/photos/67987420@N00/277580106&#34;&gt;Chandigarh Manhole cover&lt;/a&gt; by
         &lt;a href=&#34;https://www.flickr.com/photos/67987420@N00&#34;&gt;Rossipaulo&lt;/a&gt; under
         &lt;a href=&#34;https://creativecommons.org/licenses/by/2.0/?atype=rich&#34;&gt;CC BY 2.0&lt;/a&gt; 
         &lt;/i&gt;
&lt;/div&gt;
&lt;p&gt;These were cast iron manhole covers which had Chandigarh&amp;rsquo;s map inscribed over them. All the grid roads, neatly dividing Chandigarh into sectors, Sukhna lake on the right and rivulet flowing in periphery of Chandigarh can be seen on the manhole covers. I remember seeing two variations of these, but have no means to confirm if there were indeed two versions made back then. The first time I came across this was probably in 2012-13, I observed the manhole cover with great surprise. I wasn&amp;rsquo;t aware of the historical context to them then. The resemblance to actual map was incredible, and I spent quite sometime standing and literally observing the or a manhole cover. Eventually, I started finding them in random places, Inter State Bus terminal - 43, Manimajra market, city footpath amongst other places. I can&amp;rsquo;t remember the number of times, I have stopped over these in various places and showed them to my mates and how these are actual maps of Chandigarh. These always to get me pumped. They along with the original grid roads, capitol complex and other structures have seen more than six decades of urbanization of Chandigarh. From a bunch of villages on the foothills of Shivalik range to one of the biggest cities in North India.&lt;/p&gt;
&lt;p&gt;Just like other historical artifacts of Chandigarh, these manhole covers were auctioned in international markets for as high as 10-11 lakhs INR. These and other factors have lead to multiple instances of theft and smuggling of these, leading to the ultimate decision of removal of them completely. Now they would be stowed away in some governmental warehouse and left to negligence.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: &lt;a href=&#34;https://janusworx.com/&#34;&gt;Jason&lt;/a&gt; shared &lt;a href=&#34;https://www.messynessychic.com/2020/09/01/indias-overlooked-concrete-city-of-oz/&#34;&gt;&amp;lsquo;India’s Overlooked Concrete City of Oz&amp;rsquo;&lt;/a&gt; which shows the beautiful side of Chandigarh and some historical information. Do check it out.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Subscribing to Google Groups Without a Gmail Account</title>
      <link>https://blog.sahilister.in/2021/07/subscribing-to-google-groups-without-a-gmail-account/</link>
      <pubDate>Tue, 06 Jul 2021 20:30:53 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/07/subscribing-to-google-groups-without-a-gmail-account/</guid>
      <description>&lt;p&gt;Recently, I wanted to move a Google Group hosted community subscription away from my erstwhile Gmail account to my custom domain mailbox. It&amp;rsquo;s not inherent that a non-Gmail account can also be used to participate in discussions via mail, though it takes away the ability to join the discussion via the website.&lt;/p&gt;
&lt;p&gt;A search after, here&amp;rsquo;s the trick, just append &lt;code&gt;+subscribe&lt;/code&gt; to group&amp;rsquo;s name in group&amp;rsquo;s full email address, enter in &amp;ldquo;To&amp;rdquo; field and hit send from desired mailbox. For example, to subscribe to &amp;ldquo;Example&amp;rdquo; group with address &lt;em&gt;example@googlegroups.com&lt;/em&gt;, email  &lt;em&gt;example+subscribe@googlegroups.com&lt;/em&gt;. The content of the mail doesn&amp;rsquo;t matter. It will revert with a confirmation mail, reply to it. If the group moderator/admin has enabled moderation queue (or something that Google Group offer), the request will land in moderation queue for them to approve first else an email notifying successful subscription will arrive. Similarly, to unsubscribe, just email to &lt;em&gt;example+unsubscribe@googlegroups.com&lt;/em&gt; .&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: While writing this post, I stumbled upon this &lt;a href=&#34;https://webapps.stackexchange.com/questions/13508/how-can-i-subscribe-to-a-google-mailing-list-with-a-non-google-e-mail-address&#34;&gt;Stack Overflow thread&lt;/a&gt;, which chronicles some alternate methods of subscription. Also, some folks in the thread mention their Gmail address getting subscribed to the list instead of desirous email for various reason, so bear that in mind too.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Getting a Cloak on OFTC</title>
      <link>https://blog.sahilister.in/2021/07/getting-a-cloak-on-oftc/</link>
      <pubDate>Sat, 03 Jul 2021 08:26:03 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/07/getting-a-cloak-on-oftc/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m exploring IRC a bit and kind of like it as well. It&amp;rsquo;s simple, fast and minimal in terms of resources usage. Recently, I registered my nick, sahilister on OFTC. Feel free to ping ;)&lt;/p&gt;
&lt;p&gt;Getting a user cloak on OFTC is not as quick &lt;a href=&#34;https://blog.sahilister.in/2021/06/getting-a-cloak-on-libera-chat/&#34;&gt;as on Libera Chat&lt;/a&gt;, but it&amp;rsquo;s easy. They provide &lt;code&gt;&amp;lt;uuid&amp;gt;.user.oftc.net&lt;/code&gt; and &lt;code&gt;&amp;lt;nick&amp;gt;.user.oftc.net&lt;/code&gt; . The canonical source of information for user cloak on OFTC can be found &lt;a href=&#34;https://www.oftc.net/UserCloaks/&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Steps to get a user cloak boils down to following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Register account on IRC.&lt;/li&gt;
&lt;li&gt;Login and verify account on &lt;a href=&#34;https://services.oftc.net/&#34;&gt;&lt;em&gt;services.oftc.net&lt;/em&gt;&lt;/a&gt; by solving a reCAPTCHA.&lt;/li&gt;
&lt;li&gt;(cloak option 1) for quick, non-personalized &lt;code&gt;&amp;lt;uuid&amp;gt;.user.oftc.net&lt;/code&gt; cloak, simply text following on IRC:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/msg nickserv SET CLOAK ON
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;(cloak option 2) personalized &lt;code&gt;&amp;lt;nick&amp;gt;.user.oftc.net&lt;/code&gt; can be availed by emailing registered nick to &lt;em&gt;cloakrequest AT oftc.net&lt;/em&gt; . This isn&amp;rsquo;t an automated process, so would take time according to staff availability.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;PS - You can find an incomplete list of IRC networks and if user cloaks are available on them under &amp;ldquo;Known Networks&amp;rdquo; on &lt;a href=&#34;https://bnc4free.com/?page_id=63&#34;&gt;this page on BNC4Free&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Command-line lore: Convert Images Using ImageMagick</title>
      <link>https://blog.sahilister.in/2021/06/command-line-lore-convert-images-using-imagemagick/</link>
      <pubDate>Sun, 27 Jun 2021 18:18:24 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/06/command-line-lore-convert-images-using-imagemagick/</guid>
      <description>&lt;p&gt;Another series, command-line lore. It will primarily document some quick command-line tricks.&lt;/p&gt;
&lt;p&gt;In this particular post, we&amp;rsquo;ll discuss various quick stuff that can be done through &lt;a href=&#34;https://imagemagick.org/&#34;&gt;ImageMagick&lt;/a&gt;. ImageMagick is used to create, edit, compose or convert digital images. It has both GUI and CLI applications.&lt;/p&gt;
&lt;p&gt;On Debian/Ubuntu systems, just do the following to grab the package:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install imagemagick
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ImageMagick includes a &lt;a href=&#34;https://legacy.imagemagick.org/script/command-line-tools.php&#34;&gt;number of command-line utilities&lt;/a&gt;, but we mainly require &lt;code&gt;convert&lt;/code&gt; from the suite.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note - ImageMagick is moving towards v7 which doesn&amp;rsquo;t have &lt;code&gt;convert&lt;/code&gt; and other utilities available in v6 (legacy), so the following stuff won&amp;rsquo;t work in v7.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;table-of-content&#34;&gt;Table of Content&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#append-images-together&#34;&gt;Append images together&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#rotate-image&#34;&gt;Rotate image&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#convert-image-to-different-format&#34;&gt;Convert image to different format&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#crop-or-resize-image&#34;&gt;Crop or resize image&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;append-images-together&#34;&gt;Append images together&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Append images vertically together:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;convert image1.png image2.png -append output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Append images horizontally together:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;convert image1.png image2.png +append output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;rotate-image&#34;&gt;Rotate image&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Rotate by specifying the angle for rotation, moving towards right:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;convert image.png -rotate &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;90&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;180&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;270&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt; output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;convert-image-to-different-format&#34;&gt;Convert image to different format&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Convert image between image formats:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;convert image.jpg output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Convert an image to PDF format:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;convert image.jpg output.pdf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Note - ImageMagick started blocking image to PDF conversion due to a security issue. You can read more and how to enable it back on &lt;a href=&#34;https://stackoverflow.com/questions/52998331/imagemagick-security-policy-pdf-blocking-conversion&#34;&gt;&lt;em&gt;Stack OverFlow&lt;/em&gt;&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Combine multiple images and make a PDF:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;convert image1.jpg image2.jpg output.pdf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;crop-or-resize-image&#34;&gt;Crop or resize image&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Scale an image to a defined size:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;convert image.jpg -resize 50% output.jpg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Scale an image to a defined pixel size:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;convert image.jpg -resize 32x32 output.jpg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    
    
    
    <item>
      <title>Experience Volunteering for FSCI Jitsi Meet Campaign</title>
      <link>https://blog.sahilister.in/2021/06/experience-volunteering-for-fsci-jitsi-meet-campaign/</link>
      <pubDate>Sat, 19 Jun 2021 09:22:24 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/06/experience-volunteering-for-fsci-jitsi-meet-campaign/</guid>
      <description>&lt;p&gt;FSCI Jitsi Meet instance was in beta before I formally got involved with FSCI. It was closed later and a formal crowdfunding campaign proposal was started, which I promptly joined. On a personal level, I wanted to support a privacy respecting, community managed service. I didn&amp;rsquo;t have much system administration and server management skills back then so joined to give my support, help in whatever way possible and donate a bit too. Eventually I started fiddling with Jitsi Meet on personal servers, first public facing service hosted on personal server. It&amp;rsquo;s an easy software to host. Spent the next few months fiddling and playing with the configurations. Migrated all my video calls with friends to the personal, tiny 1 GB, 1 vCPU AWS EC2 instance. As it was miniscule, it wouldn&amp;rsquo;t handle more than 5-6 users, so the plan was to devote efforts toward the FSCI Jitsi Meet server and decommission the personal instance when that&amp;rsquo;s up. Also wrote &lt;a href=&#34;https://blog.sahilister.in/2021/02/quick-wiki-jitsi-meet/&#34;&gt;quick-wiki for Jitsi&lt;/a&gt; along the way (which is utilized every fortnight and keeps getting new changes).&lt;/p&gt;
&lt;p&gt;On the campaign front, the things were a little slow, partially due to FSCamp and other community events occurring in the same time period. The initial campaign text was collaboratively written in English, which was duly translated into Malayalam and Hindi. I (accidentally) volunteered for the campaign website. The website was to host multilingual campaign content and was to be a static site. I choose to work with Hugo as I had previous experience with it, though the multilingual part turned out harder than I initially thought. Finally, I made the decision of forking the FSCI main website, which already supported multilingual content thanks to efforts by &lt;a href=&#34;https://abrahamraji.in/&#34;&gt;Abraham Raji&lt;/a&gt;, &lt;a href=&#34;https://kskarthik.gitlab.io/&#34;&gt;Karthik&lt;/a&gt; and others. I reworked it around the campaign video and hosted it on GitLab Pages. You can see it live on &lt;a href=&#34;https://fund.fsci.in/&#34;&gt;&lt;em&gt;fund.fsci.in&lt;/em&gt;&lt;/a&gt; and also &lt;a href=&#34;https://gitlab.com/fsci/fsci-jitsi-meet-campaign-website&#34;&gt;improve it on GitLab&lt;/a&gt;. Feel free to reuse it under GPL v3.0 license (license used upstream). The campaign video was truly a collaborative effort. It features many speakers, telling the importance of the service and various other facts in different languages. I wasn&amp;rsquo;t part of the video, but it took loads of people and hours to come up with the script, editing the video, retakes and audio synchronization. You can view the video on campaign website ie &lt;a href=&#34;https://fund.fsci.in/&#34;&gt;&lt;em&gt;fund.fsci.in&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The server location and configurations was discussed and decided by Akhil, our resident Sysadmin and campaign manager. He took care of bringing the campaign together. It was to be a Hetzner CPX31 machine with 4 vCPU, 8 GB RAM and 160 GB storage. As discussed, Mridul volunteered to do the installation and setup. Kiran volunteered an account for the campaign funds as well as work as the treasurer. Praveen made the first donation to bootstrap the server. Now in &lt;a href=&#34;https://blog.sahilister.in/2021/04/experience-attending-free-software-camp-2020/&#34;&gt;Free Software Camp&lt;/a&gt;, it was suggested and expected that folks who took up system administration and self-hosting idea will help manage some services under FSCI and &lt;a href=&#34;https://diasp.in/&#34;&gt;&lt;em&gt;diasp.in&lt;/em&gt;&lt;/a&gt; umbrella including setting up of the Jitsi Meet instance. During the course of mentorship, I got the opportunity and demonstrated the process of setting up Jitsi Meet, albeit with some issues which were sorted out with help from &lt;a href=&#34;https://manav.co.in/&#34;&gt;Manav&lt;/a&gt; and Praveen. Eventually all the attendee learners, Mridul and Sooraj and I believe Delphin got around setting it up on their personal infra. Mridul then volunteered to setup FSCI Jitsi Meet instance, which he finally did with some assistance from Manav and me. Hence, the campaign was launched with the service open to public on &lt;a href=&#34;https://meet.fsci.in/&#34;&gt;&lt;em&gt;meet.fsci.in&lt;/em&gt;&lt;/a&gt;, to test and use.&lt;/p&gt;
&lt;p&gt;Initial plan was getting the service up and running. For recording and streaming purposes, we plan to implement Jibri (Jitsi Broadcasting Infrastructure) with custom setup as done on &lt;a href=&#34;https://vc.autistici.org/&#34;&gt;Autiscti&amp;rsquo;s Jitsi Meet instance&lt;/a&gt;. Autistici  provides the option to record the meeting sans Dropbox and providing a URL to download the recording after it ends. Did ask folks at Autistici how they implement that feature. They were generous enough to share their custom scripts and setup procedure, though I&amp;rsquo;m still wrapping my head around it. Will probably setup streaming feature first for streaming on YouTube and Peertube. Will setup and test the setup on private infra in the beginning of next month and if things succeed will implement it on FSCI Jitsi Meet instance. Recording will follow suite. Just not sure how long that would take.&lt;/p&gt;
&lt;p&gt;The service has seen organic growth in terms of changes and usage. The community uses it for all the activities we organize or partake in. Issues, problems and improvements are discussed in the &lt;a href=&#34;https://matrix.to/#/#meet.fsci.in:poddery.com?via=matrix.org&amp;amp;via=poddery.com&amp;amp;via=diasp.in&#34;&gt;dedicated room for the service&lt;/a&gt;. As its community owned and operated service, folks address this technology as skilled users rather than just consumers. Folks are provided know-how and most issues are sorted when they come to notice. I believe it&amp;rsquo;s a learning experience for everyone. I use it daily for my video meetings with friends and other purposes. Being a user and administrator of the service does give me access to debug issues as soon as they come to my notice.&lt;/p&gt;
&lt;p&gt;While writing this text, I asked Ravi what he has to say about the campaign. Copying what he replied:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The beauty of community run services is that it invites people to be the change they want to see in the world, rather than relying on others to care for them. The reason why we (FSCI) set up our own services in the first place is to provide alternatives to privacy-invading technologies to users. Users cannot rely on corporate services for their privacy, and they cannot stop using such services if there are no alternatives. Our services are run by volunteers and fund is raised through donations by public &lt;a href=&#34;https://en.wikipedia.org/wiki/Crowdfunding&#34;&gt;crowdfunding&lt;/a&gt;, and so we do not have an incentive to make profit from user&amp;rsquo;s data.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;— &lt;cite&gt;Ravi&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It&amp;rsquo;s been mostly a success technology wise, barring a few issues. Jitsi Meet is relatively reliable software. On the crowdfunding side, the campaign has yet raised 47% out of initial campaign target of 62,500 INR (two year expenses). If you use any big video conferencing service or looking for a private, community run video conferencing solution, do give our &lt;a href=&#34;https://meet.fsci.in/&#34;&gt;Jitsi Meet instance&lt;/a&gt; a try. It&amp;rsquo;s open for the public to use just like other freedom respecting &lt;a href=&#34;https://fsci.in/#poddery&#34;&gt;services&lt;/a&gt; under FSCI umbrella.  If you are interested in using the service and the ideals behind running it, donate towards the crowdfunding at &lt;a href=&#34;https://fund.fsci.in/#Donate&#34;&gt;&lt;em&gt;fund.fsci.in&lt;/em&gt;&lt;/a&gt;. It would be much appreciated.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Getting a Cloak on Libera Chat</title>
      <link>https://blog.sahilister.in/2021/06/getting-a-cloak-on-libera-chat/</link>
      <pubDate>Fri, 18 Jun 2021 08:34:37 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/06/getting-a-cloak-on-libera-chat/</guid>
      <description>&lt;p&gt;Hostnames/IPs are fetched by a simple reverse DNS lookup on joining an IRC network. IRC cloaks or &amp;ldquo;virtual hosts&amp;rdquo; are used to hide the displayed IP/hostname or to show affiliation with a certain project.  Cloaks can be as simple &lt;em&gt;nick@user/nick&lt;/em&gt; or &lt;em&gt;nick@wikimedia/nick&lt;/em&gt; inplace of &lt;em&gt;nick@123.45.67.89&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;You can get a cloak from projects you&amp;rsquo;re affiliated with like from &lt;a href=&#34;https://meta.wikimedia.org/wiki/IRC/Cloaks#Obtaining_a_cloak&#34;&gt;Wikimedia&lt;/a&gt;, &lt;a href=&#34;https://wiki.ubuntu.com/IRC/Cloaks&#34;&gt;Ubuntu&lt;/a&gt; and others. They will provide project specific cloaks depending on level of involvement. If you&amp;rsquo;re not affiliated or don&amp;rsquo;t want one from them on libera.chat, simply join &lt;code&gt;#libera-cloak&lt;/code&gt; channel and request one. The bots there will automatically provide you &lt;em&gt;@user/nick&lt;/em&gt; cloak. Bear in mind, the channel is set to &lt;code&gt;+r&lt;/code&gt; mode, so you need to register with &lt;code&gt;NickServ&lt;/code&gt; to join the channel.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>RSS Feeds, IRC and File Sharing</title>
      <link>https://blog.sahilister.in/2021/06/rss-feeds-irc-and-file-sharing/</link>
      <pubDate>Wed, 02 Jun 2021 17:45:11 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/06/rss-feeds-irc-and-file-sharing/</guid>
      <description>&lt;p&gt;&lt;em&gt;A quick, note-taking, experience post. The thing that binds all three services is that they&amp;rsquo;re all running on the same server and under various subdomains of my experimental domain, sahil.rocks.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s start chronologically with RSS feeds. After a discussion with Sooraj (learner from FS Camp, 2020), we decided upon having a session on FreshRSS installation for RSS feeds. I hadn&amp;rsquo;t tried it myself, so said we&amp;rsquo;ll have that after some days. Frankly speaking, I&amp;rsquo;m still a toddler in SQL database management (MariaDB in this case) and I knew I would need to figure out DB and let the learners know about the basics as well. Finally, FreshRSS was up and running using the &lt;a href=&#34;https://freshrss.github.io/FreshRSS/en/admins/01_Index.html&#34;&gt;official documentation&lt;/a&gt; and Miguel Stevens&amp;rsquo;s &lt;a href=&#34;https://notflip.be/blog/freshrss-on-linux/&#34;&gt;Installing FreshRSS on Linux article&lt;/a&gt;. Things went fine except for PHP. It makes me wonder how were folks managing PHP in LAMP stack setups, speaking specifically from a Debian perspective. Do ping, if you are/were doing it nicely. Coming back to FreshRSS, I forwarded Miguel&amp;rsquo;s article to Sooraj because it wasn&amp;rsquo;t much of a work warranting a full session. Personally, FreshRSS is still up and hosted. Not using it much (thunderbird FTW!). Will try to host Miniflux, that looks more of my taste.&lt;/p&gt;
&lt;p&gt;Next came Internet Relay Chat (IRC), the de-facto communication platform for Free Software communities. I call myself a [matrix] native, usually bridging into IRC channels. The recent turmoil on Freenode piqued my interest in IRC. Earlier I was looking at ZNC as a bouncer but in a discussion, &lt;a href=&#34;https://dhanesh.sabane.in/&#34;&gt;Dhanesh&lt;/a&gt; suggested &lt;a href=&#34;https://thelounge.chat/&#34;&gt;The Lounge&lt;/a&gt;. I had &lt;a href=&#34;https://blog.sahilister.in/2020/09/simple-irc-bouncer-using-the-lounge/&#34;&gt;The Lounge setup through Yunohost&lt;/a&gt; back in September 2020. That installation was triggered by an issue with Element back then. Similarly, an issue with Matrix triggered/quickened the installation of native, The Lounge. The Lounge, in public mode is a web IRC client while in private mode, it also works a persistent IRC bouncer and client. As it&amp;rsquo;s a PWA made in JavaScript, installation was easy (and available via quite a few methods). Created a user and started exploring IRC undergrounds. Earlier, I was aware of just Freenode, Libera Chat and OFTC but researching got me into various interesting channels on TildeIRC (probably the coolest), Rizen and DalNet. I&amp;rsquo;m lurking under various nicks in about 30+ channels right now. It gives that laid back, chill hacker vibe. IRC world is big, filled with lots of jargon (of which I have to learn quite a lot). Dhanesh mentioned that we can have The Lounge setup on diasp.in if the community agrees. No objections as of now, talks are on, let&amp;rsquo;s see. I&amp;rsquo;ll probably write a full quick-wiki for The Lounge, it does have quite a few configurations to note.&lt;/p&gt;
&lt;p&gt;The latest installation was for public file and code sharing through &lt;a href=&#34;https://github.com/ZizzyDizzyMC/linx-server/&#34;&gt;linx-server&lt;/a&gt;. I was using &lt;a href=&#34;https://envs.sh/&#34;&gt;envs.sh&lt;/a&gt; a lot for quick files and image sharing. I explored the option of self-hosting &lt;a href=&#34;https://github.com/mia-0/0x0&#34;&gt;The Null Pointer&lt;/a&gt;, software powering envs.sh&amp;rsquo;s service, but Python and less control weren&amp;rsquo;t sitting well, so the idea was dropped. Not sure how I landed on linx-server&amp;rsquo;s GitHub repository (and then it&amp;rsquo;s active fork). It&amp;rsquo;s minimal, works on minimum resources and has an active fine-grained purging mechanism.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/linx-server.png&#34; alt=&#34;linx-server interface&#34;&gt;
&lt;i&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
linx-server&amp;rsquo;s minimal interface
&lt;/div&gt;
&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Decided to get it via docker, my first public facing docker installation. Setting the upload limit to 512 MB with maximum expiry time of a day gave the right balance. Though it hit nginx&amp;rsquo;s default upload limit ie a &lt;code&gt;413 Request Entity too large&lt;/code&gt; error. This was sorted by increasing value of &lt;code&gt;client_max_body_size&lt;/code&gt; variable to 512 MB. Uploads are not encrypted on the server, but that&amp;rsquo;s fine in my case.&lt;/p&gt;
&lt;p&gt;I plan to keep using The Lounge (either on my server or on community&amp;rsquo;s server) and linx-server. FreshRSS would be purged to be replaced with Miniflux. Though, the present installation with FreshRSS, The Lounge and linx-server are using only 382 MB of memory with minimal CPU usage. Highly recommend checking out all three services.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>College Over</title>
      <link>https://blog.sahilister.in/2021/05/college-over/</link>
      <pubDate>Sun, 30 May 2021 01:19:39 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/05/college-over/</guid>
      <description>&lt;p&gt;And finally the day came. Today (or rather yesterday), I gave my final presentation and viva. BTech. (or BE officially) is almost done. My university will probably start handing out degrees in a few months, officially tagging me as a &amp;ldquo;Graduate&amp;rdquo;. It isn&amp;rsquo;t an emotional moment in any way. There would be no farewell ceremony (due to COVID) and prolonged isolation due to the pandemic starting last year, my 3rd year in college did away will all the things that could have made it emotional in any way. To be frank, I wasn&amp;rsquo;t attached to my college anyhow. It was &amp;ldquo;school&amp;rdquo; as we used to call it. We even had uniforms albeit college t-shirt and blue or black jeans on most days. During my time there, my batch changed three or maybe four times (even more if the pandemic period is included). (Nothing specific, as we had multiple specializations and batches going on each semester, unknowingly/unintentional my batch/batch mates kept getting changed.) The after effect of which was that I had many acquaintances but fewer friends. After first year, my primary circle were not even my classmates. They were Abhay&amp;rsquo;s classmates and that became my circle, my lunch buddies and at times my go-to people.&lt;/p&gt;
&lt;p&gt;As usual, I was engaged in various extracurriculars, major being in college chapter of Toastmasters International club and organizing a Model United Nation conference. Toastmasters gave me ample opportunities of going out and interacting with people from other colleges, community and industry clubs. It was always fun socializing with fellow Toastmasters.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s fun remembering now that my first day in college was also my first time seeing my college/university. I never bothered even to look it up on the internet.&lt;/p&gt;
&lt;p&gt;A close friend was saying today that now I&amp;rsquo;m free (at least for a while) which I straight away refused because I almost never free. Writing, servers, FSCI, Debian, SSB practice with friends, books and internet keeps me engaged, and  I absolutely love doing each and every of those activities. It&amp;rsquo;s just that for a life, earning is important, so job (seeking at present) comes into picture. Working, experimenting and learnings on servers, internet and the infrastructure powering it during the past 8-9 months has shown me that system administration and cloud is my thing. Now I&amp;rsquo;m actively looking into internship/job opportunities in this field. Also, SSB is lined up for July. That would be another adventure. More excited about travelling (to Gujarat) than the actual thing.&lt;/p&gt;
&lt;p&gt;Hence, the adventure called college is over (at least for now) but life continues.
&lt;em&gt;To infinity and beyond!&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Email Chronicles</title>
      <link>https://blog.sahilister.in/2021/05/email-chronicles/</link>
      <pubDate>Thu, 27 May 2021 11:10:59 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/05/email-chronicles/</guid>
      <description>&lt;p&gt;A recent incident brought back the thought why I love independent, non Google/Outlook, custom emails. Till last year, I was exploring email providers to move away from Gmail in my quest to minimize usage of Google products. Initially, I looked at ProtonMail but lack of IMAP integration (for thunderbird) on a free account deterred me. At the same time, I was also exploring domain registrars for buying &lt;em&gt;sahilister.in&lt;/em&gt;. Finally settled on &lt;em&gt;Gandi.net&lt;/em&gt; as they provide mailboxes with each domain. Hence, &lt;em&gt;sahil AT sahilister.in&lt;/em&gt; came into existence. Slowly, I switched my accounts to this email seeing the high quality and reliability of mailbox.&lt;/p&gt;
&lt;p&gt;I now love interacting with people over email more than any other medium. The conversation is slower than instant messaging and phone. The replies are composed and well thought of. Email is simple, federated and works almost everywhere. It should be the medium of all complex discussions (looking at mailing lists).&lt;/p&gt;
&lt;p&gt;Four incidences about email stand out in my memory. The first happened a few months back during my internship. My Product Development Manager (PDM) said, &amp;ldquo;Sahil, send me your gmail id&amp;rdquo;. For context, it was for emailing me an invitation to a company&amp;rsquo;s project on a platform. I thought of saying I don&amp;rsquo;t have one and would probably bust his bubble of Gmail only email world, but I decided against it and simply sent my &lt;em&gt;@sahilister.in&lt;/em&gt; address. There was no reply for a while. I assume (for my own fun) that he was perplexed seeing the email address, thinking what sort of email is this and 101 other  related thoughts. Finally, the invite landed, and I intimated it in reply.&lt;/p&gt;
&lt;p&gt;The next incidence happened a week back. I received a notification from an agency holding &lt;em&gt;@nic.in&lt;/em&gt; address. The email was sent to 87 addresses in To field. Curious as I&amp;rsquo;m with mail addresses, I opened and saw a sea of Gmail addresses. I could only find three non-Gmail addresses, two &lt;em&gt;@yahoo.in&lt;/em&gt; addresses (probably of pre-Andriod era relics) and my address. It was actually sad seeing the prominence of Gmail or rather Google&amp;rsquo;s advertisement, tracking emails.&lt;/p&gt;
&lt;p&gt;Now a happy incidence. The first email for Debian packaging learners in Free Software Camp, 2020 was probably the most diverse email server crowd I have ever seen. There were about ten people in the thread, with email accounts on &lt;em&gt;@riseup.net&lt;/em&gt;, &lt;em&gt;@disroot.org&lt;/em&gt;, &lt;em&gt;@gnu.org.in&lt;/em&gt; (mailing list), &lt;em&gt;@debian.org&lt;/em&gt;, &lt;em&gt;@onenetbeyond.org&lt;/em&gt;, a custom mail server, two custom domain mailboxes from Gandi.net and of course two &lt;em&gt;@gmail.com&lt;/em&gt; addresses. I was so happy seeing it that I mentioned the following line in my reply to the thread:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: It looks nice seeing such diversity in mail providers in the &amp;ldquo;to&amp;rdquo; and &amp;ldquo;cc&amp;rdquo; section. Mail diversity for the win \o/&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The final, recent incident happened two days ago, which also prompted this post. I was working on a collaborative presentation over &lt;a href=&#34;https://meet.fsci.in&#34;&gt;meet.fsci.in&lt;/a&gt; with Abhay. Abhay got a call from Aashim. He requested Aashim&amp;rsquo;s presentation via email. As he started reciting his long &lt;em&gt;@gmail.com&lt;/em&gt; address, Aashim snapped and told him to text it. Then I, who was listening to the whole conversation, said &amp;ldquo;Let me introduce my shorter email address. Tell Aashim to send the presentation on &lt;em&gt;x AT sahil.rocks&lt;/em&gt;&amp;rdquo; and we both started laughing. Abhay knew it was legit email. He told Aashim, &amp;ldquo;&lt;em&gt;x AT sahil.rocks&lt;/em&gt;&amp;rdquo; and Aashim was like &amp;ldquo;Whattttttt!!!&amp;rdquo;. It was fun. Weird flex but ok ;) It made me realize that it is not normal seeing such weird addresses in wild and made me remember all the above-mentioned instances and gave the idea of jotting them down as email chronicles.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Suggest Me Blogpost Topics</title>
      <link>https://blog.sahilister.in/2021/05/suggest-me-blogpost-topics/</link>
      <pubDate>Sat, 15 May 2021 23:59:52 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/05/suggest-me-blogpost-topics/</guid>
      <description>&lt;p&gt;During the past few months I have written quite a few blog posts. The blog home page is serving as a timekeeper now, and it makes me wonder seeing how much time passed since a post which I remember writing just recently. For me random thoughts become the topic for a new writing adventure and later full-fledged posts. There&amp;rsquo;s no specific method for new topics which sometimes leaves me without inspirations to write on for days. Nowadays, some ideas are becoming too monotonous, and it&amp;rsquo;s not fun penning them down. That&amp;rsquo;s why  I&amp;rsquo;m writing to ask for suggestions. If you have intentionally, unintentionally or forcefully came across this post, feel free to suggest thoughts and ideas for new posts. I know I won&amp;rsquo;t be able to do justice or write on all suggestions but would keep those ideas (maybe as an update to this post) to revisit them as I grow confident enough to write on them. If you&amp;rsquo;re a fellow writing enthusiast, can you also tell what&amp;rsquo;re your source of inspirations?&lt;/p&gt;
&lt;p&gt;You can share your thoughts via email on &lt;em&gt;sahil AT sahilister.in&lt;/em&gt; .
Suggesting topics will guarantee that we be good buddies, promise :-]&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update (22/05/2021):&lt;/em&gt; &lt;a href=&#34;https://ohio.araw.xyz/&#34;&gt;&lt;em&gt;Ohio&lt;/em&gt;&lt;/a&gt; &lt;em&gt;emailed and suggested some interesting topics. Do check out &lt;a href=&#34;https://ohio.araw.xyz/&#34;&gt;&lt;em&gt;his website&lt;/em&gt;&lt;/a&gt;&lt;/em&gt;, &lt;em&gt;it&amp;rsquo;s beautiful. Topics he suggested were:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;what are your thoughts on cryptocurrency? are you in favor or not in favor?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Suppose you have a foreigner friend you haven&amp;rsquo;t met in person. Would you invite them in your country? Why or why not? If you would invite them, what will be your primer for them during their stay in your country?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;What text editor/s you use? Write about your current setup (or config) for each.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Mobile Made More Private</title>
      <link>https://blog.sahilister.in/2021/05/mobile-made-more-private/</link>
      <pubDate>Sat, 15 May 2021 12:02:47 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/05/mobile-made-more-private/</guid>
      <description>&lt;p&gt;As someone who is privacy concerned and also can&amp;rsquo;t risk a bricked phone (or a new phone), I&amp;rsquo;m using the following measures to make my (dumb) smartphone silent towards it&amp;rsquo;s &amp;ldquo;supposed&amp;rdquo; corporate overloads ;)&lt;/p&gt;
&lt;h3 id=&#34;removal-of-applications-without-root&#34;&gt;Removal of app(lications) without root&lt;/h3&gt;
&lt;p&gt;I did manage to remove most of the bloatware through Chris Titus Tech&amp;rsquo;s this &lt;a href=&#34;https://www.youtube.com/watch?v=k9ErL9L6KIw&#34;&gt;YouTube video&lt;/a&gt; (or it&amp;rsquo;s &lt;a href=&#34;https://yewtu.be/watch?v=k9ErL9L6KIw&#34;&gt;invidious link&lt;/a&gt;). In this he showed uninstalling hard to delete root/locked apps through &lt;a href=&#34;https://developer.android.com/studio/command-line/adb&#34;&gt;ADB&lt;/a&gt;. A written cheatsheet for it can be found &lt;a href=&#34;https://christitus.com/debloat-android/&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A fair warning and comment from him:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It is dangerous to remove system apps that you don&amp;rsquo;t see in the app drawer. It can lead to you doing a full system recovery.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;On Non-Rooted phones some applications are installed as root and error with &amp;ldquo;[DELETE_FAILED_INTERNAL_ERROR]&amp;rdquo;. Type this to bypass:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;adb shell pm uninstall --user 0 &amp;lt;appname&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;netguard&#34;&gt;Netguard&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://f-droid.org/en/packages/eu.faircode.netguard/&#34;&gt;Netguard&lt;/a&gt; is an app that block internet access for other apps via a local VPN setup. It&amp;rsquo;s internet access log showed me whenever an app tried phoning home. Following are some log screenshots:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/netguard-phone.jpeg&#34; alt=&#34;Netguard log showing attempted internet access by Phone app&#34;&gt;&lt;/p&gt;
&lt;i&gt;
        &lt;div style=&#34;text-align: center&#34;&gt;
        Netguard log showing attempted internet access by Phone app.
        &lt;/div&gt;
&lt;/i&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/netguard-camera.jpeg&#34; alt=&#34;Netguard log showing attempted internet access by Camera app&#34;&gt;&lt;/p&gt;
&lt;i&gt;
        &lt;div style=&#34;text-align: center&#34;&gt;
        Netguard log showing attempted internet access by Camera app.
        &lt;/div&gt;
&lt;/i&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/netguard-google.jpeg&#34; alt=&#34;Netguard log showing attempted internet access by (remaining) Google apps&#34;&gt;
&lt;i&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
Netguard log showing attempted internet access by (remaining) Google apps.
&lt;/div&gt;
&lt;/i&gt;
&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;p&gt;I use Netguard to block all traffic and making internet access for apps opt-in. This was done by disabling access to all apps and selectively enabling access to required apps only. Got added benefit of no in-app ads.&lt;/p&gt;
&lt;h3 id=&#34;app-stores&#34;&gt;App stores&lt;/h3&gt;
&lt;p&gt;Preferred way is doing most stuff on a laptop or in mobile browser. For app installation F-Droid seems to have all useful utilities but for other times when apps are only available via Google Play Store, I use &lt;a href=&#34;https://f-droid.org/en/packages/com.aurora.store/&#34;&gt;Aurora Store&lt;/a&gt;. Aurora Store is an alternate, privacy respecting client to Play Store which can work without any sort of Google account or almost no GApps. It allows me to install and update apps. An additional benefit of Aurora Store is that it shows &lt;a href=&#34;https://exodus-privacy.eu.org/en/page/what/&#34;&gt;Exodus Privacy&lt;/a&gt; reports in app information, showing embedded trackers (analytics, ad systems, etc) in a given app.&lt;/p&gt;
&lt;h3 id=&#34;miscellaneous&#34;&gt;Miscellaneous&lt;/h3&gt;
&lt;p&gt;Access Dots, is an app that shows a dot in the top right corner of the screen whenever an app is accessing camera, microphone or GPS. Shows me all accesses. It&amp;rsquo;s only available on Play Store.&lt;/p&gt;
&lt;p&gt;Another area which get overlooked much is app permissions. A camera app doesn&amp;rsquo;t require access to contacts, a calculator doesn&amp;rsquo;t need internet access and what not. Just changing the defaults did helped a lot.&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;An end note, this brings the topic of &lt;a href=&#34;https://blog.sahilister.in/2020/08/privacy-and-security/&#34;&gt;privacy and/or security&lt;/a&gt; back in the picture. Doing most of these would make the device less secure as whatever one&amp;rsquo;s stance on privacy, Google does take active mitigations against security threats.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>I Like Writing Now!</title>
      <link>https://blog.sahilister.in/2021/05/i-like-writing-now/</link>
      <pubDate>Sat, 08 May 2021 00:31:23 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/05/i-like-writing-now/</guid>
      <description>&lt;p&gt;I have now grown to like the process of writing. The biggest joy it has given me is the appreciation of simplicity in text. Simple words are beautiful. Simple sentences are beautiful. Short posts are beautiful. Words in brackets are beautiful, holding sub-notes of main thought process (probably my favorite part). Hearing or reading usage of variety words in sentences gives me joy now.&lt;/p&gt;
&lt;p&gt;Writing is a snapshot of my mind at a period in time. Writing is a fine art created with loads rewrites to come with (almost) perfect words for a sentence. My writings resides in my happy corner ie my blog. I have grown to cherish this blog; a self written journey through life (to the moon :D).&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Git Rebase</title>
      <link>https://blog.sahilister.in/2021/05/git-rebase/</link>
      <pubDate>Fri, 07 May 2021 00:32:31 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/05/git-rebase/</guid>
      <description>&lt;p&gt;There are two ways to sync a feature branch with another branch; merge (&lt;code&gt;git merge&lt;/code&gt;) or rebase (&lt;code&gt;git rebase&lt;/code&gt;). Merging strategy has a few downsides like addition of a merge commit (or not if it can fast-forward), non-linear commit history and others. Where these things are important rebase strategy is viable.&lt;/p&gt;
&lt;h3 id=&#34;basic-rebase&#34;&gt;Basic rebase&lt;/h3&gt;
&lt;p&gt;A rebase to sync changes from another branch can be done in the like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git checkout &amp;lt;feature_branch&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git rebase main
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Internally, &lt;code&gt;git rebase&lt;/code&gt; reapply commits from feature branch on top (ie after) of all changes/commits from main (or specified branch). It basically changes and move base/tip/parent of feature branch.&lt;/p&gt;
&lt;p&gt;The following is the visual representation of it:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;                 A---B---C feature
                /
           D---E---F---G main
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The feature branch after rebase becomes&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;                         A&#39;--B&#39;--C&#39; feature
                        /
           D---E---F---G main
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;interactive-rebase&#34;&gt;Interactive rebase&lt;/h3&gt;
&lt;p&gt;Rebase also has an interactive mode, guiding you through the process and giving additional fine tune controls which can be used for following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cleaning history&lt;/li&gt;
&lt;li&gt;Rewriting commit messages&lt;/li&gt;
&lt;li&gt;Reorder commits&lt;/li&gt;
&lt;li&gt;Squashing multiple commits&lt;/li&gt;
&lt;li&gt;Dropping a commit (off the face of the earth ;))&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To do an interactive rebase, just add &lt;code&gt;-i&lt;/code&gt; or &lt;code&gt;--interactive&lt;/code&gt; flag:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git rebase -i main
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It will show a visual prompt in a text editor, like the following:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pick f58924e xkcd &lt;span class=&#34;m&#34;&gt;1296&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pick dd820cc another, xkcd &lt;span class=&#34;m&#34;&gt;1597&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pick a58124a xkcd &lt;span class=&#34;m&#34;&gt;688&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Rebase 0bbe6c4..dd820cc onto 0bbe6c4 (2 commands)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Commands:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# p, pick &amp;lt;commit&amp;gt; = use commit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# r, reword &amp;lt;commit&amp;gt; = use commit, but edit the commit message&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# e, edit &amp;lt;commit&amp;gt; = use commit, but stop for amending&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# s, squash &amp;lt;commit&amp;gt; = use commit, but meld into previous commit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# f, fixup &amp;lt;commit&amp;gt; = like &amp;#34;squash&amp;#34;, but discard this commit&amp;#39;s log message&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# x, exec &amp;lt;command&amp;gt; = run command (the rest of the line) using shell&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# b, break = stop here (continue rebase later with &amp;#39;git rebase --continue&amp;#39;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# d, drop &amp;lt;commit&amp;gt; = remove commit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# l, label &amp;lt;label&amp;gt; = label current HEAD with a name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# t, reset &amp;lt;label&amp;gt; = reset HEAD to a label&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# m, merge [-C &amp;lt;commit&amp;gt; | -c &amp;lt;commit&amp;gt;] &amp;lt;label&amp;gt; [# &amp;lt;oneline&amp;gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# .       create a merge commit using the original merge commit&amp;#39;s&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# .       message (or the oneline, if no original merge commit was&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# .       specified). Use -c &amp;lt;commit&amp;gt; to reword the commit message.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# These lines can be re-ordered; they are executed from top to bottom.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# If you remove a line here THAT COMMIT WILL BE LOST.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# However, if you remove everything, the rebase will be aborted.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Initial lines show a list of all commits in feature branch, followed by commented commands/actions which can be performed on them.&lt;/p&gt;
&lt;p&gt;Change &lt;code&gt;pick&lt;/code&gt; to whichever action (&lt;code&gt;reword&lt;/code&gt;, &lt;code&gt;edit&lt;/code&gt;, &lt;code&gt;squash&lt;/code&gt;, &lt;code&gt;drop&lt;/code&gt;, etc) required. Action which require additional input will open another set of prompts with instructions for the same. The sequence of commits can also be changed here by moving commit up or down the list.&lt;/p&gt;
&lt;h3 id=&#34;squashing-commit&#34;&gt;Squashing commit&lt;/h3&gt;
&lt;p&gt;Rebase can also be used for squashing commits (in local branch) by following:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git rebase -i HEAD~3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here &lt;code&gt;3&lt;/code&gt; is the number of preceding commits to be squashed into one.
The command, will open an interactive prompt, as shown in the interactive rebase section. Reorder commits, add &lt;code&gt;pick&lt;/code&gt; to a single commit (in which others will be squashed) and move it to the top. Add &lt;code&gt;squash&lt;/code&gt; before other commits. After saving, another prompt will open asking for a unified commit message. Edit, save and you&amp;rsquo;re done.&lt;/p&gt;
&lt;h3 id=&#34;caveats-of-rebase&#34;&gt;Caveats of rebase&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Don&amp;rsquo;t use rebase on public/shared branch (rebasing from it is fine). Also applies on pushed commits. Things might get messy.&lt;/li&gt;
&lt;li&gt;Rebase will present conflicts one commit at a time when merge will present them all at once, so choose accordingly.&lt;/li&gt;
&lt;li&gt;Reverting commits is a tad more difficult after rebases.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Crowdsourcing</title>
      <link>https://blog.sahilister.in/2021/05/crowdsourcing/</link>
      <pubDate>Sun, 02 May 2021 02:08:37 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/05/crowdsourcing/</guid>
      <description>&lt;p&gt;The electricity distribution company at my place has a WhatsApp group. It consists of residents of the areas and electricity company employees. Whenever power goes out somewhere in the area, residents put up a text mentioning it in the group. If a large section is affected, the group sees a barrage of such texts mentioning addresses without electricity. A forward response team (FRT as they call it) is then send on ground to sort the issue, which usually promptly resolves the fault. It always gives me the feeling that how the community participate in (unintentional) crowdsourcing of information. The power distribution company gets real time on ground information of outages and takes their action seeing the severity.&lt;/p&gt;
&lt;p&gt;Another instance of crowdsourcing is seen during this distressing times in India. Many areas are facing acute shortage of medical oxygen, remdesivir, hospital beds among other supplies. People are putting out SOS calls for these on social media channels. Volunteers have started searching, collecting and verifying leads/availability of these resources. Whole groups and channels have come up on Telegram, Twitter and other places to crowdsource availability/leads and making/updating lists of places where of these essential items are available; saving precious lives.&lt;/p&gt;
&lt;p&gt;Chennai floods in 2015 saw another such crowdsourcing effort. After the floods, volunteers quickly got together to make &lt;a href=&#34;https://osm-in.github.io/flood-map/chennai.html#11.65/13.0493/80.2593&#34;&gt;these flood maps&lt;/a&gt; build upon OpenStreetMaps (which itself is a crowdsourcing mapping effort). Local volunteers feed on ground information about water levels into the system, making comprehensive maps for affected areas. This in turn helped humanitarian efforts by assisting in resource planning as well as helping understand flood patterns, potentially affecting many.&lt;/p&gt;
&lt;p&gt;All of these were instances where a common cause triggered the community to knowingly/unknowingly work together for &lt;a href=&#34;https://en.wikipedia.org/wiki/Commons&#34;&gt;&lt;em&gt;The Commons&lt;/em&gt;&lt;/a&gt;. It worked because people were driven and worked in tandem rather than making only atomic efforts. Crowdsourced information often is more accurate and up to date as people sourcing them have more knowledge about local setting. Technology has helped make crowdsourcing &lt;a href=&#34;https://en.wikipedia.org/wiki/Commons#Digital_commons&#34;&gt;&lt;em&gt;Digital Commons&lt;/em&gt;&lt;/a&gt; easier. It shows why we need communities to come behind common goals to help each other, make changes and pool resources and data.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>How I Write Blogs - April 2021 Edition</title>
      <link>https://blog.sahilister.in/2021/04/how-i-write-blogs-april-2021-edition/</link>
      <pubDate>Tue, 27 Apr 2021 02:45:09 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/04/how-i-write-blogs-april-2021-edition/</guid>
      <description>&lt;p&gt;Topics for the next blog post usually strike while the previous one is in work. A usual cycle from conceptualization, first draft, edits, corrections to posting on blog takes around 2-4 days for me.&lt;/p&gt;
&lt;p&gt;I usually prefer writing my initial drafts in a spiral notebook using Montek Megatop (my sole choice for pen since the last 6 years). Writing in running (and sometimes beautiful) handwriting and direct, easy flow of words onto paper are two factors encouraging this workflow. This draft is usually complete in 3-5 &lt;a href=&#34;https://en.wikipedia.org/wiki/Pomodoro_Technique&#34;&gt;pomodoro&lt;/a&gt; sprints (using &lt;a href=&#34;https://sahilister.github.io/Clock/pomodoro/&#34;&gt;this&lt;/a&gt;) spread over 1-2 days. It is then typed onto my laptop in blog&amp;rsquo;s git repository using vim or kate. Hugo live server is kept running while typing for adding links, references and to see actual rendering of text. A minimal amount of editing is done during this phase. The process of typing (typing is fun at times) and seeing new text appearing on (local) blog gives a feeling of satisfaction and progress.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/first-draft.jpg&#34; alt=&#34;Initial handwritten draft for &amp;lsquo;What Is My Legacy?&amp;rsquo;&#34;&gt;
&lt;i&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
Initial handwritten draft for
&lt;a href=&#34;https://blog.sahilister.in/2021/04/what-is-my-legacy/&#34;&gt;&amp;lsquo;What Is My Legacy?&amp;rsquo;&lt;/a&gt;
&lt;/div&gt;
&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;After this, each paragraph is copied into &lt;a href=&#34;https://languagetool.org/&#34;&gt;LanguageTool&lt;/a&gt; online grammar and spell checker. A fair number of spelling errors get rectified here. Now&amp;rsquo;s the time for concentrated reading and making changes. Paragraphs are moved, edited or removed to make a coherent story. Efforts to reduce the number of words is also made to the blog post crisp and on point.
Another round of grammar and spell check is done. After a final read, the post is pushed to GitLab followed by posting a link on mastodon. This doesn&amp;rsquo;t mean the post is final. I keep on revisiting and finding issues and correcting them; sometimes months past posting it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/blog-writing-in-progress.png&#34; alt=&#34;Blog writing on laptop&#34;&gt;
&lt;i&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
Writing in progress using Hugo local server and kate.
&lt;a href=&#34;https://blog.sahilister.in/img/blog-writing-in-progress.png&#34;&gt;Click to enlarge&lt;/a&gt;
&lt;/div&gt;
&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;This is mostly the workflow of used to create new blog posts though there are some exceptions. Posts like &lt;a href=&#34;https://blog.sahilister.in/2021/04/what-is-my-legacy/&#34;&gt;&amp;lsquo;What Is My Legacy?&amp;rsquo;&lt;/a&gt; or &lt;a href=&#34;https://blog.sahilister.in/2021/03/what-is-life/&#34;&gt;&amp;lsquo;What Is Life?&amp;rsquo;&lt;/a&gt; were conceptualized, written and posted in matters of hours. All the experience posts usually take a week each. Tutorial write-up like this &lt;a href=&#34;https://blog.sahilister.in/2021/01/beginners-guide-to-host-static-content-on-a-server/&#34;&gt;one&lt;/a&gt; or this &lt;a href=&#34;https://blog.sahilister.in/2021/04/script-to-automatically-mirror-blog-on-seperate-domain/&#34;&gt;one&lt;/a&gt; are usually written while trying each step as follow along. Sometimes I directly start writing on laptop when I don&amp;rsquo;t feel like writing by hand or am hitting a writer-block.&lt;/p&gt;
&lt;p&gt;Just like &lt;a href=&#34;https://blog.sahilister.in/2020/08/my-setup-august-2020-edition/&#34;&gt;&amp;lsquo;My Setup&amp;rsquo;&lt;/a&gt; post, I would try writing an update in the foreseeable future if some major change comes in this workflow.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: There&amp;rsquo;s quite a bit of different categories/types of blog posts here on Reimagined Doodle now like &lt;a href=&#34;https://blog.sahilister.in/2021/04/quick-wiki-searx/&#34;&gt;quick-wikis&lt;/a&gt;, &lt;a href=&#34;https://blog.sahilister.in/2021/04/sleep/&#34;&gt;random thoughts&lt;/a&gt;, &lt;a href=&#34;https://blog.sahilister.in/2021/04/experience-attending-free-software-camp-2020/&#34;&gt;experience posts&lt;/a&gt;, &lt;a href=&#34;https://blog.sahilister.in/2021/01/beginners-guide-to-host-static-content-on-a-server/&#34;&gt;tutorials write-ups&lt;/a&gt;, &lt;a href=&#34;https://blog.sahilister.in/2021/02/updates-no-cloudflare-call-for-blog-resource/&#34;&gt;updates&lt;/a&gt;, &lt;a href=&#34;https://blog.sahilister.in/2021/04/sync-git-repository-with-upstream/&#34;&gt;learning and notes&lt;/a&gt; and &lt;a href=&#34;https://blog.sahilister.in/2021/03/internet-a-network-of-networks/&#34;&gt;researched articles&lt;/a&gt;. Nice variety :D&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Sleep</title>
      <link>https://blog.sahilister.in/2021/04/sleep/</link>
      <pubDate>Thu, 22 Apr 2021 00:40:07 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/04/sleep/</guid>
      <description>&lt;p&gt;As we close our eyes, a process of scrubbing reality from the subconscious begins. Slowly the body goes into unconscious state, and we lose touch with the surroundings. We stop engaging in the physical world. We disconnect from reality, our miseries, happiness, material and social gains.&lt;/p&gt;
&lt;p&gt;Now we start engaging in dream dimension, a mental world. A play with real and imaginary characters playing our very own mind created storyline. It’s amazing how all this, the scene setting, the characterization, storyline happens without us leaving the room, physically.&lt;/p&gt;
&lt;p&gt;Even if it plays out in the mind, still the body engages in the act, feels the emotions, the actions. This play at times, is cut short by this physical action and the characters leaves their role and reality seeps in. The conscious mind becomes aware of the existence of the dream which was its own creation demonstrating the non-atomic nature of mind. Different sections become active or passive at different times.&lt;/p&gt;
&lt;p&gt;Coming back to the play, it’s a respite on some nights or nightmares (literally!) at the other. This leaving the world and re-entering it is something akin to magic.&lt;/p&gt;
&lt;p&gt;As we open our eyes, a process of scrubbing the imagination from the subconscious begins, making us re-aware of the surroundings, leaving less to no traces of the intrinsically choreographed play.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Why Should Everyone Read &#34;The Story of My Experiments With Truth&#34; by Mahatma Gandhi?</title>
      <link>https://blog.sahilister.in/2021/04/why-should-everyone-read-the-story-of-my-experiments-with-truth-by-mahatma-gandhi/</link>
      <pubDate>Sun, 18 Apr 2021 15:27:27 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/04/why-should-everyone-read-the-story-of-my-experiments-with-truth-by-mahatma-gandhi/</guid>
      <description>&lt;p&gt;The following was a part of an email conversation I had with &lt;a href=&#34;https://asd.learnlearn.in/&#34;&gt;Akshay&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Reading the book being mentioned in &lt;a href=&#34;https://blog.sahilister.in/about/&#34;&gt;about section&lt;/a&gt;, he asked:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Also, why should everyone read the autobiography of Gandhi?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This was probably the second time when I pondered upon the significance of Mahatma Gandhi&amp;rsquo;s autobiography &lt;em&gt;The Story of My Experiments With Truth&lt;/em&gt; in my life. (First was on the creation of blog&amp;rsquo;s about section.)&lt;/p&gt;
&lt;p&gt;I replied (slightly corrected for clarity):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[…] I see you were engaged in My experiment with truth back then, apparently I too came across the book in 7th or 8th standard.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;I wasn’t someone who admired MK Gandhi before that. Furthermore, I just read it because I was just getting in the habit of reading and this was one book I wanted to “just” read, but it was different, it showed how to experiment. I have learned how monotonous life is, and how we can radically change it with experimentation. So I started fasting once every week on Wednesdays, not to lose weight but to build will power (which I believe I lacked). Still continuing with that after like 8-9 years. Taking back control is what it taught me.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Then there was the way how passive resistance and perseverance helps get things done (which can only be undertaken by having a strong will for a cause). Being stubborn sometimes does help ;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Overall, it changed my life approach and now that I’m thinking, I do consider it kind of sacred (or closest to one).&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Experience Attending Free Software Camp 2020</title>
      <link>https://blog.sahilister.in/2021/04/experience-attending-free-software-camp-2020/</link>
      <pubDate>Mon, 12 Apr 2021 18:48:40 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/04/experience-attending-free-software-camp-2020/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://camp.fsf.org.in/&#34;&gt;Free Software Camp&lt;/a&gt; 2020 edition was co-organized by &lt;a href=&#34;https://fsci.in/&#34;&gt;FSCI&lt;/a&gt; and &lt;a href=&#34;https://fsf.org.in/&#34;&gt;FSF India&lt;/a&gt;. I heard about the camp in FSCI&amp;rsquo;s matrix room and promptly signed up for it. It was about &lt;a href=&#34;https://www.gnu.org/philosophy/free-sw.en.html&#34;&gt;free software&lt;/a&gt; and was organized completely on free software tools and services. FSCI&amp;rsquo;s GitLab instance at &lt;a href=&#34;https://git.fosscommunity.in/fsfi/camp&#34;&gt;git.fosscommunity.in&lt;/a&gt; and CryptPad&amp;rsquo;s official instance at &lt;a href=&#34;https://cryptpad.fr/&#34;&gt;cryptpad.fr&lt;/a&gt; was used for ideation, collaboration and presentations. FSCI&amp;rsquo;s Peertube instance at &lt;a href=&#34;https://videos.fsci.in/accounts/fscamp/videos&#34;&gt;videos.fsci.in&lt;/a&gt; was used for hosting camp videos. Sessions were conducted over BigBlueButton instances hosted by &lt;a href=&#34;https://deeproot.in/&#34;&gt;DeepRoot&lt;/a&gt;, NixNet, GNOME and KDE. Communications happened through mailing lists, Matrix channel and Mastodon.&lt;/p&gt;
&lt;p&gt;The initial phase was around introduction to free software, philosophy and ideology and the latter part was dedicated towards work on it. I started as a learner under mentorship of Sruthi (Debian Developer) for Debian packaging. Later on, Dhanesh and I also submitted a mentorship proposal titled &lt;a href=&#34;https://git.fosscommunity.in/fsfi/camp/-/wikis/ideas-list#learn-to-setup-and-host-free-software-communication-tools-for-local-communities-sahil-sahilister-dhanesh-dhanesh95-co-mentor&#34;&gt;&amp;ldquo;Learn to setup and host free software communication tools for local communities&amp;rdquo;&lt;/a&gt; which merged with &lt;a href=&#34;https://git.fosscommunity.in/fsfi/camp/-/wikis/ideas-list#system-administration-pirate-praveen-akhil-bady-tanzeem&#34;&gt;System Administration&lt;/a&gt; from Pirate Praveen and Akhil.&lt;/p&gt;
&lt;p&gt;Talking about the learnings, the camp got me introduced to the nitty-gritty of free software. I switched from open source to free software, as it better aligned with personal philosophy. Extended, detailed discussions on software and free culture licenses helped understand freedoms entailed with each license and their usage. Eventually I also helped a friend understand these while developing a new project. He asked a bunch of license questions, which I was able to answer all thanks to learnings from the camp. The best part was the community around free software here specifically people who &lt;a href=&#34;https://blog.sahilister.in/2021/01/experience-volunteering-for-minidebconf-india-2021/&#34;&gt;I worked with in MiniDebConf&lt;/a&gt; and folks in group 6. We were divided in groups for an activity called &amp;ldquo;Controls in the current society&amp;rdquo;. I landed in group 6 and it in itself formed a small community. We had multiple group 6 exclusive sessions. It became a ritual that every session was two hours long; Ravi introduced us to email encryption there, we had long discussions on importance of privacy, free software etc.&lt;/p&gt;
&lt;p&gt;Now, the experience in both learner and mentor role for the camp:&lt;/p&gt;
&lt;h3 id=&#34;debian-packaging&#34;&gt;Debian packaging&lt;/h3&gt;
&lt;p&gt;I started with an ambitious &lt;a href=&#34;https://git.fosscommunity.in/fsfi/camp/-/wikis/Proposals/Debian-Packaging/sahilister&#34;&gt;proposal&lt;/a&gt; of packaging 15 node dependency packages. I was fiddling with packaging before that but couldn&amp;rsquo;t get my first package in Debian. For documentation, Praveen wrote a wiki detailing stuff in divided into levels &lt;a href=&#34;https://wiki.fsci.org.in/index.php/Learn_Debian_Packaging&#34;&gt;here&lt;/a&gt;. Quizzes were also created for every level, which IMO were quite helpful. Learned many things through this structured approach. Through the course of the camp, I took up various packages like &lt;code&gt;node-pretty-ms&lt;/code&gt; (practice package), &lt;code&gt;babel-plugin-lodash&lt;/code&gt; and the latest &lt;code&gt;emoji-regex&lt;/code&gt;. None of package got completed due to something or else. Need to get at least &lt;code&gt;emoji-regex&lt;/code&gt; packaged. It&amp;rsquo;s a simple package with no dependency but does have an issue with a dev-dependency required for tests. Will update if successful in getting this done.&lt;/p&gt;
&lt;p&gt;Though I must mention about &lt;a href=&#34;https://tracker.debian.org/pkg/fasttrack-archive-keyring&#34;&gt;&lt;code&gt;fasttrack-archive-keyring&lt;/code&gt;&lt;/a&gt; package. This package adds fasttrack key for enabling/downloading packages from fasttrack branch. Praveen mentioned if I would like to take the maintainer ship of the package, which I agreed to and did some housekeeping as told by Praveen. So all in all I do have one package under my name in Debian.&lt;/p&gt;
&lt;h3 id=&#34;system-administration-and-self-hosting&#34;&gt;System administration and self-hosting&lt;/h3&gt;
&lt;p&gt;This was an interesting experience. We (Praveen, Dhanesh, Akhil and myself) took turns to take session bunch of stuff related to system administration. For this also Praveen created a &lt;a href=&#34;https://wiki.fsci.org.in/index.php/System_Administrators_Checklist&#34;&gt;wiki&lt;/a&gt;. I personally took a session on hosting a static site on a server. Wrote a write-up &lt;a href=&#34;https://blog.sahilister.in/2021/01/beginners-guide-to-host-static-content-on-a-server/&#34;&gt;here&lt;/a&gt; (good post I must admit). I wasn&amp;rsquo;t comfortable hosting stuff that way but reading for the session and writing the blog help make me comfortable. I do occasionally reference it myself when I&amp;rsquo;m stuck with some detail. Took another session on Jitsi Meet which was personally the first web service I hosted for myself back when I started exploring self-hosting. Though I was overconfident that the installation session would go smoothly (with the experience of 10s of installation I did in the past) but a previous installation on the same server messed up the installation a bit which was eventually solved, thanks to &lt;a href=&#34;https://manav.co.in/&#34;&gt;Manav&lt;/a&gt; and Praveen. In the subsequent days, three learners also managed to get their own Jitsi servers running. Mridul also did the Jitsi installation for &lt;a href=&#34;https://meet.fsci.in&#34;&gt;meet.fsci.in&lt;/a&gt; (&lt;em&gt;if you want to support the community lead service, donate by visiting &lt;a href=&#34;https://fund.fsci.in&#34;&gt;fund.fsci.in&lt;/a&gt;&lt;/em&gt;). Maybe a Searx installation session next.&lt;/p&gt;
&lt;p&gt;Also did lots of debugging in between. Conducted another session on Hugo site hosting via GitLab pages and added custom domains. That was another fun and lengthy session. It feels comforting sharing knowledge, so now actively trying and helping others explore and utilize technology.&lt;/p&gt;
&lt;br&gt;
I&#39;m continuing my work on both projects. The experiences (as learner and mentor) were good, and I value and would like to thank the camp organizers for coming up with the camp and all the participants. I would love to come back for the next session in any of the roles (including as part of the organizing team).
&lt;p&gt;&lt;em&gt;Update: I asked the learners if they were interested in a session on SearX installation, which they promptly agreed on, so it took place later on.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>What Is My Legacy?</title>
      <link>https://blog.sahilister.in/2021/04/what-is-my-legacy/</link>
      <pubDate>Sun, 11 Apr 2021 01:35:04 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/04/what-is-my-legacy/</guid>
      <description>&lt;p&gt;It seems pretty early in life to think about my legacy but some running thoughts in the night beg to differ. Nothing particularly significant is happening right now but remembering some particular praises gave much needed positive self affirmation. Now I&amp;rsquo;m not going to detail them here (why make reading back those moments here later cringe for myself). A placeholder for years later me, I&amp;rsquo;m thinking about people I affected (positively) while serving in various roles at Chitkara University Toastmasters Club. It feels nice that my actions helped, inspired, guided and morally supported someone. It affected them such that they remembered and mentioned it even when I wasn&amp;rsquo;t present.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m pretty happy with it. These are (some positive) part of my legacy. I want to be remembered as someone who shared knowledge, supported folks and sometimes spread happiness ;)&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Script to Automatically Mirror Blog on Seperate Domain</title>
      <link>https://blog.sahilister.in/2021/04/script-to-automatically-mirror-blog-on-seperate-domain/</link>
      <pubDate>Wed, 07 Apr 2021 16:15:52 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/04/script-to-automatically-mirror-blog-on-seperate-domain/</guid>
      <description>&lt;p&gt;The idea of having a blog mirror on a personal server stuck me when Reliance Jio, my ISP arbitrarily started blocking GitLab Pages sites, which also houses my &lt;a href=&#34;https://blog.sahilister.in&#34;&gt;blog&lt;/a&gt;. Now doing it the manual way by copying the generated file HTML/CSS/JS file onto the server wouldn&amp;rsquo;t be fun, so just mirroring the blog through a script via &lt;code&gt;wget&lt;/code&gt; and scheduling it via &lt;code&gt;cronjob&lt;/code&gt; was the initial thought.&lt;/p&gt;
&lt;p&gt;My blog is rather simple. It&amp;rsquo;s a bunch of static files generated through &lt;a href=&#34;https://gohugo.io&#34;&gt;hugo&lt;/a&gt; in a git repository for hosting through GitLab pages. A &lt;code&gt;wget&lt;/code&gt; to grab the live files and serving them via nginx is pretty simple due to this.&lt;/p&gt;
&lt;p&gt;The plan was divided into the following parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#script-to-download-content&#34;&gt;Script to download content&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#check-website-status-before-mirroring&#34;&gt;Check website status before mirroring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#adding-logging&#34;&gt;Adding logging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#adding-a-cronjob-for-running-the-script&#34;&gt;Adding a cronjob for running the script&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#nginx-configurations&#34;&gt;Nginx configurations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#final-thoughts&#34;&gt;Final thoughts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now let me walk you through how I came up with the script.&lt;/p&gt;
&lt;h3 id=&#34;script-to-download-content&#34;&gt;Script to download content&lt;/h3&gt;
&lt;p&gt;Initially I thought of using &lt;code&gt;wget&lt;/code&gt; to mirror the website and writing a script to change all references to &lt;a href=&#34;https://blog.sahilister.in&#34;&gt;blog.sahilister.in&lt;/a&gt; to point at &lt;a href=&#34;https://blog.mirror.sahilister.in&#34;&gt;blog.mirror.sahilister.in&lt;/a&gt; through some &lt;code&gt;grep/awk/sed&lt;/code&gt; magic. Did a simple internet search to get all required flags for &lt;code&gt;wget&lt;/code&gt;. Tried downloading with the following flags &lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget -m -p -E -k blog.sahilister.in
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And to my surprise it automatically handled relative linking due to &lt;code&gt;-k&lt;/code&gt; flag, leaving the requirement of changing references. The downloaded document was perfect for directly hosting on a server.&lt;/p&gt;
&lt;p&gt;The flag explanation as taken from the answer &lt;sup id=&#34;fnref1:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-m, --mirror            Turns on recursion and time-stamping, sets infinite 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        recursion depth, and keeps FTP directory listings.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-p, --page-requisites   Get all images, etc. needed to display HTML page.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-E, --adjust-extension  Save HTML/CSS files with .html/.css extensions.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-k, --convert-links     Make links in downloaded HTML point to &lt;span class=&#34;nb&#34;&gt;local&lt;/span&gt; files.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I wanted the website files to be downloaded in a specific, pre-defined directory. Read &lt;code&gt;wget --help&lt;/code&gt; and found &lt;code&gt;-P&lt;/code&gt; flag. &lt;code&gt;-P&lt;/code&gt; or &lt;code&gt;--directory-prefix&lt;/code&gt; flag allows defining a location for downloaded files. Resulting query was:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget -m -p -E -k blog.sahilister.in -P /var/www/html/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Putting everything in bash script and using variables in places of URL and location, the script until now:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;https://blog.sahilister.in
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;LOC&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/var/www/html/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget -mpEk &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;URL&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; -P &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;LOC&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;check-website-status-before-mirroring&#34;&gt;Check website status before mirroring&lt;/h3&gt;
&lt;p&gt;As it was an unattended &lt;code&gt;wget&lt;/code&gt;, checking if the site is up was important. If the website was down for some reason, &lt;code&gt;wget&lt;/code&gt; will override the existing, working pages with wrong pages. Again searched the internet for any command to check website status. Found this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -I -s https://blog.sahilister.in
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here is the response site header:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-http&#34; data-lang=&#34;http&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;HTTP&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;200&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;cache-control&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;l&#34;&gt;max-age=600&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;content-type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;l&#34;&gt;text/html; charset=utf-8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;expires&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;l&#34;&gt;Thu, 08 Apr 2021 10:12:27 UTC&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;vary&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;l&#34;&gt;Origin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;content-length&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;l&#34;&gt;9175&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;date&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;l&#34;&gt;Thu, 08 Apr 2021 10:02:27 GMT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;curl&lt;/code&gt; with &lt;code&gt;-s&lt;/code&gt; or &lt;code&gt;--silent&lt;/code&gt; triggers the silent mode that doesn&amp;rsquo;t show in process messages. &lt;code&gt;-I&lt;/code&gt; or &lt;code&gt;--head&lt;/code&gt; flags fetches the headers only, as we didn&amp;rsquo;t require the whole document for checking website status.&lt;/p&gt;
&lt;p&gt;A &lt;code&gt;200&lt;/code&gt; &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#successful_responses&#34;&gt;http status code&lt;/a&gt; in the first line shows site is up and OK. The rest of the header wasn&amp;rsquo;t required, so the initial &lt;code&gt;curl&lt;/code&gt; command was piped into &lt;code&gt;head&lt;/code&gt; command to output only the first line. The query became:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -I -s https://blog.sahilister.in &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; head -1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;-1&lt;/code&gt; is a shorthand for &lt;code&gt;-n 1&lt;/code&gt; flag which tells &lt;code&gt;head&lt;/code&gt; command to output only the first line.&lt;/p&gt;
&lt;p&gt;Now the response became:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-http&#34; data-lang=&#34;http&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;HTTP&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;200&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The relevant part is &lt;code&gt;200&lt;/code&gt;, so another round of piping through &lt;code&gt;cut&lt;/code&gt; for stdout on the status code:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -I -s https://blog.sahilister.in &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; head -1 &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; cut -d &lt;span class=&#34;s1&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt; -f &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;-d&lt;/code&gt; or &lt;code&gt;--delimiter&lt;/code&gt; flag tells the delimiter to be looked for, in this case space using &lt;code&gt;&#39; &#39;&lt;/code&gt;. &lt;code&gt;-f&lt;/code&gt; or &lt;code&gt;--field&lt;/code&gt; flag, using &lt;code&gt;2&lt;/code&gt; as argument prints only the relevant status code part.&lt;/p&gt;
&lt;p&gt;Now comes the part to add conditional statements to download from the website only when the site is up (status code 200).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;curl -Is &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;URL&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; head -1 &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; cut -d &lt;span class=&#34;s1&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt; -f 2&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt; -eq &lt;span class=&#34;m&#34;&gt;200&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    wget -m -p -E -k blog.sahilister.in -P /var/www/html/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Putting everything in bash script and using variables in places of URL and location, the script until now:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;https://blog.sahilister.in
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;LOC&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/var/www/html/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;siteStatus&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;curl -Is &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;URL&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; head -1 &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; cut -d &lt;span class=&#34;s1&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt; -f 2&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; siteStatus -eq &lt;span class=&#34;m&#34;&gt;200&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    wget -mpEk &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;URL&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; -P &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;LOC&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;adding-logging&#34;&gt;Adding logging&lt;/h3&gt;
&lt;p&gt;Now, I wanted some logs to occasionally check everything is fine or if something is going amiss. Somethings, I wanted in logs were total download time for &lt;code&gt;wget&lt;/code&gt;, timings, sites status if download doesn&amp;rsquo;t happen and &lt;code&gt;wget&lt;/code&gt; errors.&lt;/p&gt;
&lt;p&gt;First came total download time. &lt;code&gt;wget&lt;/code&gt; does stdout certain logs but extracting it was a hassle. There was an option of running the script with &lt;code&gt;time&lt;/code&gt; command, but that would have to be used outside the script, also I didn&amp;rsquo;t bother making a short function by enclosing everything and doing &lt;code&gt;time func()&lt;/code&gt;. After all the script is quite short in itself. So again internet came to the rescue. Saving the initial time and subtracting it with time in the end, gives the run-time for &lt;code&gt;wget&lt;/code&gt;.
Following was the implementation:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;start&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date +%s&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;duration&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date +%s&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; - &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$start&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bc&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$duration&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;+%s&lt;/code&gt; flag in &lt;code&gt;date&lt;/code&gt; gives seconds since 1970-01-01 00:00:00 UTC (Unix/epoch time). &lt;code&gt;bc&lt;/code&gt; command was used for calculation.&lt;/p&gt;
&lt;p&gt;Next came the run and error logs, which would add date, time and download time taken if successful or error code if it fails. On a successful run, the following statement was applied:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date --rfc-3339&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;s&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; download completed in &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;duration&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;s.&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; run.log
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In a situation where &lt;code&gt;wget&lt;/code&gt; fails, the following statement would run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date --rfc-3339&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;s&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; wget failed with &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; error.log
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Plus if some status code other than &lt;code&gt;200&lt;/code&gt; is returned in website up check and download doesn&amp;rsquo;t happen, the following statement would be executed:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date --rfc-3339&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;s&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; Site returned &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;siteStatus&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;, exiting.&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; error.log
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Putting everything in bash script and using variables, the final bash script is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;https://blog.sahilister.in
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;LOC&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/var/www/html/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;RUN_LOG&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;~/mirror-logs/run.log
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ERROR_LOG&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;~/mirror-logs/error.log
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;printf&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;|s|c|r|i|p|t| |s|t|a|r|t|e|d|
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;+-+-+-+-+-+-+ +-+-+-+-+-+-+-+  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;start&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date +%s&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;siteStatus&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;curl -Is &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;URL&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; head -1 &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; cut -d &lt;span class=&#34;s1&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt; -f 2&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; siteStatus -eq &lt;span class=&#34;m&#34;&gt;200&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        wget -mpEkq &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;URL&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; -P &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;LOC&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;duration&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date +%s&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; - &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$start&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bc&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; -eq &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date --rfc-3339&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;s&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; download completed in &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;duration&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;s.&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;RUN_LOG&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date --rfc-3339&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;s&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; wget failed with &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;?&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ERROR_LOG&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date --rfc-3339&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;s&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; Site returned &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;siteStatus&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;, exiting.&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ERROR_LOG&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Added a &amp;ldquo;script started&amp;rdquo; in the beginning through &lt;code&gt;figlet&lt;/code&gt;. Also added &lt;code&gt;-q&lt;/code&gt; or &lt;code&gt;--quiet&lt;/code&gt; flag for no stdout from &lt;code&gt;wget&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;adding-a-cronjob-for-running-the-script&#34;&gt;Adding a cronjob for running the script&lt;/h3&gt;
&lt;p&gt;As it&amp;rsquo;s an inexpensive operation (about 1 MB of download and 16-18s of runtime) and I want to keep the mirror as synced as possible, so scheduled the &lt;code&gt;cronjob&lt;/code&gt; to run twice daily at 1am and 1pm UTC. The entry added through &lt;code&gt;crontab -e&lt;/code&gt; was as follows:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; 1,13 * * * ~/mirror-script.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;nginx-configurations&#34;&gt;Nginx configurations&lt;/h3&gt;
&lt;p&gt;Added a nginx configuration for &lt;a href=&#34;https://blog.mirror.sahilister.in&#34;&gt;blog.mirror.sahilister.in&lt;/a&gt; with &lt;code&gt;root&lt;/code&gt; pointing towards &lt;code&gt;/var/www/html/blog.sahilister.in&lt;/code&gt; (the directory where mirroring happens, didn&amp;rsquo;t add renaming in &lt;code&gt;wget&lt;/code&gt;). Every time the script runs, it overrides this directory with an updated version of the &lt;a href=&#34;https://blog.sahilister.in&#34;&gt;blog&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;final-thoughts&#34;&gt;Final thoughts&lt;/h3&gt;
&lt;p&gt;That completes the setup. The mirror is live now at &lt;a href=&#34;https://blog.mirror.sahilister.in&#34;&gt;blog.mirror.sahilister.in&lt;/a&gt;. Git repository for the script can be found &lt;a href=&#34;https://git.fosscommunity.in/sahilister/blog-mirror-script/-/tree/master&#34;&gt;here&lt;/a&gt;. Code on this page and in git are licensed under &lt;a href=&#34;https://git.fosscommunity.in/sahilister/blog-mirror-script/-/blob/master/LICENSE&#34;&gt;Apache License 2.0&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://superuser.com/questions/14403/how-can-i-download-an-entire-website&#34;&gt;“How Can I Download an Entire Website?”&lt;/a&gt; &lt;em&gt;Super User&lt;/em&gt;.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref1:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Sync Git Repository with Upstream</title>
      <link>https://blog.sahilister.in/2021/04/sync-git-repository-with-upstream/</link>
      <pubDate>Tue, 06 Apr 2021 18:32:37 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/04/sync-git-repository-with-upstream/</guid>
      <description>&lt;p&gt;Following are the steps for syncing a forked git repository with upstream:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add remote for upstream repository. Use the &lt;code&gt;git clone&lt;/code&gt; URL from upstream:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git remote add upstream &amp;lt;upstream_repositery_link&amp;gt;.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here we added a remote, naming it upstream (can be varied). Remotes are set of tracked repositories. You can view all the remotes for present git repository by doing &lt;code&gt;git remote -v&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Next, fetch changes from upstream and merge/sync in local repository:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git fetch upstream
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git checkout master
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git merge upstream/master
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Note - Replace master with main if your repository has switched to naming the default branch as main.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git fetch&lt;/code&gt; is used to fetch remote/upstream changes. &lt;br/&gt;
&lt;code&gt;git checkout&lt;/code&gt; is used to switch between branches. &lt;br/&gt;
&lt;code&gt;git merge&lt;/code&gt; is used to merge changes from different remotes/branches.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Now, push these changes to your hosted git repository (origin) on &lt;em&gt;GitLab/GitHub/SourceHut/Codeberg&lt;/em&gt; which will also sync it with upstream:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;(optional) To sync all the changes from master/main into feature branch:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git checkout &amp;lt;branch_name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git merge master
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;PS: Work via branches to avoid merge conflicts. New branches can be created via &lt;code&gt;git checkout -b &amp;lt;branch_name&amp;gt;&lt;/code&gt;. Use &lt;code&gt;git checkout master&lt;/code&gt; to switch back to master branch.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Quick-wiki: Searx</title>
      <link>https://blog.sahilister.in/2021/04/quick-wiki-searx/</link>
      <pubDate>Sun, 04 Apr 2021 15:50:24 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/04/quick-wiki-searx/</guid>
      <description>&lt;p&gt;&lt;em&gt;Last update: 04/2021, Searx v1.0.0 from GitHub.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is a &lt;a href=&#34;https://www.urbandictionary.com/define.php?term=quick-wiki&#34;&gt;quick-wiki&lt;/a&gt; for quick reference for my occasional &lt;a href=&#34;https://searx.github.io/searx/&#34;&gt;Searx&lt;/a&gt; installations.&lt;/p&gt;
&lt;h2 id=&#34;table-of-content&#34;&gt;Table of Content&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#set-as-default-search-engine&#34;&gt;Set as default search engine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#update-to-new-release&#34;&gt;Update to new release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#restart&#34;&gt;Restart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#nginx-configuration&#34;&gt;Nginx configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#settings-file&#34;&gt;Settings file&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#interface-and-other-changes&#34;&gt;Interface and other changes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#search-engines-configuration&#34;&gt;Search engines configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#features&#34;&gt;Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#glossary&#34;&gt;Glossary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#quick-links&#34;&gt;Quick links&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;set-as-default-search-engine&#34;&gt;Set as default search engine&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://support.mozilla.org/en-US/kb/add-or-remove-search-engine-firefox#w_add-a-search-engine-from-the-address-bar&#34;&gt;&lt;strong&gt;Firefox desktop&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;/ Tor -&lt;/strong&gt; visit searx instance, right click in address bar, select &amp;ldquo;Add {Search Engine}&amp;rdquo;. Now under Search page in browser settings, in Default Search Engine section dropdown, choose the searx instance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Firefox mobile / Tor mobile -&lt;/strong&gt; &lt;code&gt;Settings&lt;/code&gt; -&amp;gt; &lt;code&gt;Search&lt;/code&gt; -&amp;gt; &lt;code&gt;+ Add search engine&lt;/code&gt; -&amp;gt; &lt;code&gt;Other&lt;/code&gt;. Now add name and following in the search string:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-http&#34; data-lang=&#34;http&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;https://SEARX-URL/?q=%s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Above is a slight variation from vanilla installation specific, to my changes. For vanilla installation use the following string in place:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-http&#34; data-lang=&#34;http&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;https://SEARX-URL/searx?q=%s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Brave -&lt;/strong&gt; &lt;code&gt;Settings&lt;/code&gt; -&amp;gt; &lt;code&gt;Search engine&lt;/code&gt; (from sidebar) -&amp;gt; &lt;code&gt;Manage search engine&lt;/code&gt; -&amp;gt; &lt;code&gt;Add&lt;/code&gt;. Now add name and following in the search string:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-http&#34; data-lang=&#34;http&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;https://SEARX-URL/?q=%s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Above is a slight variation from vanilla installation, specific to my changes. For vanilla installation use the following string in place:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-http&#34; data-lang=&#34;http&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;err&#34;&gt;https://SEARX-URL/searx?q=%s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Optionally add a custom search keyword (shortcut) too like &lt;code&gt;:s&lt;/code&gt; to make search on said search engine by prepending search term with &lt;code&gt;:s&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For &lt;strong&gt;Google Chrome, Edge or Safari&lt;/strong&gt;, see &lt;a href=&#34;https://support.microsoft.com/en-us/microsoft-edge/change-your-default-search-engine-f863c519-5994-a8ed-6859-00fbc123b782&#34;&gt;this&lt;/a&gt; and reuse the above-mentioned search string.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;update-to-new-release&#34;&gt;Update to new release&lt;/h3&gt;
&lt;p&gt;Check for new releases and changelogs &lt;a href=&#34;https://github.com/searx/searx/releases&#34;&gt;on GitHub&lt;/a&gt; (usually 6 months).&lt;/p&gt;
&lt;p&gt;Little tweaked version of &lt;a href=&#34;https://searx.github.io/searx/admin/update-searx.html&#34;&gt;official documentation&lt;/a&gt; customized towards my installation.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo -H -u searx -i
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; searx-src
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git pull origin master
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./manage.sh update_packages
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo -H systemctl restart uwsgi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;restart&#34;&gt;Restart&lt;/h3&gt;
&lt;p&gt;For restarting uWSGI:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo -H systemctl restart uwsgi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For restarting searx&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo -H service uwsgi restart searx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;nginx-configuration&#34;&gt;Nginx configuration&lt;/h3&gt;
&lt;p&gt;Add these and let certbot handle the rest (including https redirections). Taken from &lt;a href=&#34;https://searx.github.io/searx/admin/installation-nginx.html#id1&#34;&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kn&#34;&gt;server_name&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;instance_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;# changed from default /searx to have search on base
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;        &lt;span class=&#34;c1&#34;&gt;# filtron configs
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;        &lt;span class=&#34;kn&#34;&gt;location&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kn&#34;&gt;proxy_pass&lt;/span&gt;         &lt;span class=&#34;s&#34;&gt;http://127.0.0.1:4004/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kn&#34;&gt;proxy_set_header&lt;/span&gt;   &lt;span class=&#34;s&#34;&gt;Host&lt;/span&gt;             &lt;span class=&#34;nv&#34;&gt;$host&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kn&#34;&gt;proxy_set_header&lt;/span&gt;   &lt;span class=&#34;s&#34;&gt;Connection&lt;/span&gt;       &lt;span class=&#34;nv&#34;&gt;$http_connection&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kn&#34;&gt;proxy_set_header&lt;/span&gt;   &lt;span class=&#34;s&#34;&gt;X-Real-IP&lt;/span&gt;        &lt;span class=&#34;nv&#34;&gt;$remote_addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kn&#34;&gt;proxy_set_header&lt;/span&gt;   &lt;span class=&#34;s&#34;&gt;X-Forwarded-For&lt;/span&gt;  &lt;span class=&#34;nv&#34;&gt;$proxy_add_x_forwarded_for&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kn&#34;&gt;proxy_set_header&lt;/span&gt;   &lt;span class=&#34;s&#34;&gt;X-Scheme&lt;/span&gt;         &lt;span class=&#34;nv&#34;&gt;$scheme&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;c1&#34;&gt;# commented following proxy_set_header to remove 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;                &lt;span class=&#34;c1&#34;&gt;# /searx from getting appended in each search URL
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;                &lt;span class=&#34;c1&#34;&gt;# proxy_set_header   X-Script-Name    /searx;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kn&#34;&gt;location&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/searx/static/&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kn&#34;&gt;alias&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/usr/local/searx/searx-src/searx/static/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;# morty configs
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;        &lt;span class=&#34;kn&#34;&gt;location&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/morty&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kn&#34;&gt;proxy_pass&lt;/span&gt;         &lt;span class=&#34;s&#34;&gt;http://127.0.0.1:3000/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kn&#34;&gt;proxy_set_header&lt;/span&gt;   &lt;span class=&#34;s&#34;&gt;Host&lt;/span&gt;             &lt;span class=&#34;nv&#34;&gt;$host&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kn&#34;&gt;proxy_set_header&lt;/span&gt;   &lt;span class=&#34;s&#34;&gt;Connection&lt;/span&gt;       &lt;span class=&#34;nv&#34;&gt;$http_connection&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kn&#34;&gt;proxy_set_header&lt;/span&gt;   &lt;span class=&#34;s&#34;&gt;X-Real-IP&lt;/span&gt;        &lt;span class=&#34;nv&#34;&gt;$remote_addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kn&#34;&gt;proxy_set_header&lt;/span&gt;   &lt;span class=&#34;s&#34;&gt;X-Forwarded-For&lt;/span&gt;  &lt;span class=&#34;nv&#34;&gt;$proxy_add_x_forwarded_for&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kn&#34;&gt;proxy_set_header&lt;/span&gt;   &lt;span class=&#34;s&#34;&gt;X-Scheme&lt;/span&gt;         &lt;span class=&#34;nv&#34;&gt;$scheme&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;settings-file&#34;&gt;Settings file&lt;/h3&gt;
&lt;p&gt;Most things are customized via &lt;code&gt;settings.yml&lt;/code&gt; file.&lt;/p&gt;
&lt;p&gt;The lookup order for &lt;code&gt;settings.yml&lt;/code&gt; is&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Path set in &lt;code&gt;SEARX_SETTINGS_PATH&lt;/code&gt; environment variable.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/etc/searx/settings.yml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;In searx git repo in &lt;code&gt;searx/settings.yml&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Main is in &lt;code&gt;/etc/searx/settings.yml&lt;/code&gt; and full is in &lt;code&gt;/usr/local/searx/searx-src/searx&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;interface-and-other-changes&#34;&gt;Interface and other changes&lt;/h3&gt;
&lt;p&gt;To change favicon and logo, make changes in &lt;code&gt;searx/searx/static/themes/[theme-used]/img&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Following are some handy variables to change/customize in &lt;code&gt;settings.yml&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;instance_name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;autocomplete&lt;/code&gt; - duckduckgo for now&lt;/li&gt;
&lt;li&gt;&lt;code&gt;secret_key&lt;/code&gt; - generate via openssl command mentioned below.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;base_url&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;image_proxy&lt;/code&gt; - proxing image via server. Done via morty. Keep true.&lt;/li&gt;
&lt;li&gt;Under &lt;code&gt;result_proxy&lt;/code&gt;, &lt;code&gt;url&lt;/code&gt; to morty address and key in format &lt;code&gt;key: !!binary &amp;quot;OPENSSL_key&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To generate keys:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openssl rand -base64 &lt;span class=&#34;m&#34;&gt;33&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;search-engines-configuration&#34;&gt;Search engines configuration&lt;/h3&gt;
&lt;p&gt;To disable a specific engine, add the following in &lt;code&gt;settings.yml&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yml&#34; data-lang=&#34;yml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;disabled &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;TODO - find how to disable certain categories on search page.&lt;/p&gt;
&lt;h3 id=&#34;features&#34;&gt;Features&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Search &amp;ldquo;ip&amp;rdquo; to display IP.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;!iv&lt;/code&gt;, &lt;code&gt;!ddg&lt;/code&gt;, &lt;code&gt;!wp&lt;/code&gt; before search term for directly searching Invidious instances, &lt;em&gt;Duckduckgo&lt;/em&gt; or &lt;em&gt;Wikipedia&lt;/em&gt;. See all supported search terms in Engines menu &lt;code&gt;searx_URL/preferences&lt;/code&gt; or &lt;a href=&#34;https://searx.github.io/searx/admin/engines.html&#34;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;!images search-term&lt;/code&gt; to directly search images.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;glossary&#34;&gt;Glossary&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Filtron&lt;/strong&gt; - A reverse proxy and firewall to filter requests before hitting searx written in golang. Blocks crawlers, bots and brute searches. By defaults listens on localhost:4004 and forwards filtered request to localhost:8888 where searx is running.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Morty&lt;/strong&gt; - A content sanitizer result (including image) proxy written in golang. Rewrites external requests to make them private.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;uWSGI&lt;/strong&gt; - A python web server that implements &lt;a href=&#34;https://en.wikipedia.org/wiki/Web_Server_Gateway_Interface&#34;&gt;Web Server Gateway Interface (WSGI)&lt;/a&gt; standard. The uWSGI server is a full-featured HTTP server that is runs searx. However, it&amp;rsquo;s not as performant as nginx at serving static content, so it&amp;rsquo;s pretty common to see nginx sitting in front of a uWSGI server.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;quick-links&#34;&gt;Quick links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://searx.github.io/searx/index.html&#34;&gt;Official documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/searx/searx&#34;&gt;Searx Github repositery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://searx.github.io/searx/admin/architecture.html&#34;&gt;Architecture&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Confronting Thoughts with Writing</title>
      <link>https://blog.sahilister.in/2021/03/confronting-thoughts-with-writing/</link>
      <pubDate>Thu, 25 Mar 2021 22:33:09 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/03/confronting-thoughts-with-writing/</guid>
      <description>&lt;p&gt;I fear boredom at times, which is apparent from my actions like listening to music while bathing, using mobile phone in the washroom, eating meals in front of television (which seems to become a compulsion when I’m home), filling every empty time with “pseudo-productivity” activities like listening and watching random videos. These can be in equal part attributed to fear of being alone with my thoughts; which run wild easily.&lt;/p&gt;
&lt;p&gt;Writing for me is confronting these thoughts and in part, myself. Being truthful while jotting them down, collating them and analyzing them afterwards, is what I try to every time I sit to write. Writing makes thoughts and ideas clear, while helping in visualizing the issues or solution.&lt;/p&gt;
&lt;p&gt;Writing gives mental clarity and another bout with personal thoughts.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: Thaasophobia is an abnormal fear or dislike of being idle &lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PSS: This started as a post on boredom and ended up more on writing. Actual thought collating and analyzing in play.&lt;/em&gt;&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://www.thefreedictionary.com/thaasophobia&#34;&gt;“Thaasophobia.”&lt;/a&gt; The Free Dictionary&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Nostalgic About That Time</title>
      <link>https://blog.sahilister.in/2021/03/nostalgic-about-that-time/</link>
      <pubDate>Sat, 20 Mar 2021 09:31:12 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/03/nostalgic-about-that-time/</guid>
      <description>&lt;p&gt;&lt;em&gt;I know and understand the lockdown due to COVID-19 pandemic was devastating beyond doubt for many. I also understand that I was/am privileged enough and was shielded from its effects in many aspects. The following are some personal feelings and thoughts of the time in &amp;ldquo;the bubble&amp;rdquo; and after it.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Back in January-February 2020, when COVID-19 started and subsequent lockdown was imposed in Wuhan, China; it bore a look of a dystopia. Empty streets, no person in sight and eerie silence in a metropolitan city was an unseen (and unfathomable) scenario before that. Eventually COVID-19 hit home (country) and the lockdowns were replicated here. No humans on the street (except emergency personals), no industries, no vehicular movement. This did lead to less amount of pollution. Though these gave birds, animals and nature some beautiful breathing space.&lt;/p&gt;
&lt;p&gt;Initially things were shut and still. No college so no classes. Eventually accepting the reality, online classes were started. It was like getting up in the morning, straightaway sitting in front of the laptop for classes and having breakfast there. No cameras were required in most classes, so this worked fine. Everything was a life first for most; college shutdowns and online classes, industrial and business shutdowns, work from home culture and long video calls. Initially, I did missed outdoors, but that feeling quickly changed into enjoyment. Being kind of person who enjoys being indoors, times were good. Played many multiplayer games with friends over weekly video calls. Fast food cravings started to creep in. Seeing no end to the lockdown, me and mom started making and experimenting with stuff like Samosas, Tikki and other things at home (good those were, though). It became somewhat a tradition following the news for COVID-19 numbers. Any and every information related to cure was shared and discussed widely. Life got into slow gear. It gave more time for observing life and understanding what mattered.&lt;/p&gt;
&lt;p&gt;The lockdown would be a year old next week. Lockdowns in most parts are over. Cities are buzzing with business and traffic. Hustle and bustle has returned in marketplaces. Life is back to full pace, just with mask covered faces and taking with itself the peace and tranquility of the lockdown era. Vaccine doses are been administered. Life is back to “normal”, the not so &amp;ldquo;good normal&amp;rdquo;. I’m feeling nostalgic about that time now. Those were peaceful, calm days. Complex feelings&amp;rsquo; life throws at you.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>What Is Life?</title>
      <link>https://blog.sahilister.in/2021/03/what-is-life/</link>
      <pubDate>Sun, 14 Mar 2021 22:15:52 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/03/what-is-life/</guid>
      <description>&lt;p&gt;Life is a series of experiences.&lt;/p&gt;
&lt;p&gt;Those experiences can be good or bad purely based on our thought process. We &lt;a href=&#34;https://blog.sahilister.in/2020/08/dont-take-life-so-seriously/&#34;&gt;stress out over small things&lt;/a&gt; and years later feel stupid and laugh over them. The following quote does encompass it nicely:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Life is a tragedy when seen in close-up, but a comedy in long-shot.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;— &lt;cite&gt;Charlie Chaplin&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So go out in the field, take risks, do things that make you happy regardless of popular perception/trends and thoughts about what folks would think about you. After all, &lt;em&gt;YOLO!&lt;/em&gt; &lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: This what I think life is in March 2021. It stuck me while I was driving my two-wheeler today and was thinking about what life means for me. I believe my definition of life would change as life progress.&lt;/em&gt;&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;&lt;em&gt;YOLO is &amp;ldquo;you only live once&amp;rdquo;.&lt;/em&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Internet, a Network of Networks</title>
      <link>https://blog.sahilister.in/2021/03/internet-a-network-of-networks/</link>
      <pubDate>Fri, 12 Mar 2021 00:37:29 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/03/internet-a-network-of-networks/</guid>
      <description>&lt;p&gt;Internet is a network of networks. It’s mind-boggling how data packets containing requests and responses travel over the internet. How a content request moves from one&amp;rsquo;s Wi-Fi router (or cell tower) &amp;gt; Tier 3 provider &lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&amp;gt; Tier 2 provider &lt;sup id=&#34;fnref1:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&amp;gt; Tier 1 provider &lt;sup id=&#34;fnref2:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&amp;gt; (maybe) &lt;a href=&#34;https://en.wikipedia.org/wiki/Internet_exchange_point&#34;&gt;internet exchange&lt;/a&gt; &amp;gt; content provider (including CDNs) and reverse, traversing hundreds and thousands of miles across continents through undersea and on land fiber optics cables to reach a data center (or someone’s home) server to serve the requested content. This symphony is done in conjugation with multiple content providers, network transit providers, data centers and internet exchanges. Internet is truly a network transcending national boundaries.&lt;/p&gt;
&lt;p&gt;Exchanging traffic is the underlying fabric which makes the internet tick. No one provider can reach every single device connected to the internet through its own network. Network switch needs to happen somewhere from requester&amp;rsquo;s network to provider&amp;rsquo;s network. That&amp;rsquo;s why it&amp;rsquo;s decentralized.&lt;/p&gt;
&lt;p&gt;Smaller (Tier 2 and Tier 3) network pay bigger, carrier grade (Tier 1) networks for transport or transit as it is called, of their network traffic to reach far off networks on the internet. Carrier grade networks have optical fiber networks for selling and company usage. These are often called internet backbones as they carry the bulk of international internet traffic.&lt;/p&gt;
&lt;p&gt;On the other hand, &lt;a href=&#34;https://en.wikipedia.org/wiki/Peering&#34;&gt;peering&lt;/a&gt; is a settlement free arrangement with no money exchanging hands between networks which have equal benefits from the arrangement, like Tier 1 networks can exchange traffic with other Tier 1 networks  in either direction or between ISPs which need content for their user and content providers which want their content to reach end user. Peering generally happens in &lt;a href=&#34;https://en.wikipedia.org/wiki/Internet_exchange_point&#34;&gt;Internet exchanges&lt;/a&gt; (or internet exchange point). More peering, through internet exchange help ISPs to take data directly from content providers leading to less reliance on transit providers leading to significant cost saving, reduced latency and at times improved redundancy. Internet exchanges provide a net positive impact to the internet connectivity in the region.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m writing this while listening to a YouTube music video. The video probably is received over a private peering arrangement between Google and my internet service provider, Reliance Jio; considering the traffic Reliance Jio produce and Google&amp;rsquo;s low 1 Gbps traffic requirement for private peering. This blog probably would also be served in the same manner as GitLab pages (which hosts it), makes use of Google Cloud. If it was hosted on say, &lt;a href=&#34;https://www.hetzner.com/&#34;&gt;Hetzner Online&lt;/a&gt;’s server, it would reach someone through one or more of the &lt;a href=&#34;https://www.hetzner.com/unternehmen/rechenzentrum/&#34;&gt;listed networks interconnect arrangements&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;India earlier used international bandwidth and transit providers to access the internet through European or Singapore internet exchanges and data centers. Higher demands and low latency requirements brought more internet exchanges to India like &lt;a href=&#34;https://www.de-cix.net/en/locations/india&#34;&gt;DE-CIX&lt;/a&gt;, &lt;a href=&#34;https://extreme-ix.org/&#34;&gt;Extreme-IX&lt;/a&gt;, &lt;a href=&#34;https://kolkataix.in/&#34;&gt;Kolkata IX&lt;/a&gt; and the oldest of the lot, &lt;a href=&#34;https://en.wikipedia.org/wiki/National_Internet_Exchange_of_India&#34;&gt;National Internet Exchange of India&lt;/a&gt; or NIXI, which in turn has localized quite a bit of internet. NIXI had this weird rules which disallowed content providers (like Google, Netflix) and CDNs (like Akamai, Cloudflare etc), which provide bulk of the internet traffic as well as charging for bandwidth in &lt;em&gt;x minus y&lt;/em&gt; model, under which ISPs paid for downloaded data minus uploaded data, as opposed to just renting bandwidth. This was something unheard of internet exchange space, which only charge flat port fees. Thankfully, both these rules were done away with in 2019. Private players (DE-CIX, Extreme-IX) have largely taken the lead in this space. Even touching 1 Tbps traffic &lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; on some days in comparison to NIXI’s max of less than 200 Gbps &lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;, largely due to the fact content providers have shied away from peering at NIXI.&lt;/p&gt;
&lt;p&gt;Netflix is a different case which needs special mention. In addition to peering via internet exchanges, they also provide &lt;a href=&#34;https://openconnect.netflix.com/en/&#34;&gt;Open Connect Appliances&lt;/a&gt; boxes to ISPs with 5+ Gbps of Netflix traffic. These are sorts of local caches (usually with 100 TB storage), filled with popular local content, that’s directly embedded in ISPs network. This way Netflix content isn’t served over the usual internet but directly from this box inside ISPs network, significantly reducing bandwidth loads, cost and latency.&lt;/p&gt;
&lt;p&gt;Peering, internet exchanges, submarine cables makes the network that powers the internet. Why should only data centers and servers take all the credit ;)&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://www.thousandeyes.com/learning/techtorials/isp-tiers&#34;&gt;&amp;ldquo;Internet Service Provider 3-Tier Model&amp;rdquo;&lt;/a&gt;. &lt;em&gt;ThousandEyes&lt;/em&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref1:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref2:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://extreme-ix.org/technical/statistics/&#34;&gt;“Statistics”&lt;/a&gt;. &lt;em&gt;Extreme IX&lt;/em&gt;&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://www.de-cix.in/statistics&#34;&gt;&amp;ldquo;DE-CIX India Exchange Traffic Stats&amp;rdquo;&lt;/a&gt;. &lt;em&gt;DE-CIX India&lt;/em&gt;&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://web.archive.org/web/20210117093618/nixi.in/en/mrtg-statistics&#34;&gt;&amp;ldquo;MRTG Statistics&amp;rdquo;&lt;/a&gt;. &lt;em&gt;NIXI&amp;rsquo;s wayback machine snapshot, as website is frequently down.&lt;/em&gt;&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>दीवार में एक खिड़की रहती थी पर कुछ विचार</title>
      <link>https://blog.sahilister.in/2021/03/%E0%A4%A6%E0%A5%80%E0%A4%B5%E0%A4%BE%E0%A4%B0-%E0%A4%AE%E0%A5%87%E0%A4%82-%E0%A4%8F%E0%A4%95-%E0%A4%96%E0%A4%BF%E0%A4%A1%E0%A4%BC%E0%A4%95%E0%A5%80-%E0%A4%B0%E0%A4%B9%E0%A4%A4%E0%A5%80-%E0%A4%A5%E0%A5%80-%E0%A4%AA%E0%A4%B0-%E0%A4%95%E0%A5%81%E0%A4%9B-%E0%A4%B5%E0%A4%BF%E0%A4%9A%E0%A4%BE%E0%A4%B0/</link>
      <pubDate>Tue, 09 Mar 2021 20:20:22 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/03/%E0%A4%A6%E0%A5%80%E0%A4%B5%E0%A4%BE%E0%A4%B0-%E0%A4%AE%E0%A5%87%E0%A4%82-%E0%A4%8F%E0%A4%95-%E0%A4%96%E0%A4%BF%E0%A4%A1%E0%A4%BC%E0%A4%95%E0%A5%80-%E0%A4%B0%E0%A4%B9%E0%A4%A4%E0%A5%80-%E0%A4%A5%E0%A5%80-%E0%A4%AA%E0%A4%B0-%E0%A4%95%E0%A5%81%E0%A4%9B-%E0%A4%B5%E0%A4%BF%E0%A4%9A%E0%A4%BE%E0%A4%B0/</guid>
      <description>&lt;p&gt;&lt;strong&gt;किताब का नाम&lt;/strong&gt; - दीवार में एक खिड़की रहती थी &lt;br&gt;
&lt;strong&gt;लेखक&lt;/strong&gt; - विनोदकुमार शुक्ल             &lt;br&gt;
&lt;strong&gt;प्रकार&lt;/strong&gt;  - उपन्यास                          &lt;br&gt;&lt;/p&gt;
&lt;p&gt;लगभग चार महीनों बाद आखिरकार ये किताब खत्म हो ही गई। यह किताब मैंने अपने जन्मदिन पर अपने लिए ली गई चार किताबो में से एक थी। मैने इससे पहले कभी किताब लेखक, विनोदकुमार शुक्ल का नाम नहीं सुना था पर अब मैं उनकी लेख शेली का र्पेमी हो गया हुँ और उनकी बाकी किताबे पढ़ने के लिए उत्सुक हुँ।&lt;/p&gt;
&lt;p&gt;दीवार में एक खिड़की रहती थी, एक मध्यवर्गीय, महाविद्यालय के शिक्षक रघुवर प्रसाद  की कहानी है। उनके एक कमरे के किराये के मकान में एक खिड़की थी जिससे उपन्यास को शीर्शक मिला। खिड़की के इस पार, रघुवर प्रसाद  का घर और उस पार एक अलग बगीचों, तालाब वाली दुनिया थी। ये रघुवर प्रसाद और उनकी पत्नी, सोनसी का  निकास &lt;em&gt;(escape)&lt;/em&gt;  था।  कहानी में कई और पात्र आते-जाते रहे हैं। विनोदकुमार शुक्ल ने कहानी को हास्य शैली में लिखा है। कई बार ऐसे हास्य वर्णन आते कि पता ही नहीं लगता क्या से क्या हो गया। कहानी को कोई बड़ा उतार चढ़ाव नहीं आता और पूरी कहानी का माहौल हलका बना रहता है। पढ़ने लायक उपन्यास है यह।&lt;/p&gt;
&lt;p&gt;&lt;em&gt;पुनश्च (PS) - लेख में &amp;ldquo;प&amp;rdquo; के पेर में &amp;ldquo;र&amp;rdquo; नहीं आ रहा, जबकी मोबाइल पर आ रहा है पर कोशिश जारी है। कंप्यूटर पर हिन्दी लेखन में अभी काफी कुछ सिखना है।&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>I Revisited My School</title>
      <link>https://blog.sahilister.in/2021/03/i-revisited-my-school/</link>
      <pubDate>Tue, 02 Mar 2021 16:07:57 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/03/i-revisited-my-school/</guid>
      <description>&lt;p&gt;&lt;em&gt;To be clear, I went to about six different schools (including my kindergarten (no it isn&amp;rsquo;t a typo, it&amp;rsquo;s kindergarten, &lt;a href=&#34;https://www.merriam-webster.com/dictionary/kindergarten&#34;&gt;look!&lt;/a&gt;)), due to  the transferable nature of my father&amp;rsquo;s job. I revisited my last school, Kendriya Vidyalaya No 2, Chandimandir Cantt, where I got my 7th-12th grade education.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I hadn&amp;rsquo;t planned any visit to my alma mater, but recently I got to know about the existence and requirement of a passing certificate which is issued by school authorities. As we were 2017 batch pass out, I wasn&amp;rsquo;t sure that getting the certificate would be possible now (four years later). One of my good friend and schoolmate, Rajan inquired and told that they&amp;rsquo;re infact available and are with one of our yesteryear chemistry faculty, Mr B N Lucky. This gave Abhay (another good friend and schoolmate) and myself an opportunity to revisit our school.&lt;/p&gt;
&lt;p&gt;As we entered the school premises, we realized that the building paint was changed from initial dual tone navy blue and blue to maroon and dark skin-ish color shade. The area near the existing playground, which was complete wilderness, was cleared to make way for a big football ground. No students on premises (due to the pandemic) may also have helped cover it with (natural) grass. My 12th standard classroom looked desolate. Coincidently, on the same day, the present 12th class batch were having their first day for offline practicals after spending the whole of the year attending online classes. And the real sad part is they probably won’t be getting a farewell either. Some classes were on with limited attendance with COVID-19 related precautions. It was a bitter-sweet moment to be frank seeing students attending classes in our school uniform.&lt;/p&gt;
&lt;p&gt;It felt like yesterday when we were roaming and jumping in these corridors. It just didn&amp;rsquo;t felt like four years since we said goodbye to this place. Teachers (only Mr B N Lucky and Mrs Bharati Koul, from our times were still there), remembered us by names. Though it was my first experience revisiting my teachers, they might have met multitudes of student batches they taught coming back for a visit. They might know the feeling, but it was a first for me (in school setting). Happy I was. Mr B N Lucky sir even said, &amp;ldquo;Take a seat, you&amp;rsquo;re our guest now&amp;rdquo;, but it didn&amp;rsquo;t felt any different. Inside it just felt like we&amp;rsquo;re still their student, still learning and doing practical under their supervision. Not a bit changed in that. Would add, respect for them grew manifolds. It was a warm fuzzy feeling. I connected with my school like which I never did with my university (farewell for which is also near). Mrs Bharati Koul ma&amp;rsquo;am added that, &amp;ldquo;It&amp;rsquo;s only here you do all sort of things and then restrictions start getting added&amp;rdquo;. It&amp;rsquo;s so true. We had exam related stress then and that too occasionally. We pretty much just enjoyed being in school. All sorts of trips, activities, competitions within and without the school made things even more interesting. Do I miss my schoolmates, no! Because those who matter are still near and in touch. I miss the environment, the times together with those mates and everything that came out of those moments. Nostalgia is real.&lt;/p&gt;
&lt;p&gt;As Ralph Waldo Emerson said &amp;ldquo;&lt;em&gt;Life is a journey, not a destination&lt;/em&gt;&amp;rdquo;. School wasn&amp;rsquo;t about getting education only and be done with it, it was about enjoying and learning in the process.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: I and Abhay went in joking about having chai (tea) with our teachers and to our surprise, both Mr B N Lucky sir and Mrs Bharati Koul ma&amp;rsquo;am really said that they would have offered chai-samosa but due to COVID-19 related restrictions, the canteen was closed. Mrs Bharati Koul ma&amp;rsquo;am even added if she had known we were coming, she would have brought something from home. So much changed but something remained. :)&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Updates: No Cloudflare Call for Blog Resource</title>
      <link>https://blog.sahilister.in/2021/02/updates-no-cloudflare-call-for-blog-resource/</link>
      <pubDate>Sat, 27 Feb 2021 01:39:02 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/02/updates-no-cloudflare-call-for-blog-resource/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m pleased to announce that the blog is now 100% Cloudflare free and loads completely over GitLab Pages.&lt;/p&gt;
&lt;p&gt;Now let me explain why it had Cloudflare in the first place. The content here is licensed under &lt;a href=&#34;https://creativecommons.org/licenses/by-sa/4.0/&#34;&gt;CC BY-SA 4.0&lt;/a&gt; license and &lt;a href=&#34;https://blog.sahilister.in/img/licensebutton.png&#34;&gt;this&lt;/a&gt; license badge in the footer is used to prominently display it. This image file was loaded directly from &lt;a href=&#34;https://i.creativecommons.org&#34;&gt;i.creativecommons.org&lt;/a&gt; which is a redirect for &lt;a href=&#34;https://licensebuttons.net/&#34;&gt;licensebuttons.net&lt;/a&gt;; static files for which are served through Cloudflare. I use &lt;a href=&#34;https://addons.mozilla.org/en-US/firefox/addon/detect-cloudflare-plus/&#34;&gt;True Sight&lt;/a&gt;, a Firefox extension which shows all the CDNs called when a website loads. Seeing Cloudflare requests every time my blog loads wasn&amp;rsquo;t a pretty site for me (considering Cloudflare&amp;rsquo;s track record with internet centralization, aggressive stance against Tor users etc). The image file could be loaded locally but Hugo&amp;rsquo;s image lookup order always failed me until now. Finally putting the image in &lt;code&gt;/static/img&lt;/code&gt; directory worked (&lt;code&gt;/content/img&lt;/code&gt; also works) and I hit deploy ( via &lt;code&gt;gcom&lt;/code&gt; and &lt;code&gt;gp&lt;/code&gt;. How? Read &lt;a href=&#34;https://blog.sahilister.in/2020/07/alias-command/&#34;&gt;here&lt;/a&gt; and &lt;a href=&#34;https://github.com/sahilister/dotfiles/blob/dc0e4cb29ea4c4fdb2c6db8b16728d98de1b6c11/.aliases#L32&#34;&gt;here&lt;/a&gt;), removing the dependency on Cloudflare.&lt;/p&gt;
&lt;p&gt;Now removing Cloudflare as CDN did pushed blog&amp;rsquo;s first load time beyond 1s. I knew that on blog load, a favicon lookup was making a request for non-existent favicon file which in turn was adding more than &lt;a href=&#34;https://gitlab.com/sahilister/reimagined-doodle/uploads/37677e54a9abdb8aecf2f1e4932d5805/210225-1010-14.png&#34;&gt;350ms overhead&lt;/a&gt;. Just removing the call from head section in &lt;code&gt;index.html&lt;/code&gt; didn&amp;rsquo;t work as browsers by default make that request. Searching the internet lead me to this one liner code that essentially disables it&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;icon&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;image/png&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;data:image/png;base64,iVBORw0KGgo=&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This helped bring the first loads times to &lt;a href=&#34;https://gitlab.com/sahilister/reimagined-doodle/uploads/3d0006fedae1bace245a8ac695976463/210225-1731-27.png&#34;&gt;1s or less&lt;/a&gt; once again in most cases and complete blog load with just 3 requests.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: If you have any suitable, minimal favicon(s) suggestions for this blog, feel free to hit me up on email from the &lt;a href=&#34;https://blog.sahilister.in/about/&#34;&gt;about section&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Taken from the top comment in the top comment of this Stack Overflow &lt;a href=&#34;https://stackoverflow.com/questions/1321878/how-to-prevent-favicon-ico-requests&#34;&gt;thread&lt;/a&gt;.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>The Road Not Taken</title>
      <link>https://blog.sahilister.in/2021/02/the-road-not-taken/</link>
      <pubDate>Tue, 23 Feb 2021 20:11:52 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/02/the-road-not-taken/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://en.wikisource.org/wiki/The_Road_Not_Taken&#34;&gt;&amp;lsquo;The Road Not Taken&amp;rsquo;&lt;/a&gt; by Robert Frost is one interesting poem.&lt;/p&gt;
&lt;p&gt;First came across this poem in secondary school. Back then it was just another poem in English textbook; read and moved on. It returned in my sophomore year when I joined &lt;a href=&#34;https://www.toastmasters.org/about/all-about-toastmasters&#34;&gt;Toastmasters&lt;/a&gt; and had to give my icebreaker speech.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Side note - Icebreaker is the first speech a new joinee or new Toastmaster gives. It&amp;rsquo;s a speech to introduce and share something about oneself and break the ice.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Not sure where and why I remembered the poem then. I felt, ‘The Road Not Taken’ does define a part of my life journey. Being part of the group and joining completely different organizations which excited me was always my thing. Most times, I would introduce my friends to those organizations but seldom in my past life they joined. Most times, alone I would go and enlist myself to new organizations without knowing anyone there. The experience never disappointed, never! Initially things would be a bit awkward but eventually knowing folks there, the culture and just a curious mind helped. Wherever I went, folks were helpful and cheerful (humans generally care for others and seek company). And that was my divergent road, that made who I’m today.&lt;/p&gt;
&lt;p&gt;Coming back to the icebreaker, the last stanza from the poem was used in full to conclude my icebreaker speech (which in my opinion was a dope idea). Though I forgot the stanza and had to consult my notes.&lt;/p&gt;
&lt;p&gt;The poem gives the vibes that every decision we make, even smaller ones, tend to affect us in the long run. It&amp;rsquo;s like &lt;a href=&#34;https://upload.wikimedia.org/wikipedia/commons/5/5f/Tree_%28computer_science%29.svg&#34;&gt;tree data structure&lt;/a&gt;, one decision leads to more decisions to make and the cycle repeats. If only one decision/variable differed in the past, life might not have turned like what it is now. Like if I hadn&amp;rsquo;t paid interest to English language and literature, I wouldn&amp;rsquo;t be into writing (writing in particular not blogging). If I hadn&amp;rsquo;t been into computers, I wouldn&amp;rsquo;t have joined &lt;a href=&#34;https://dgplug.org/&#34;&gt;dgplug&lt;/a&gt;&amp;rsquo;s &lt;a href=&#34;https://foss.training/&#34;&gt;summer training&lt;/a&gt; (which was due to my interest in GNU/Linux (bolstered by the pandemic) which in turn was due to frustrations with Windows, and it&amp;rsquo;s privacy practices) which led to blog writing which is chronicled in &amp;lsquo;&lt;a href=&#34;https://blog.sahilister.in/2020/10/why-i-write-blogs/&#34;&gt;Why I Write (Blogs)&lt;/a&gt;&amp;rsquo; post. Many variables fell in place to make this blog and life happen the way it is.&lt;/p&gt;
&lt;p&gt;Now, I&amp;rsquo;m not sure about my future (career wise). University is almost over, nothing is settled (or looks positive). In hindsight, things could have happened in a grossly (not in negative sense) different way, but I&amp;rsquo;m okay-ish with how things turned out. Writing, Free Software communities, reading and life gives me hope. Have been happy-go-lucky (I believe) uptil now, let&amp;rsquo;s see how the forthcoming life turns out to be. Now I would like to conclude this blog post just like how I ended my icebreaker speech, with the last stanza of &amp;lsquo;The Road Not Taken&amp;rsquo;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;I shall be telling this with a sigh &lt;br&gt;
Somewhere ages and ages hence:	&lt;br&gt;
Two roads diverged in a wood, and I— &lt;br&gt;
I took the one less travelled by, &lt;br&gt;
And that has made all the difference.&lt;/em&gt; &lt;br&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Quick-wiki: Style Guide</title>
      <link>https://blog.sahilister.in/2021/02/quick-wiki-style-guide/</link>
      <pubDate>Wed, 17 Feb 2021 16:10:48 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/02/quick-wiki-style-guide/</guid>
      <description>&lt;p&gt;Faced some confusion about styling so wrote a good practices style guide for my usage. Much inspiration was taken from the University of Oxford &lt;a href=&#34;https://www.ox.ac.uk/sites/files/oxford/media_wysiwyg/University%20of%20Oxford%20Style%20Guide.pdf&#34;&gt;style guide&lt;/a&gt; as well as my early day posts.&lt;/p&gt;
&lt;p&gt;When in doubt, consult the style guide :D&lt;/p&gt;
&lt;h2 id=&#34;table-of-content&#34;&gt;Table of Content&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#headings&#34;&gt;Headings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#headings&#34;&gt;Table of Content&lt;/a&gt; &lt;!-- adding #headings because ToC redirects to ##ToC instead of ###ToC --&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#comments&#34;&gt;Comments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#code&#34;&gt;Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#quote-lines&#34;&gt;Quote lines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#citation&#34;&gt;Citation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#images-and-credits&#34;&gt;Images and credits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#abbreviations&#34;&gt;Abbreviations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#hindi-typing&#34;&gt;Hindi typing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#cultural-creations-websites-and-emails&#34;&gt;Cultural creations, websites and emails&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#numbers-time-and-dates&#34;&gt;Numbers, time and dates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#miscellaneous&#34;&gt;Miscellaneous&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#quick-links&#34;&gt;Quick links&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;headings&#34;&gt;Headings&lt;/h3&gt;
&lt;p&gt;Second level (##) heading for ToC or other introductions. Other headings will have third level (###).&lt;/p&gt;
&lt;p&gt;Another level can be done with fourth level (####) heading though it essentially is a word which is bold.&lt;/p&gt;
&lt;h3 id=&#34;table-of-content-1&#34;&gt;Table of Content&lt;/h3&gt;
&lt;p&gt;For sequential steps use numbers in bullets (ordered list), dash for others (unordered list).&lt;/p&gt;
&lt;p&gt;Full stops in bullets only for long sentence.&lt;/p&gt;
&lt;h3 id=&#34;comments&#34;&gt;Comments&lt;/h3&gt;
&lt;p&gt;Comments can be added to markdown file which won&amp;rsquo;t be displayed on the page. Format:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;&amp;lt;!-- ...comments       --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;code&#34;&gt;Code&lt;/h3&gt;
&lt;p&gt;Code blocks should be done like this (no space in end backticks):&lt;/p&gt;
&lt;div class=&#34;highlight&#34; lineos=&#34;table&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;sb&#34;&gt;```&lt;/span&gt;&amp;lt;lang-code&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; // ... code block
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;``&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Supported &lt;a href=&#34;https://gohugo.io/content-management/syntax-highlighting/#list-of-chroma-highlighting-languages&#34;&gt;language codes&lt;/a&gt;. Highlight specific line and add line numberings format&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;sb&#34;&gt;```&lt;/span&gt;lang-code &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;linenos&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;table,hl_lines&lt;span class=&#34;o&#34;&gt;=[&lt;/span&gt;8, &lt;span class=&#34;s2&#34;&gt;&amp;#34;11-13&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;,linenostart&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;199&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;// ... code
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;//
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;``&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;quote-lines&#34;&gt;Quote lines&lt;/h3&gt;
&lt;p&gt;Quoted sentences should be double quoted and in italics. Before starting sentence, it should have a long dash.&lt;/p&gt;
&lt;p&gt;Ex -
I followed up with – “&lt;em&gt;The next time you hear me say you’re stubborn. Just say – no, I’m just persistent.&lt;/em&gt;”&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h3 id=&#34;citation&#34;&gt;Citation&lt;/h3&gt;
&lt;p&gt;Format for books, website or author citation:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; add the citation text here.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;multi-lines can also be &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; — &amp;lt;cite&amp;gt;Source&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;^1&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&amp;lt;/cite&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;^1&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;: &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;title&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;](&lt;/span&gt;link&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;. _Source_
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Use &lt;a href=&#34;https://zbib.org/&#34;&gt;&lt;em&gt;ZoteroBib&lt;/em&gt;&lt;/a&gt; for generating citations reference information. Remove access date.&lt;/p&gt;
&lt;h3 id=&#34;images-and-credits&#34;&gt;Images and credits&lt;/h3&gt;
&lt;p&gt;For images, add alt text:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;!&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;Alt text &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; screen readers&lt;span class=&#34;o&#34;&gt;](&lt;/span&gt;URL&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Adding images with lazy loading:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;img&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;loading&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;lazy&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;alt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;DebConf23 Group Photo&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;/img/dc23/dc23-group-photo-small.jpg&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Adding click to enlarge button with cation:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;![Alt text](/img/image.jpg)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;style&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;text-align: center&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Caption. &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;/img/image.jpg&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Click to enlarge&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Format for credits:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;style&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;text-align: center&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	 &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;image_source&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;image_caption&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt; by
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	 &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;creater_link&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;creator_name&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt; under
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;license_link&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt; license_name &lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Articles on attribution best practices by &lt;a href=&#34;https://wiki.creativecommons.org/wiki/Best_practices_for_attribution&#34;&gt;Creative Commons&lt;/a&gt; and &lt;a href=&#34;https://www.newmediarights.org/guide/how_to/creative_commons/best_practices_creative_commons_attributions&#34;&gt;New Media Rights&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;abbreviations&#34;&gt;Abbreviations&lt;/h3&gt;
&lt;p&gt;No space or full stops after it.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Time: am, pm&lt;/li&gt;
&lt;li&gt;Short forms: NASA, BBC&lt;/li&gt;
&lt;li&gt;Names: R K Narayan&lt;/li&gt;
&lt;li&gt;etc, ie or eg&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;hindi-typing&#34;&gt;Hindi typing&lt;/h3&gt;
&lt;p&gt;Presently, I&amp;rsquo;m using/prefering (origial) &lt;a href=&#34;https://en.wikipedia.org/wiki/InScript_keyboard&#34;&gt;inscript keyboard layout&lt;/a&gt; for both mobile and laptop typing using ibus and ibus-m17n packages.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.sahilister.in/img/inscript-layout.jpg&#34; alt=&#34;Inscript keyboard layout&#34;&gt;&lt;/p&gt;
&lt;i&gt;
         &lt;div style=&#34;text-align: center&#34;&gt;
	 &lt;a href=&#34;http://ildc.in/images/inscript-kb/Devnagari-Inscript-Layout.jpg&#34;&gt;Inscript layout&lt;/a&gt;. Copyright ©
	 &lt;a href=&#34;https://tdil.meity.gov.in/Default.aspx&#34;&gt;TDIL&lt;/a&gt; under fair dealing. 
	 &lt;a href=&#34;https://blog.sahilister.in/img/inscript-layout.jpg&#34;&gt;Click to enlarge&lt;/a&gt;
	 &lt;/div&gt;
&lt;/i&gt;
&lt;p&gt;Inscript keyboard physical &lt;a href=&#34;https://upload.wikimedia.org/wikipedia/commons/9/99/Devanagari_INSCRIPT_Keyboard.JPG&#34;&gt;image&lt;/a&gt; on &lt;em&gt;Wikipedia&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&#34;cultural-creations-websites-and-emails&#34;&gt;Cultural creations, websites and emails&lt;/h3&gt;
&lt;p&gt;Italics and capitalize for books/album/films/website names.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Malgudi Days&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Pink Panther&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Wikipedia&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If a chapter/song/article/titles from a large creation is called, single quotes without italics is used.&lt;/p&gt;
&lt;p&gt;Emails - &lt;em&gt;mail@example.com&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;numbers-time-and-dates&#34;&gt;Numbers, time and dates&lt;/h3&gt;
&lt;p&gt;Spell numbers upto ten, figures for numbers above ten.&lt;/p&gt;
&lt;p&gt;Use figures and symbols for percentages, measurements and currency.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;12am (12 hour clock)&lt;/li&gt;
&lt;li&gt;12:00 (24 hours)&lt;/li&gt;
&lt;li&gt;12 April&lt;/li&gt;
&lt;li&gt;1914-15&lt;/li&gt;
&lt;li&gt;BC, AD&lt;/li&gt;
&lt;li&gt;7 billion or 7bn is fine but consistent across text&lt;/li&gt;
&lt;li&gt;Contact - 09876 554321&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;miscellaneous&#34;&gt;Miscellaneous&lt;/h3&gt;
&lt;p&gt;Notes, side notes and updates should be italics.
Updates and edit notices should follow the format:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Update (03/2021): Text&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Edit 1: What was edited and why.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Edit 2: ANother edit.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Full stops outside brackets with an exception where the sentence starts and end inside brackets.&lt;/p&gt;
&lt;p&gt;Menu options to be followed should be in format:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Application&lt;/code&gt; -&amp;gt; &lt;code&gt;Install&lt;/code&gt; -&amp;gt; &lt;code&gt;Communication&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Checklist and multilevel checklist can be done with following syntax:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; First
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;X&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; Second
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    - &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;X&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; Sub-second
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; Third
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;quick-links&#34;&gt;Quick links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://gohugo.io/content-management/syntax-highlighting/#list-of-chroma-highlighting-languages&#34;&gt;Supported language codes for code highlighting&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://gohugo.io/content-management/syntax-highlighting/#highlight-shortcode&#34;&gt;Highlight options&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;Text and style addition inspirated from &lt;a href=&#34;https://alearningaday.blog/2021/05/31/stubborn-and-persistent/&#34;&gt;A Learning a Day&amp;rsquo;s article&lt;/a&gt; .&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Gemini</title>
      <link>https://blog.sahilister.in/2021/02/gemini/</link>
      <pubDate>Mon, 15 Feb 2021 17:22:56 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/02/gemini/</guid>
      <description>&lt;p&gt;Gemini protocol has been trending on my Mastodon homeserver &lt;a href=&#34;https://fosstodon.org&#34;&gt;Fosstodon&lt;/a&gt; quite a bit lately. Some term it as the spiritual successor to Gopher protocol. Originally developed by &lt;a href=&#34;https://www.circumlunar.space/~solderpunk/&#34;&gt;Solderpunk&lt;/a&gt; (cool name btw!), it&amp;rsquo; something in between Gopher and HTTP (the modern web). By design, free from any JavaScript, analytics, tracking, advertisers for now (and probably search engine crawls too). Niche it feels like, just like what Mastodon felt (and sometimes now also), a place where geeks and nerd flock, technical to it&amp;rsquo;s core. Browsing Gemini (through &lt;a href=&#34;https://github.com/makeworld-the-better-one/amfora&#34;&gt;Amfora&lt;/a&gt; and &lt;a href=&#34;https://github.com/skyjake/lagrange&#34;&gt;Lagrange&lt;/a&gt;) feels like the small, personal text oriented culture from the 80-90s internet era (which I didn&amp;rsquo;t experience firsthand because was born late, but know about newsgroups, BBS etc). It houses all kinds of interesting stuff like gemlogs (blogs in Gemini space), games like &lt;a href=&#34;gemini://tictactoe.lanterne.chilliet.eu&#34;&gt;tic-tac-toe&lt;/a&gt;, &lt;a href=&#34;gemini://geminispace.info/search&#34;&gt;search engine&lt;/a&gt; and even a Gemini exclusive &lt;a href=&#34;gemini://konpeito.media/&#34;&gt;mixtape&lt;/a&gt; (highly recommended) capsule.&lt;/p&gt;
&lt;p&gt;As my blog is mostly text oriented, with no JavaScript, no tracking with only one external call to CDN for CC license image (which I&amp;rsquo;ll load locally soon enough), Gemini seems a good choice for having a presence on (with a gemlog). I&amp;rsquo;m presently experimenting with Gemini servers and seeing how things work. With no inline links (which I heavily rely on), direct conversion of my previous blogs into gemlogs won&amp;rsquo;t work out nicely. Hoping to have my posts on both web and Gemini space. ASCII art in the Gemini space fascinates me, will surely have that on my Gemini capsule. Will announce when the capsule goes live.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS - My blog loads nicely in terminal browsers \o/. Any users say hi!&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Updates: Blog RSS Feed</title>
      <link>https://blog.sahilister.in/2021/02/updates-blog-rss-feed/</link>
      <pubDate>Wed, 10 Feb 2021 22:33:18 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/02/updates-blog-rss-feed/</guid>
      <description>&lt;p&gt;Finally, after almost 7 months of its existence, the blog now has a Really Simple Syndication (RSS) feed. The feed URL is &lt;a href=&#34;https://blog.sahilister.in/index.xml&#34;&gt;https://blog.sahilister.in/index.xml&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hugo (on which this blog is) by default provides RSS feeds. I had to disable mine when the hugo package in Debian 10 stable (buster) had issues loading with the RSS template file. Removing the file solved it for the time being back then. That issue was sorted in the new versions but never made into stable. Now as I run Debian testing (which closely tracks the upstream release), I simply re-added the RSS template to enable the feed.&lt;/p&gt;
&lt;p&gt;Open web for the win \o/&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>The Financial Expert and the Book Nostalgia</title>
      <link>https://blog.sahilister.in/2021/02/the-financial-expert-and-the-book-nostalgia/</link>
      <pubDate>Tue, 09 Feb 2021 08:19:47 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/02/the-financial-expert-and-the-book-nostalgia/</guid>
      <description>&lt;p&gt;The other day, I found &lt;em&gt;The Financial Expert&lt;/em&gt; by R K Narayan lying around in my house. &lt;em&gt;The Financial Expert&lt;/em&gt; was one of the earliest book I brought for myself back in 7th or 8th standard. The finding made me nostalgic of the days when I discovered my love for books.&lt;/p&gt;
&lt;p&gt;It would be untrue if I say my tryst with books started in 7th standard. From the beginning of my schooldays, I was fascinated with books of a different kind; books of facts, figures and knowledge. General knowledge or GK was my favorite subject in  primary school. Scavenging the school library for GK books, fact books, list books (book with listings like the &amp;lsquo;Top 10 of this&amp;rsquo;, &amp;lsquo;Top 10 of that&amp;rsquo;), Guinness World Records book and once even &lt;em&gt;Encyclopædia Britannica&lt;/em&gt; (EB were restricted access for primary kids, big 20-30 volumes they were). I still like those but not on those scales. I was way more curious to know the world back then, which also gave rise to another of my passion/hobby, quizzing. Those were the days of non-fiction.&lt;/p&gt;
&lt;p&gt;Through my knowledge seeking adventures, I knew that the novel &lt;em&gt;Malgudi Days&lt;/em&gt; was written by R K Narayan (brother of famous cartoonist R K Laxman, man behind &lt;em&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/The_Common_Man&#34;&gt;The Common Man&lt;/a&gt;&lt;/em&gt; cartoon character). It so happened out of nowhere, I decided to order &lt;em&gt;Malgudi Days&lt;/em&gt; from an online store. It is a collection of short stories based in the fictional south Indian town of &lt;a href=&#34;https://en.wikipedia.org/wiki/Malgudi&#34;&gt;Malgudi&lt;/a&gt;. The book even had &lt;a href=&#34;https://en.wikipedia.org/wiki/Doordarshan&#34;&gt;Doordarshan&lt;/a&gt; series made on it back in the 90s (maybe this was one of the reason for my sudden interest in the book back then). I loved the book, too good it was. The feeling of being with the author as he described the day-to-day happening in lives of Malgudi folks. Drama, comedy, crime with a proper Indian setting. The characters, places, geography remained in place between stories, just the protagonist and storyline changed. It got me hooked and I started ordering R K Narayan novels monthly. Those were cheap, usually costing between Rs 75-120 (Indian Ruppee). &lt;em&gt;The Financial Expert, Bachelor of Arts, Swami and Friends, The Painter of Signs, The Bachelor of Arts, The English Teacher, Waiting for the Mahatma&lt;/em&gt; etc. I binged all the R K Narayan novels (except &lt;em&gt;The Guide&lt;/em&gt;, which wasn&amp;rsquo;t of my taste and &lt;em&gt;A Horse and Two Goats&lt;/em&gt;, which I discovered while writing this). Every subsequent novel was like an expanded version of stories from Malgudi Days. &lt;em&gt;The Financial Expert&lt;/em&gt; was about a financial consultant&amp;rsquo; life, &lt;em&gt;Swami and Friends&lt;/em&gt; was about Swami and his daily happenings etc. After finishing the whole fiction series, I moved and engaged in the habit of regular reading. Discovered and read many great authors like Khushwant Singh, Paulo Coelho, Jhumpa Lahiri and others. Got somewhat an idea that I loved stories set in common Indian families, lives of Indian diaspora abroad (Jhumpa Lahiri&amp;rsquo;s forte) mostly circa 1900-2000s, .&lt;/p&gt;
&lt;p&gt;It’s been like 8-9 years since then. I still love books and get excited seeing new ones but have lost touch with regular reading. &lt;em&gt;The Financial Expert&lt;/em&gt; brought back the nostalgia. My present read, &lt;em&gt;दीवार में एक खिड़की रहती थी&lt;/em&gt;  &lt;em&gt;(A Window in the Wall)&lt;/em&gt; by Vinod Kumar Shukla was started way back in October 2020. Have a goal to complete it by this month (hopefully) and move to the classic &lt;em&gt;Pride and Prejudice&lt;/em&gt; by Jane Austen (which too I started some months back but never completed).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.S. - Read Malgudi Days on OpenLibrary &lt;a href=&#34;https://openlibrary.org/works/OL20718447W/Malgudi_Days?edition=malgudidays0000nara&#34;&gt;here&lt;/a&gt; and The Financial Expert &lt;a href=&#34;https://openlibrary.org/works/OL1057181W/The_financial_expert?edition=financialexperta0000nara_y6z3&#34;&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Quick-wiki: Jitsi Meet</title>
      <link>https://blog.sahilister.in/2021/02/quick-wiki-jitsi-meet/</link>
      <pubDate>Thu, 04 Feb 2021 09:16:57 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/02/quick-wiki-jitsi-meet/</guid>
      <description>&lt;p&gt;&lt;em&gt;Last update: 09/2021, Jitsi Meet v2.0.6293 from upstream repos.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is a &lt;a href=&#34;https://www.urbandictionary.com/define.php?term=quick-wiki&#34;&gt;quick-wiki&lt;/a&gt; for quick reference for my occasional Jitsi Meet installations.&lt;/p&gt;
&lt;h2 id=&#34;table-of-content&#34;&gt;Table of Content&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#limit-ram-usage&#34;&gt;Limit RAM usage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#restart-setup&#34;&gt;Restart setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#check-installation-version&#34;&gt;Check installation version&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#log-files&#34;&gt;Log files&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#interface-changes&#34;&gt;Interface changes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#configuration&#34;&gt;Configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#rtmp-stream-and-record-setup&#34;&gt;RTMP stream and record setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#glossary&#34;&gt;Glossary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#quick-links&#34;&gt;Quick links&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;limit-ram-usage&#34;&gt;Limit RAM usage&lt;/h3&gt;
&lt;p&gt;Both jicofo and jvb are configured to take by default up to 3 GB of RAM each. On a machine with running both by default almost ~8 GB RAM is required. Memory hog keeps on building due to not so aggressive garbage collection, but it can be instructed to use less &lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;For jvb, add the following line in &lt;code&gt;/etc/jitsi/videobridge/config&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;VIDEOBRIDGE_MAX_MEMORY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;320m
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For jicofo, add the following line in &lt;code&gt;/etc/jitsi/jicofo/config&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$JICOFO_MAX_MEMORY&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;JICOFO_MAX_MEMORY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;320m&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Change the memory size as you want and do a &lt;a href=&#34;#restart-setup&#34;&gt;restart&lt;/a&gt; for applying new changed configs.&lt;/p&gt;
&lt;p&gt;I host a personal instance for friends and family on 1 GB EC2, 320 MB each for jvb and jicofo is fine for 5-6 folks with videos on.&lt;/p&gt;
&lt;h3 id=&#34;restart-setup&#34;&gt;Restart setup&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo /etc/init.d/prosody restart 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo /etc/init.d/jicofo restart
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo /etc/init.d/jitsi-videobridge2 restart
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;or a copy-paste one liner for above:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo /etc/init.d/prosody restart &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo /etc/init.d/jicofo restart &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo /etc/init.d/jitsi-videobridge2 restart
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;check-installation-version&#34;&gt;Check installation version&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dpkg -l &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep jitsi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Returns versions of all the components installed with description.&lt;/p&gt;
&lt;h3 id=&#34;log-files&#34;&gt;Log files&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;jvb&lt;/strong&gt; - &lt;code&gt;/var/log/jitsi/jvb.log&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;jicofo&lt;/strong&gt; - &lt;code&gt;/var/log/jitsi/jicofo.log&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;prosody&lt;/strong&gt; - &lt;code&gt;/var/log/prosody/prosody.log&lt;/code&gt; and &lt;code&gt;/var/log/prosody/prosody.err&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;fail2ban&lt;/strong&gt; - &lt;code&gt;/var/log/fail2ban.log&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;unattended upgrades&lt;/strong&gt; - &lt;code&gt;/var/log/unattended-upgrades/unattended-upgrades.log&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;interface-changes&#34;&gt;Interface changes&lt;/h3&gt;
&lt;p&gt;The UI can be customized by making changes in &lt;code&gt;/usr/share/jitsi-meet/interface_config.js&lt;/code&gt; file.&lt;/p&gt;
&lt;p&gt;Following are some handy variables to change:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;APP_NAME&lt;/code&gt; - change title.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DEFAULT_LOCAL_DISPLAY_NAME&lt;/code&gt; - changes default name for self (before name is set, default is &amp;ldquo;me&amp;rdquo;).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DEFAULT_LOGO_URL&lt;/code&gt; - to change away from default Jitsi logo in meeting. Add the logo in &lt;code&gt;/usr/share/jitsi-meet/images/&lt;/code&gt; directory.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DEFAULT_REMOTE_DISPLAY_NAME&lt;/code&gt; - change default name for everyone else (default is &amp;ldquo;Fellow Jitster&amp;rdquo;).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DEFAULT_WELCOME_PAGE_LOGO_URL&lt;/code&gt; - main page logo.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DISABLE_JOIN_LEAVE_NOTIFICATIONS&lt;/code&gt; - set it to true to disable notification pop ups on every join/leave.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;JITSI_WATERMARK_LINK&lt;/code&gt; - change where should the logo redirect on click, in meeting screen.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Steps to change header (main) text on homepage:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add following lines in  &lt;code&gt;body.html&lt;/code&gt; file (empty on vanilla install) found in /usr/share/jitsi-meet/body.html:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;css/custom.css&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;(optional) if wanting to add custom JS, also add following line in &lt;code&gt;body.html&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;scripts/custom.js&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;script&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Create a &lt;code&gt;custom.css&lt;/code&gt; file in &lt;code&gt;/usr/share/jitsi-meet/css/&lt;/code&gt; directory and add the following style:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;welcome&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;header&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;header-text-title&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;display&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;none&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;welcome&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;header&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;header-container&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nd&#34;&gt;before&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;FSCI Jitsi Meet&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;color&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;#fff&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;font-size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;2.5&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;rem&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;font-weight&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;500&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;line-height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1.18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;text-align&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;center&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;(optional) for custom script, create a file &lt;code&gt;custom.js&lt;/code&gt; in &lt;code&gt;/usr/share/jitsi-meet/scripts&lt;/code&gt; directory and add JS into it.&lt;/p&gt;
&lt;p&gt;Interface changes don&amp;rsquo;t require a server or jitsi-* reload  to take effect. Every reload fetches the latest version.&lt;/p&gt;
&lt;h3 id=&#34;configuration&#34;&gt;Configuration&lt;/h3&gt;
&lt;p&gt;Configuration file ie &lt;code&gt;config.js&lt;/code&gt; is being used as central place for making all changes. Interface file is being deprecated by upstream in coming releases.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;config.js&lt;/code&gt; can be found as &lt;code&gt;/etc/jitsi/meet/&amp;lt;DOMAIN&amp;gt;-config.js&lt;/code&gt;. It is publicly viewable by default in vanilla installation at &lt;code&gt;https://&amp;lt;DOMAIN&amp;gt;/config.js&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Quite a bit of configurations can be changed through it. Following are some handy changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Set &lt;code&gt;prejoinPageEnabled&lt;/code&gt; to true. It shows an intermediate page before joining, where the user can configure their devices (camera/microphone/background/name).&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;startAudioMuted&lt;/code&gt; to maybe &lt;code&gt;10&lt;/code&gt;. Every participant after the defined value will enter with audio muted automatically.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;startVideoMuted&lt;/code&gt; to maybe &lt;code&gt;10&lt;/code&gt;. Every participant after the defined value will enter with video off automatically.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;fileRecordingsEnabled&lt;/code&gt; to false to disable showing recording option in menu.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;liveStreamingEnabled&lt;/code&gt; to false to disable showing livestreaming option in menu.&lt;/li&gt;
&lt;li&gt;Add a notice/message to users like maintenance timings etc by adding text to &lt;code&gt;noticeMessage&lt;/code&gt; variable. Displays as a text on top in meetings.&lt;/li&gt;
&lt;li&gt;For peer to peer connections (two participants) meetings, STUN server is used (through &lt;a href=&#34;https://github.com/coturn/coturn&#34;&gt;coturn&lt;/a&gt;). By default upstream&amp;rsquo;s public STUN server at &lt;code&gt;stun:meet-jit-si-turnrelay.jitsi.net:443&lt;/code&gt;, used. To use local (and reduce load for upstream), enable/uncomment your server&amp;rsquo;s STUN server URL in line preceding to Jitsi&amp;rsquo;s STUN server URL in &lt;code&gt;stunServers&lt;/code&gt; array. To disable upstream&amp;rsquo;s STUN server completely, comment it out.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Note: Most of the options are commented, so need to be uncommented to enable.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;rtmp-stream-and-record-setup&#34;&gt;RTMP stream and record setup&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note&lt;/strong&gt; - For self-hosted Jitsi Meet instances, additional Jibri setup is required. &lt;a href=&#34;https://meet.jit.si/&#34;&gt;meet.jit.si&lt;/a&gt; has a Jibri instance running, so that can be used.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This setup allows you to record stream on server (without default Dropbox) as well as stream meeting (without default YouTube). Steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Setup a RTMP server (see &lt;a href=&#34;https://obsproject.com/forum/resources/how-to-set-up-your-own-private-rtmp-server-using-nginx.50/&#34;&gt;this link&lt;/a&gt; for a basic RTMP server setup).&lt;/li&gt;
&lt;li&gt;From Jitsi click &amp;ldquo;Start a live stream&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Put URL in following format&lt;code&gt;rtmp://&amp;lt;server-ip-or-domain&amp;gt;/live/STREAM-KEY&lt;/code&gt; in &amp;ldquo;Live stream key&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;The same URL would be used for viewing the stream.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;glossary&#34;&gt;Glossary&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Jitsi Meet&lt;/strong&gt; - WebRTC JavaScript application that uses Jitsi Videobridge for video conferences.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Prosody&lt;/strong&gt; - XMPP server. Jitsi uses XMPP for signalling.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Jitsi Conference Focus (jicofo)&lt;/strong&gt; - server side focus component that manages media sessions between each participant and the videobridge.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Jitsi Videobridge (jvb)&lt;/strong&gt; -  video router.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Jitsi Gateway to SIP (Jigasi)&lt;/strong&gt; - server-side application that allows regular SIP clients to join Jitsi Meet calls.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Jibri&lt;/strong&gt; - broadcasting and recording. It works by launching a headless Chrome instance rendered in a virtual framebuffer and capturing and encoding the output with ffmpeg.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;STUN (Session Traversal Utilites for NAT)&lt;/strong&gt; - Standard set of methods for traversal of Network Address Translator (NAT) gateways in applications of realtime voice, video, messaging and other interactive communications. Public IP is discovered via STUN server and type of NAT, usually during session start. Doesn&amp;rsquo;t provide a complete solution.
Originally was &amp;ldquo;Simple Traversal of User Datagram Protocol (UDP) through Network Address Translators&amp;rdquo; but updated in &lt;a href=&#34;https://tools.ietf.org/html/rfc5389&#34;&gt;RFC 5389&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;TURN (Traversal Using Relay NAT)&lt;/strong&gt; - The TURN Server is a VoIP media traffic NAT traversal server and gateway. It can be used as a general-purpose network traffic server and gateway, too. Resource intensive so used as last resort in Jitsi.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;quick-links&#34;&gt;Quick links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart&#34;&gt;Self hosting guide for Debian/Ubuntu server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-manual#network-description&#34;&gt;Network diagram for setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://jitsi.github.io/handbook/docs/faq#how-to-limit-the-number-of-participants&#34;&gt;Limit the number of participants&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://jitsi.github.io/handbook/docs/devops-guide/secure-domain&#34;&gt;Enable authentication for new meeting creation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://community.jitsi.org/t/cpu-and-ram-usage-constantly-increases-on-an-idle-jitsi-server/78210/4&#34;&gt;https://community.jitsi.org/t/cpu-and-ram-usage-constantly-increases-on-an-idle-jitsi-server/78210/4&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Experience Volunteering for MiniDebConf India 2021</title>
      <link>https://blog.sahilister.in/2021/01/experience-volunteering-for-minidebconf-india-2021/</link>
      <pubDate>Thu, 28 Jan 2021 20:05:34 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/01/experience-volunteering-for-minidebconf-india-2021/</guid>
      <description>&lt;p&gt;This past weekend we had the &lt;a href=&#34;https://in2021.mini.debconf.org/&#34;&gt;MiniDebConf India 2021&lt;/a&gt; and I was fortunate enough to be in the orga(nizing) team. It did turn out to be a one big event in terms of numbers too.&lt;/p&gt;
&lt;p&gt;Some quick stats:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2 days of online conference with 2 parallel tracks, Buzz and Rex.&lt;/li&gt;
&lt;li&gt;6 languages - English, Hindi, Malayalam, Telugu, Kannada and Marathi.&lt;/li&gt;
&lt;li&gt;48+ events in form of talks, BoFs, workshops and lightning talks.&lt;/li&gt;
&lt;li&gt;100+ speakers.&lt;/li&gt;
&lt;li&gt;And probably the biggest MiniDebConf in terms of events \o/.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Reminiscing how things started almost 50 days ago in December, we started thinking we’re already late with starting the preparations. Frankly speaking, I had doubts if we be able to pull that of but as being part of some events have taught me to just go with the flow and things usually fall in place somehow. Initially the teams were defined, and I somehow landed in the publicity team. Also, as I had previous experience with &lt;a href=&#34;https://blog.sahilister.in/2020/09/experience-attending-debconf20/&#34;&gt;volunteering in DebConf20&lt;/a&gt; and MDCO2 Gaming Edition with the video team, I also added my name to the video team.&lt;/p&gt;
&lt;p&gt;The publicity team started sending out Call for Proposal (CfP) on 10th Dec, with last submission date being 10th Jan. It was publicized in the mailing lists, &lt;a href=&#34;https://poddery.com/people/0d4badb3092b7c5c&#34;&gt;Diaspora&lt;/a&gt; (the original MiniDebConf India social media platform, which in someway saved &lt;a href=&#34;https://poddery.com/&#34;&gt;poddery.com&lt;/a&gt; back in the days), &lt;a href=&#34;https://pleroma.debian.social/debianindia&#34;&gt;Fediverse&lt;/a&gt; (@debianindia on Debian&amp;rsquo;s pleroma instance), IRC and Telegram channels. Fast forward almost a month, the CfP end date was nearing, and we had less than 10 submission and that was a worrying thing. The orga team was being told to make submissions in their languages so that we could atleast have a respectable number. On the submission deadline day, we had a meeting discussing the situation at about 8:00 pm. We had about 15-18 submissions at the start (a fairly okay-ish number, had 20 in mind initially). By the time the meeting ended we had about 24-25 submissions/ideas (the orga team went in to put a bunch of additional events, including one of mine &amp;ldquo;Introduction to Debian in Hindi&amp;rdquo;). And then the floodgates opened. The folks at &lt;a href=&#34;https://www.fsmi.in/#/&#34;&gt;Free Software Movement of India&lt;/a&gt; (FSMI) and &lt;a href=&#34;https://swecha.org/&#34;&gt;Swecha&lt;/a&gt; started submitting talks and events. In the span of 3-4 hours we went from 25 submissions to 50+ proposals. It came this suddenly that, by 12:30 am, Anupa was asking the website team to &amp;ldquo;please shut down the submission link&amp;rdquo;. The submissions kept pouring in until the very end. Now a mixed feeling started arising. Happy on the part that we got these many proposals and tensed that we now have to tackle these many of them. After some discussion and consultations, the content team approved most of the proposals. After another round of discussions, the idea of having two parallel tracks was suggested which was duly confirmed with the #debconf-video team. It was probably the first time that any MiniDebConf had parallel tracks. The #debconf-video team came up the two track names, namely Buzz and Rex, probably from the first and second Debian named &lt;a href=&#34;https://www.debian.org/doc/manuals/project-history/detailed.en.html#rel-1&#34;&gt;releases&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now enough video volunteers (talkmeister and talk director) were to be trained, the speakers were also to be given the setup go through, recordings needed to be reviewed and uploaded on the server (speakers were encouraged to submit recordings of events prior so as to avoid any Internet related issues, QnA were live through Jitsi). Being in the video team, I got the responsibility and access to the video team server to review and upload recordings (as received from speakers). The original deadline for submission was 17th January, but we only received 10 submissions by then (me too didn&amp;rsquo;t submit :D but we were expecting a two-day delay due to original delay in sending out confirmation mails).&lt;/p&gt;
&lt;p&gt;Then came the week of the conference. The video training was conducted, speakers introduction was handled and recordings were being uploaded daily as submissions poured in. Now I didn&amp;rsquo;t mention that I had three events under my belt; A talk on &lt;a href=&#34;https://in2021.mini.debconf.org/talks/32-introduction-to-debian-hindi/&#34;&gt;&amp;ldquo;Introduction to Debian in Hindi&amp;rdquo;&lt;/a&gt;, a BoF titled &lt;a href=&#34;https://in2021.mini.debconf.org/talks/48-bof-digital-privacy-in-indian-context-and-some-free-software-tools-and-services-to-the-rescue-hindi/&#34;&gt;&amp;ldquo;Digital privacy in Indian context and some Free software tools and services to the rescue in Hindi&amp;rdquo;&lt;/a&gt; and the &lt;a href=&#34;https://in2021.mini.debconf.org/talks/55-closing-session/&#34;&gt;closing ceremony&lt;/a&gt;. These need their individual sections so will talk about them in a minute, after describing the whole conference.&lt;/p&gt;
&lt;p&gt;The big day came. The start was at 11:00 am, and we were already short on video volunteers, but the team was ready to jump in wherever needed. On the recordings submission/upload front, we had about 15 recordings still to come and upload on the start of day one. And then my electricity went out. I literally couldn&amp;rsquo;t do anything for the next hour. At about 12:00 pm, the electricity came, and I jumped back in action with the team. Every now and then between volunteering, a new recording submission would arrive, and I would drop, review and upload the submission. Then came the real comical/tense situation. Two talks scheduled for the same afternoon time slot (in different tracks) were still to recieve their recordings. Both speakers started uploading on their end at 30 minutes from the time slot. Received first talk 18 minutes before going live, which was uploaded without any review (which came back to haunt). Now came the second talk, which was received that via Telegram at about 5 minutes from the time slot so asked the talkmeister to delay the talk by 5 minutes. As soon as I started figuring out how to get the recording from Telegram to desktop to be uploaded on server, the first talk folks (which was already live on stream) raised an alarm that the recording wasn&amp;rsquo;t the one for the talk. I checked and saw that the wrong video link was submitted which eventually went on live conference stream. I switched back, got the real link from the submitter and uploaded that quickly. That talk went ahead and started again with a 5 minutes delay. As for the second talk, we decided to postpone it latter in the day (which it eventually did, without any issue). The team had enough committed folks who took care of everything. The second day was relatively calm as compared to day one. Issues with the stream, volunteers and everything else was almost sorted by the end of day one.&lt;/p&gt;
&lt;p&gt;You can view the talk recordings on &lt;a href=&#34;https://peertube.debian.social/video-channels/mdcoin2021/videos?a-state=42&#34;&gt;Peertube&lt;/a&gt; or on Debian&amp;rsquo;s &lt;a href=&#34;https://meetings-archive.debian.net/pub/debian-meetings/2021/MiniDebConf-India/&#34;&gt;video archive&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now coming back to my talks and BoF. Here&amp;rsquo;s a list and my takes:&lt;/p&gt;
&lt;h4 id=&#34;introduction-to-debian-in-hindi&#34;&gt;Introduction to Debian in Hindi&lt;/h4&gt;
&lt;p&gt;This was somewhat an impromptu suggestion. Rajudev was doing this talk in Marathi, so he floated this talk idea for Hindi and folks naturally turned to me for it (due to me knowing Hindi). I agreed as Rajudev gave me some good pointers to talk about plus it was only going to be a short talk of 15-20 minutes. The recording kept getting delayed due to my non-completion of the talk slides, which was probably the hardest part of all. Pirate Praveen helped by sharing his presentation on the same topic. Eventually I recorded it in one go on the 19th and uploaded (and submitted it to myself to be uploaded on the server by myself ;)) on the same day without any cuts.&lt;/p&gt;
&lt;p&gt;Links: &lt;a href=&#34;https://in2021.mini.debconf.org/talks/32-introduction-to-debian-hindi/&#34;&gt;Talk page&lt;/a&gt;,
&lt;a href=&#34;https://peertube.debian.social/videos/watch/5a4caf3c-94a4-46ad-81d1-82bc7ea60a41&#34;&gt;Peertube&lt;/a&gt; and Debian &lt;a href=&#34;https://meetings-archive.debian.net/pub/debian-meetings/2021/MiniDebConf-India/32-introduction-to-debian-hindi.webm&#34;&gt;video archive&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;bof-digital-privacy-in-indian-context-and-some-free-software-tools-and-services-to-the-rescue-in-hindi&#34;&gt;BoF: Digital privacy in Indian context and some Free software tools and services to the rescue in Hindi&lt;/h4&gt;
&lt;p&gt;This was probably the most prepared amongst all three events I presented partly because there were more folks involved. Initially there were no proposal submissions in Hindi, so I and Ravi came up with the idea to discuss this topic on camera, as we usually do over some of our Jitsi calls. The initial set of people we expected for the BoF were busy, so initially we only had me and Ravi for it. As time passed; Rojin, Riya joined and on the day of the conference we asked Akshay (who was also director in our BoF) to join in the discussion. The discussion was good, we had prepared some pointers to discuss but most of them were skipped due to time constraints. Less talk on free software was done due to us focusing more on the privacy side of things but overall it a nice experience.&lt;/p&gt;
&lt;p&gt;Links: &lt;a href=&#34;https://in2021.mini.debconf.org/talks/48-bof-digital-privacy-in-indian-context-and-some-free-software-tools-and-services-to-the-rescue-hindi/&#34;&gt;Talk page&lt;/a&gt;,
&lt;a href=&#34;https://peertube.debian.social/videos/watch/417bd62c-cce1-494a-b96c-b0e39741cb09&#34;&gt;Peertube&lt;/a&gt; and Debian &lt;a href=&#34;http://meetings-archive.debian.net/pub/debian-meetings/2021/MiniDebConf-India/48-bof-digital-privacy-in-indian-context-and-some-free-software-tools-and-services-to-the-rescue-hindi.webm&#34;&gt;video archive&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;closing-ceremony&#34;&gt;Closing Ceremony&lt;/h4&gt;
&lt;p&gt;In the final meeting, on CfP close date, we were discussing about opening and closing ceremony. I believe it was Pirate Praveen who said that Anupa should take one and me the other or something like that. I took the closing so Anupa took the opening ceremony (for which she prepared a collage of welcome videos and a nice speech). Honestly, I didn&amp;rsquo;t have any grand ideas about it and wanted to give some views/experiences and to introduce the team. We were already in an upbeat mood when the closing neared. I went in and started sharing my experience and whatever came to my mind at the moment (did spoke quite a while back then) and eventually opened the Jitsi call for group photograph. You can see the photo on &lt;a href=&#34;https://pleroma.debian.social/media/cda0f6e54d4d3fcd2afa4503e6ac7c057c557b25f7d5224f6d97d204e3a4b7e2.png&#34;&gt;pleroma&lt;/a&gt;, on &lt;a href=&#34;https://wiki.debian.org/DebianIndia/MiniDebConfOnlineIndia2021?action=AttachFile&amp;amp;do=get&amp;amp;target=mdcinew.png&#34;&gt;Debian wiki&lt;/a&gt; or on &lt;a href=&#34;https://web.archive.org/web/20210210124409if_/https://pleroma.debian.social/media/cda0f6e54d4d3fcd2afa4503e6ac7c057c557b25f7d5224f6d97d204e3a4b7e2.png&#34;&gt;Internet archive&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Links: &lt;a href=&#34;https://in2021.mini.debconf.org/talks/55-closing-session/&#34;&gt;Talk page&lt;/a&gt;,
&lt;a href=&#34;https://peertube.debian.social/videos/watch/c0064cae-1ec6-47ba-80dc-9ff198cbc32e&#34;&gt;Peertube&lt;/a&gt; and Debian &lt;a href=&#34;https://meetings-archive.debian.net/pub/debian-meetings/2021/MiniDebConf-India/55-closing-session.webm&#34;&gt;video archive&lt;/a&gt;    (this I can recommend watching, somewhat a video version of this post).&lt;/p&gt;
&lt;p&gt;Overall it was an amazing experience, thanks to everyone involved and the community around Debian and Debian India. A special thanks to Sruthi for bringing MDC to India and Anupa for making the whole event possible by coordinating everything.&lt;/p&gt;
&lt;p&gt;So that&amp;rsquo;s an end for this one, see you in another Debian or Free Software event o/&lt;/p&gt;
&lt;p&gt;And and a special shoutout to Abbyck ;)&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: This was probably one of the long ones among my blogs. It took almost 4 days to write and edit. Too much time it took :sigh:&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PSS: As video team member, also recieved talk recording shared via GitHub repositery, Telegram direct messeges amongst other places.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Beginners Guide to Host Static Content on a Server</title>
      <link>https://blog.sahilister.in/2021/01/beginners-guide-to-host-static-content-on-a-server/</link>
      <pubDate>Fri, 22 Jan 2021 10:17:21 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2021/01/beginners-guide-to-host-static-content-on-a-server/</guid>
      <description>&lt;p&gt;Recently, I took a session on hosting static content on a web server for &lt;a href=&#34;https://camp.fsf.org.in/&#34;&gt;Free Software Camp 2020&lt;/a&gt;. This is somewhat a written write-up for that.&lt;/p&gt;
&lt;h3 id=&#34;basic-requirements&#34;&gt;Basic Requirements&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;A server with ssh access.&lt;/li&gt;
&lt;li&gt;A domain (an IP would also work, but we&amp;rsquo;ll also add TLS certificate to it so recommended).&lt;/li&gt;
&lt;li&gt;A Debian based system.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;table-of-content&#34;&gt;Table of Content&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;#firing-up-a-virtual-private-server&#34;&gt;Firing up a virtual private server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#adding-dns-entry&#34;&gt;Adding DNS entry&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#adding-content&#34;&gt;Adding content&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#writing-nginx-config&#34;&gt;Writing nginx config&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#tls-certificate-or-making-the-site-https&#34;&gt;TLS certificate or making the site HTTPS&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;firing-up-a-virtual-private-server&#34;&gt;Firing up a virtual private server&lt;/h3&gt;
&lt;p&gt;As every provider has a different interface to configure and launch an instance, I&amp;rsquo;m mentioning the generic steps/requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Select a operating system for the instance. I&amp;rsquo;m going with Debian 10 Buster now. Steps would remain almost similar for any Debian based distribution with some minor packages change here and there for other distribution families.&lt;/li&gt;
&lt;li&gt;Select instance, storage and specs type according to will.&lt;/li&gt;
&lt;li&gt;Add security group rules. A security group is a set of firewall rules that control the traffic for your instance. Open/add rules for the following ports for ingress traffic (incoming traffic):
&lt;ul&gt;
&lt;li&gt;Port 22 (SSH): this port is required for SSHing into the instance for remote access. As an additional measure, some providers also allow limiting access to specific IP or specific IP range also. For security reasons try limiting access to port 22 to your IP only (if you have a static one).&lt;/li&gt;
&lt;li&gt;Port 80 (HTTP): the usual port for HTTP traffic.&lt;/li&gt;
&lt;li&gt;Port 443 (HTTPS): for HTTPS traffic.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Note: Egress traffic (outgoing traffic) is usually open on all ports.&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Launch and run a system update after SSHing into the server/instance.&lt;/li&gt;
&lt;li&gt;Keep the IP address of the instance handy.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;adding-dns-entry&#34;&gt;Adding DNS entry&lt;/h3&gt;
&lt;p&gt;Now some addition in you&amp;rsquo;re DNS records:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To map a URL/domain name to  an IP, we add an A record (for IPv4 addresses) or an AAAA (for IPv6 addresses). You can read more about A record &lt;em&gt;&lt;a href=&#34;https://support.dnsimple.com/articles/a-record/&#34;&gt;here&lt;/a&gt;&lt;/em&gt; and AAAA &lt;em&gt;&lt;a href=&#34;https://support.dnsimple.com/articles/aaaa-record/&#34;&gt;here&lt;/a&gt;&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Add TTL, name (URL/domain name) and the IP address of the instance. TTL (Time-to-live) in DNS records context is a numerical value that tells how long a DNS cache should be used/served before reaching out to  the authoritative DNS server (higher up in DNS server the hierarchy) for a fresh copy of  the record. Let&amp;rsquo;s assume in our case the TTL value we put in is &lt;em&gt;1800s&lt;/em&gt;, domain name is &lt;em&gt;&lt;a href=&#34;http://fscamp.sahilister.in&#34;&gt;fscamp.sahilister.in&lt;/a&gt;&lt;/em&gt; and IP address is &lt;em&gt;52.66.87.29&lt;/em&gt; . See a visual representation of adding A record &lt;em&gt;&lt;a href=&#34;https://support.dnsimple.com/articles/manage-a-record/&#34;&gt;here&lt;/a&gt;&lt;/em&gt; and AAAA &lt;em&gt;&lt;a href=&#34;https://support.dnsimple.com/articles/manage-aaaa-record/&#34;&gt;here&lt;/a&gt;&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;The records will take some time to propagate to the global DNS chain. You can check by typing&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ping &amp;lt;domain-name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you see the corresponding IP address in response, it has propagated successfully.&lt;/p&gt;
&lt;h3 id=&#34;adding-content&#34;&gt;Adding content&lt;/h3&gt;
&lt;p&gt;Now we have to add the content we want to serve through the server.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Make a sub-directory in &lt;code&gt;/var/www/&lt;/code&gt; directory. Why this particular directory you may ask, so apparently this changes according to needs and reasons but for simplicity’ sake we&amp;rsquo;ll use it. You can read Stack Overflow thread about it &lt;em&gt;&lt;a href=&#34;https://unix.stackexchange.com/questions/47436/why-is-the-root-directory-on-a-web-server-put-by-default-in-var-www&#34;&gt;here&lt;/a&gt;&lt;/em&gt;.
Let&amp;rsquo;s assume our folder name is fscamp.&lt;/li&gt;
&lt;li&gt;Add a &lt;code&gt;index.html&lt;/code&gt; file or other static content you want in the folder.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;writing-nginx-config&#34;&gt;Writing nginx config&lt;/h3&gt;
&lt;p&gt;We&amp;rsquo;re going to use nginx. Nginx is a server software (to handle content requests) that can also be used as &lt;a href=&#34;https://en.wikipedia.org/wiki/Reverse_proxy&#34;&gt;reverse proxy&lt;/a&gt;, &lt;a href=&#34;https://en.wikipedia.org/wiki/Load_balancing_(computing)&#34;&gt;load balancer&lt;/a&gt; and a bunch of &lt;a href=&#34;https://www.nginx.com/resources/wiki/&#34;&gt;other stuff&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To get it, simply do&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Nginx configs (configurations) usually reside in &lt;code&gt;/etc/nginx/&lt;/code&gt; directory. We&amp;rsquo;ll focus on &lt;code&gt;sites-available&lt;/code&gt; and &lt;code&gt;sites-enabled&lt;/code&gt; only for now. &lt;code&gt;sites-available&lt;/code&gt; directory hosts our configs and &lt;code&gt;sites-enabled&lt;/code&gt; usually houses a link in &lt;code&gt;sites-enabled&lt;/code&gt;, also nginx reads from it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Note: &lt;code&gt;sites-available&lt;/code&gt; and &lt;code&gt;sites-enabled&lt;/code&gt; are Debian family specific directories. Others use/recommend &lt;code&gt;conf.d&lt;/code&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In &lt;code&gt;sites-available&lt;/code&gt;, create a file, in our case &lt;code&gt;fscamp&lt;/code&gt; which would house a basic nginx config like this:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;server &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;# ports nginx should listen to&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	listen 80&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	listen &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;::&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;:80&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;# name and location of our site content&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	root /var/www/fscamp&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;	
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;# defining index file in root&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	index index.html&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;# defining server name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;# you can add wwww.fscamp.sahilister.in in addition to point and serve same content&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	server_name fscamp.sahilister.in&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;# defining a 404, when content not found&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	location / &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		try_files &lt;span class=&#34;nv&#34;&gt;$uri&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$uri&lt;/span&gt;/ &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;404&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Now it&amp;rsquo;s time to link this file to &lt;code&gt;sites-enabled&lt;/code&gt;. To do so type:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ln -s /etc/nginx/sites-available/&amp;lt;file&amp;gt; /etc/nginx/sites-enabled/&amp;lt;file&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# In our case, it would look like this&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ln -s /etc/nginx/sites-available/fscamp /etc/nginx/sites-enabled/fscamp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Now do a nginx restart:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl restart nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;If everything went according to plan, your content would be available on you&amp;rsquo;re domain over HTTP.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tls-certificate-or-making-the-site-https&#34;&gt;TLS certificate or making the site HTTPS&lt;/h3&gt;
&lt;p&gt;Now to get a TLS certificate and encrypt the connection between a user and our server, we&amp;rsquo;ll use &lt;a href=&#34;https://letsencrypt.org/&#34;&gt;Let&amp;rsquo;s Encrypt&lt;/a&gt; and &lt;a href=&#34;https://certbot.eff.org/&#34;&gt;certbot&lt;/a&gt;. It does the heavy lifting, adds additional required nginx configs and get us 90 days TLS certificate (which has to be renewed after that).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Install the certbot package for nginx by doing:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install python3-certbot-nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Run &lt;code&gt;sudo certbot&lt;/code&gt; and follow along. Certbot will also handle adding required changes to nginx configs.&lt;/li&gt;
&lt;li&gt;Now your sites has a valid TLS certificate and can be viewed over HTTPS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&amp;rsquo;s your basic website on your server.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>What&#39;s in the Name, Reimagined Doodle, sahilister</title>
      <link>https://blog.sahilister.in/2020/12/whats-in-the-name-reimagined-doodle-sahilister/</link>
      <pubDate>Sun, 27 Dec 2020 13:13:23 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/12/whats-in-the-name-reimagined-doodle-sahilister/</guid>
      <description>&lt;p&gt;&amp;ldquo;Reimagined Doodle&amp;rdquo;, the name of my blog and &amp;ldquo;sahilister&amp;rdquo;, my internet nick/handle/alias/domain name are two names I&amp;rsquo;m real proud of. Folks do occasionally ask me how these names came to be (specifically the nick, fewer folks even read my blog let alone notice its name). It isn&amp;rsquo;t an interesting story per se but is nice having it on my blog itself. Maybe someday I would simply point someone directly to the link rather than explaining it myself.&lt;/p&gt;
&lt;p&gt;So the nick &amp;ldquo;sahilister&amp;rdquo;. Before having a specific internet nick, I usually used to have my real name almost everywhere, though I had to use a combination of symbols, numbers with it because almost everytime the name &amp;ldquo;Sahil&amp;rdquo; would be taken. There wasn&amp;rsquo;t any consistent pattern and I choose what was available. Then came the trend of having an Instagram profile. I went ahead creating one and when it asked me for a username, I started thinking about some without a number or symbol. In a flash &amp;ldquo;sahilister&amp;rdquo; struck from my name &amp;ldquo;Sahil&amp;rdquo;. This seemed perfect. One word; long, homogenous and different in itself (had real proud moments seeing that nick on my profile). Now that I have left Instagram, the nick has stuck. I have a gamer nick from my mobile gaming era. I don&amp;rsquo;t know from where I got &amp;ldquo;mukebaaj&amp;rdquo; and started using that as my gaming alias everywhere. &amp;ldquo;mukebaaj&amp;rdquo; being a unique name was almost always available in every game. I still use that. It looks cool and aggressive, typical gamer nick ;) .&lt;/p&gt;
&lt;p&gt;Now coming to &amp;ldquo;Reimagined Doodle&amp;rdquo;. When I got my domain and wanted to start a blog, I didn&amp;rsquo;t simply want to name it as &amp;ldquo;blog&amp;rdquo; or something. When I got about creating the GitHub repo for it (initially it was hosted on GitHub pages, GitLab pages now), the repo input field on new creation typically suggests a combination of words for the name. The suggestion I got was, &amp;ldquo;reimagined doodle&amp;rdquo;. I always like to doodle while I was a schoolkid and loved this word, so without any further thinking went ahead naming the repo as &amp;ldquo;reimagined doodle&amp;rdquo; and hence the blog got it name.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: Another long overdue post. Want to have this as the second last post of the year by having a year in review post next. Let&amp;rsquo;s see if I could pull that off before 31st December.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>The Excitement Cycle</title>
      <link>https://blog.sahilister.in/2020/12/the-excitement-cycle/</link>
      <pubDate>Tue, 01 Dec 2020 01:36:37 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/12/the-excitement-cycle/</guid>
      <description>&lt;p&gt;I have noticed a predictable pattern in my excitement/motivation levels when I join a new community, project or an organization. This pattern closely resembles &lt;a href=&#34;https://en.wikipedia.org/wiki/Gartner&#34;&gt;Gartner&lt;/a&gt;&amp;rsquo;s &lt;a href=&#34;https://en.wikipedia.org/wiki/Hype_cycle&#34;&gt;Hype Cycle&lt;/a&gt; &lt;a href=&#34;https://en.wikipedia.org/wiki/Hype_cycle#/media/File:Hype-Cycle-General.png&#34;&gt;chart&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Initial phase is all about discovery and aww factor towards the community and folks behind the community. Steep upwards curve in excitement level is felt as more findings about the community come to light. A peak excitement level is reached where nothing seems better than this wonderful community I discovered. This excitement reaches an infliction point where cracks seem to appear in the excitement levels. Weaknesses, issues, infighting, not so good part of the community comes forth as the move towards the core community is made and this leads to steep decline in the excitement levels. This reaches a low or in terms of Gartner&amp;rsquo;s Hype Cycle, trough of disillusionment comes where question of continuing with the community start arising. Initial day excitement are to be nowhere to be found. With time this phase passes with general understanding/enlightenment comes about the initial motivation behind joining the community. The excitement slopes starts moving upwards and excitement and motivation continues with gradual upwards rediscovery of the joy of being part of the community.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: This was long overdue post. I believe I got this realization in mid October and wanted to document it here but kept slacking with no blog posts at all in November. Finally, it&amp;rsquo;s here.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PSS: Recently I discovered a writing prompt bot, &lt;a href=&#34;https://botsin.space/@promptodon&#34;&gt;Promptodon&lt;/a&gt; on Mastodon which posts almost everyday with a new prompt. Seeing a new prompt from it and thought of writing on them excites me. Plan to take some and write on them. Let&amp;rsquo;s see how it goes.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Why I Write (Blogs)</title>
      <link>https://blog.sahilister.in/2020/10/why-i-write-blogs/</link>
      <pubDate>Fri, 30 Oct 2020 01:14:12 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/10/why-i-write-blogs/</guid>
      <description>&lt;p&gt;Blogs might be my only writings at the moment, so let&amp;rsquo;s focus on why I write blogs, the idea and motivation behind it.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s been a while I wrote something for the blog. Maybe I have lost the momentum. Earlier I usually had a topic in hand/mind for the next blog post while writing the present one. This was a real effective idea because my mind was always buzzing about the next post I would write. Not anymore. (Just to get it out, writing and making a blog post has always been hard while I sit to do it.) Enough of babbling, let&amp;rsquo;s come to the main subject. I was introduced to the concept of having a personal blog by &lt;a href=&#34;https://dgplug.org/&#34;&gt;dgplug&lt;/a&gt;&amp;rsquo;s &lt;a href=&#34;https://summertraining.readthedocs.io/en/latest/blogging.html&#34;&gt;Summer Training manual&lt;/a&gt; and now I know, it&amp;rsquo;s written by Jason Braganza (&lt;em&gt;if you&amp;rsquo;re reading this, thanks Jason, you got me started&lt;/em&gt;). You can follow Jason&amp;rsquo;s work  &lt;a href=&#34;https://janusworx.com/&#34;&gt;here&lt;/a&gt;. The blogging section in the manual goes into details on why personal blogs should be made (a highly recommended read). Back then I was exploring the idea of personal domain/website as well as moving away from Gmail. I got a domain and set out creating a minimalistic blog (even prior to the main website, which still is nowhere in sight).&lt;/p&gt;
&lt;p&gt;Things that motivate me to blog are many. First my blog is my little place on the internet where I share experiences, findings, tutorials, walkthroughs or whatever comes to mind. It essentially is a journal/diary of my life (or parts of it that I&amp;rsquo;m comfortable sharing on the Internet). I went through &lt;a href=&#34;https://toots.dgplug.org/@kushal&#34;&gt;Kushal Das&lt;/a&gt;&amp;rsquo;s &lt;a href=&#34;https://kushaldas.in/&#34;&gt;blog&lt;/a&gt; &lt;a href=&#34;https://kushaldas.in/archive.html&#34;&gt;archives&lt;/a&gt; dating back to year 2004 and it served as a written history/journey in their life from then to now. High, lows, excitement, experiences everything could be seen reflected in their blog posts and I loved it. I also read &lt;a href=&#34;https://social.masto.host/@praveen&#34;&gt;Pirate Praveen&lt;/a&gt;&amp;rsquo;s ex &lt;a href=&#34;https://web.archive.org/web/*/j4v4m4n.in&#34;&gt;blog&lt;/a&gt; through Internet Archive Wayback Machine and absolutely loved it. That feeling of coming years later and rereading and reflecting on one&amp;rsquo;s mindset or situation back then excites me.&lt;/p&gt;
&lt;p&gt;In addition to that I generally come across and read blog posts describing how to accomplish a certain task. So I imagine maybe sometimes my experience/blog can help someone in someway or provide some value, that would be awesome. Just to add, many a time like my other works, I consult my own posts to a redo a particular problem. It essentially serves as my go-to guide more than I can remember.&lt;/p&gt;
&lt;p&gt;Another motivation to write it out is to get it out of the system. Writing helps me think about a certain subject while jotting it down over an extended period (usually 2-3 days, the usual duration of a post completion). It essentially makes the subject more clear while giving a structure to the idea. This blog gives me control over my content and allows me to experiment/write or do any anything about it. Everything is under my own control rather than depending on a blog provider or social media platform.&lt;/p&gt;
&lt;p&gt;These are the reasons, motivations and history behind me writing blogs. (Maybe someday this will warrant an update, who knows.)&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: Read personal blogs from folks who inspire you. Gives an intimate window in their life and mind.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Updates: New Domain, New Email, New Hosting</title>
      <link>https://blog.sahilister.in/2020/10/updates-new-domain-new-email-new-hosting/</link>
      <pubDate>Tue, 20 Oct 2020 01:34:00 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/10/updates-new-domain-new-email-new-hosting/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s been a while I wrote a blog. Initial plan was to get a new domain, switch hosting and start an RSS feed and write an update blog post on it. I kept postponing the RSS feed work and that let to postpoing the update blog (which was destined to be the next blog post, leading to this long gap). RSS feed would come in due course.&lt;/p&gt;
&lt;p&gt;Coming back to the updates, as you can see the blog has moved from &lt;em&gt;blog.sahilister.tech&lt;/em&gt; to &lt;em&gt;blog.sahilister.in&lt;/em&gt; . Had got the &lt;em&gt;.tech&lt;/em&gt; domain from GitHub Students Pack and eventually decided to buy .in domain as birthday present to self. Was wondering to move email providers away from Gmail and ended up getting domain from &lt;a href=&#34;https://www.gandi.net&#34;&gt;Gandi&lt;/a&gt; which provides custom emails with each new domain bought there, so new email address too (you can get my latest mail from about section).&lt;/p&gt;
&lt;p&gt;In the past the blog was hosted on GitHub pages which has been moved to its new home at GitLab pages &lt;a href=&#34;https://gitlab.com/sahilister/reimagined-doodle&#34;&gt;here&lt;/a&gt; for obvious reasons.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s all for the updates for now, see you until next time. :)&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Learnings and Findings During the Pandemic</title>
      <link>https://blog.sahilister.in/2020/09/learnings-and-findings-during-the-pandemic/</link>
      <pubDate>Fri, 25 Sep 2020 05:01:19 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/09/learnings-and-findings-during-the-pandemic/</guid>
      <description>&lt;p&gt;The COVID-19 pandemic has been hard for everyone. Folks suffered, folks died. Things changed drastically, and we were left locked in our homes. This did leave a lot of time to somewhat explore too and eventually it did help me learn about quite a few things which I now love and use almost daily.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;You can see my present setup blog &lt;a href=&#34;https://blog.sahilister.in/2020/08/my-setup-august-2020-edition/&#34;&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a long list of things within my self defined categories:&lt;/p&gt;
&lt;h3 id=&#34;gnulinux-and-customization&#34;&gt;GNU/Linux and Customization&lt;/h3&gt;
&lt;p&gt;I started with Ubuntu and Pop!__OS and switched to Debian during this pandemic. Found how wide Unix like operating system is in terms of how much there is to learn and explore. Learned quite a few things. My default terminal became zsh + oh my zsh with agnoster theme. Also, now I prefer navigation through terminal rather than GUI. Got to know about tiling windows manager and now on i3 (or more precisely on i3 gaps through a hack) and totally recommend it. I started realizing the value of making personalized dotfiles and aliases and how to use them. Started using applications on choice rather than what comes with the system and the value of free (as in freedom) software and the philosophy behind it.&lt;/p&gt;
&lt;h3 id=&#34;communication&#34;&gt;Communication&lt;/h3&gt;
&lt;p&gt;Communication might be the most reshaped category. Started with &lt;a href=&#34;https://en.wikipedia.org/wiki/Internet_Relay_Chat&#34;&gt;IRC&lt;/a&gt; due to &lt;a href=&#34;https://www.dgplug.org/&#34;&gt;DGPLUG&lt;/a&gt;&amp;rsquo;s &lt;a href=&#34;https://foss.training/&#34;&gt;summer training&lt;/a&gt; and quickly discovered &lt;a href=&#34;https://matrix.org/&#34;&gt;Matrix&lt;/a&gt; and started using &lt;a href=&#34;https://element.io/&#34;&gt;Element&lt;/a&gt; for both IRC and Matrix chat rooms. Additionally, joined Telegram for &lt;a href=&#34;https://linuxdelhi.org/&#34;&gt;ILUG Delhi&lt;/a&gt; and discovered chat bridges or more precisely &lt;a href=&#34;https://matrix.org/bridges/&#34;&gt;Matrix bridges&lt;/a&gt;. Totally in love with the concept of bridges. And then came &lt;a href=&#34;https://laurakalbag.com/what-is-mastodon-and-why-should-i-use-it/&#34;&gt;Mastodon&lt;/a&gt; and &lt;a href=&#34;https://en.wikipedia.org/wiki/Fediverse&#34;&gt;Fediverse&lt;/a&gt; (&lt;em&gt;Federation for the win&lt;/em&gt;). It should be the way forward rather than big monopolistic silos. Self-hosting federated services to keep personal data in one&amp;rsquo;s hand and relying on others is what I believe should be the case. My present Mastodon instance is &lt;a href=&#34;https://fosstodon.org/about&#34;&gt;Fosstodon&lt;/a&gt;, totally recommended if you&amp;rsquo;re into FOSS, privacy and self-hosting. It essentially has become one of my only social media handle which I use almost daily and love. Through Fosstodon, discovered how there&amp;rsquo;s a world outside Gmail/Twitter/Facebook and leaving these services is possible. Through posts on Fosstodon discovered, git by mail and replying to issues via mail and sending patches by mail (that&amp;rsquo;s how Linux kernel development works). This lead to mailing list, a nice long form software development list as well as general communication system. Specifically helpful due to mail archives.&lt;/p&gt;
&lt;h3 id=&#34;organizations&#34;&gt;Organizations&lt;/h3&gt;
&lt;p&gt;Discovered and joined a few FSUGs and &lt;a href=&#34;https://en.wikipedia.org/wiki/Linux_user_group&#34;&gt;LUG&lt;/a&gt;s. Started with ILUG Delhi; got to know about them from their YouTube quiz streams (now a regular to these and love it). Next came DGPLUG. Got to know about them from their famous Summer training program which resumed this year. Then came &lt;a href=&#34;https://ilugc.in/&#34;&gt;ILUG Chennai&lt;/a&gt;, just attending their sessions is what I do there. And then came &lt;a href=&#34;https://www.plug.org.in/&#34;&gt;PLUG&lt;/a&gt; by accident and how can I forget about DebConf India folks and &lt;a href=&#34;https://fsci.in/&#34;&gt;FSCI&lt;/a&gt;. Always learn something new when I browse through the conversation happening on these channels (&lt;em&gt;almost all the orgs mentioned above, I have joined virtually&lt;/em&gt;).&lt;/p&gt;
&lt;h3 id=&#34;servers-and-self-hosting&#34;&gt;Servers and Self-hosting&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://aws.amazon.com/free/&#34;&gt;AWS free tier&lt;/a&gt; gave me the opportunity to start fiddling with self-hosting and Fosstodon introduced me with various areas to self host and now I&amp;rsquo;m a convert. Discovered &lt;a href=&#34;https://yunohost.org/&#34;&gt;YunoHost&lt;/a&gt;, a distro to manage servers through web interface, an easy way to get into self-hosting as it provide single click installation of bunch of applications. Next came &lt;a href=&#34;https://en.wikipedia.org/wiki/Searx&#34;&gt;Searx&lt;/a&gt;, self-hosted on Yunohost for a while but now use a public instance and is my primary search engine right now. Got introduced to ssh and nginx next. &lt;a href=&#34;https://jitsi.org/jitsi-meet/&#34;&gt;Jitsi Meet&lt;/a&gt; self-hosting came next which I host almost every weekend now (do try, easy as hell).&lt;/p&gt;
&lt;h3 id=&#34;domains&#34;&gt;Domains&lt;/h3&gt;
&lt;p&gt;Got interested in domains while looking into &lt;a href=&#34;https://education.github.com/pack&#34;&gt;GitHub students pack&lt;/a&gt; and got 2 from there and now planning on getting one more (on which I&amp;rsquo;ll have my custom email too). Love playing with the combination of subdomains and forwarding.&lt;/p&gt;
&lt;h3 id=&#34;software&#34;&gt;Software&lt;/h3&gt;
&lt;p&gt;Thunderbird for mailing client and RSS feed reader comes to mind. For text editing, switched to terminal based editors. Initially &lt;a href=&#34;https://www.nano-editor.org/&#34;&gt;nano&lt;/a&gt; and now trying to learn &lt;a href=&#34;https://www.vim.org/&#34;&gt;vim&lt;/a&gt;. &lt;a href=&#34;https://mpv.io/&#34;&gt;mpv&lt;/a&gt; for musics and videos.&lt;/p&gt;
&lt;h3 id=&#34;activities&#34;&gt;Activities&lt;/h3&gt;
&lt;p&gt;Started with blogging. Sometimes regularly, sometimes infrequently but that&amp;rsquo;s a start. Been almost two months, almost 17 posts down, feels nice. Started learning Debian packaging (not successful with the first package yet but will happen soon). Restarted with editing Wikipedia and sharing as well as wiki for FSCI. Looking into &lt;a href=&#34;https://www.openstreetmap.org/&#34;&gt;OSM&lt;/a&gt; contributions and Hindi translation for FOSS. And now regularly participate in online meetups and conferences like DebConf and Jamstack.&lt;/p&gt;
&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;I might have missed a few things due to losing the original long list of things to write about. The lockdown phase can be said to be one of the most life-changing moments of my life due to how much I have explored; will keep on exploring and contributing to the back to society is the motto now.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Simple IRC Bouncer using The Lounge</title>
      <link>https://blog.sahilister.in/2020/09/simple-irc-bouncer-using-the-lounge/</link>
      <pubDate>Fri, 11 Sep 2020 03:16:28 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/09/simple-irc-bouncer-using-the-lounge/</guid>
      <description>&lt;p&gt;I use matrix services to communicate online and to bridge into IRC channels. So the other day, &lt;a href=&#34;https://en.wikipedia.org/wiki/Element_(software)&#34;&gt;Element&lt;/a&gt; was giving some trouble, and I was into a long conversation with someone on IRC. To access IRC, I found &lt;a href=&#34;https://thelounge.chat/&#34;&gt;&amp;ldquo;The Lounge&amp;rdquo;&lt;/a&gt; in my Yunohost instance directory. &lt;a href=&#34;https://yunohost.org/#/&#34;&gt;Yunohost&lt;/a&gt; is a Debian distribution one can say, which provides a Web GUI to manage and install application with a few clicks doing the heavy work for you with less to non server knowhow.&lt;/p&gt;
&lt;p&gt;Coming back to IRC bouncer, this aforementioned steps can help you setup a free IRC bouncer (through &lt;a href=&#34;https://aws.amazon.com/free/?all-free-tier.sort-by=item.additionalFields.SortRank&amp;amp;all-free-tier.sort-order=asc&#34;&gt;AWS EC2 free tier&lt;/a&gt;). You can simply login into a web interface to access IRC. There not much to do other than getting YunoHost up and this can be completed in about 30-40 minutes.&lt;/p&gt;
&lt;h3 id=&#34;installation&#34;&gt;Installation&lt;/h3&gt;
&lt;h4 id=&#34;install-and-configure-yunohost&#34;&gt;Install and configure Yunohost&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Follow steps 1-4 as mentioned in table of content &lt;a href=&#34;https://blog.sahilister.in/2020/08/how-i-installed-searx-using-yunohost/&#34;&gt;here&lt;/a&gt;. It links to my other post about Searx on Yunohost, so just referenced the same steps.
Otherwise, follow the official installation guide &lt;a href=&#34;https://yunohost.org/#/install_on_vps&#34;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;install-the-lounge&#34;&gt;Install The Lounge&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;On Yunohost web interface, do &lt;code&gt;Application&lt;/code&gt; -&amp;gt; &lt;code&gt;Install&lt;/code&gt; -&amp;gt; &lt;code&gt;Communication&lt;/code&gt; -&amp;gt; &lt;code&gt;The Lounge&lt;/code&gt; -&amp;gt; &lt;code&gt;Install&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;usage&#34;&gt;Usage&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Add default user for Yunohost if not already done from &lt;code&gt;Users&lt;/code&gt; menu on interface.&lt;/li&gt;
&lt;li&gt;Open &amp;ldquo;The Lounge&amp;rdquo; URL from &lt;code&gt;Application&lt;/code&gt; section and login with default user created above.&lt;/li&gt;
&lt;li&gt;Login with your IRC credentials and start chatting.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;PS: The Lounge can be installed on Heroku also I believe but Heroku instances (free tier) go on sleep on 5 minutes of inactivity, so persistence can suffer. Feel free to correct me by firing a mail :) .&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PSS: Other ways to install The Lounge can be found &lt;a href=&#34;https://thelounge.chat/docs/install-and-upgrade&#34;&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>compete - Typing Game, Post 5</title>
      <link>https://blog.sahilister.in/2020/09/compete-typing-game-post-5/</link>
      <pubDate>Wed, 09 Sep 2020 01:09:38 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/09/compete-typing-game-post-5/</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;a href=&#34;https://github.com/sahilister/compete&#34;&gt;Github repository&lt;/a&gt;&lt;/em&gt;,
&lt;em&gt;&lt;a href=&#34;https://blog.sahilister.in/2020/08/compete-typing-game-post-4/&#34;&gt;Previous&lt;/a&gt; post in the series&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&#34;table-of-content&#34;&gt;Table of Content&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;#detailed-checklist&#34;&gt;Detailed Checklist&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#thoughts-and-learnings&#34;&gt;Thoughts and Learnings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#changelog&#34;&gt;Changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;detailed-checklist&#34;&gt;Detailed Checklist&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Local setup&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Keyboard character recognition&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Error recognition and highlighting&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Points system&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Text from Wikipedia API, random page&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Add variable timers&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Multiplayer mode&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Room creation using socket.io&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Implement local setup for each user&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Sync Wikipedia article&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Implement start and timer&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Sync timer&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Leaderboard&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; UI/UX redesign&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Homepage&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Match page&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Result page&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; AWS setup&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Offload to EC2 with Elastic Beanstalk&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Add site to &lt;a href=&#34;&#34;&gt;compete.sahilister.tech&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Add-ons&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Authentication&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Register&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Login&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Session management&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Profile&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Matches played&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Matches won&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Matches lost&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Average words/min&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;thoughts-and-learnings&#34;&gt;Thoughts and Learnings&lt;/h3&gt;
&lt;p&gt;My procrastination, nothing to add this time too. Was trying debian packaging this time. Let&amp;rsquo;s again hope, I have something to add in the next post.&lt;/p&gt;
&lt;h3 id=&#34;changelog&#34;&gt;Changelog&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Nothing&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Experience Attending DebConf20</title>
      <link>https://blog.sahilister.in/2020/09/experience-attending-debconf20/</link>
      <pubDate>Mon, 07 Sep 2020 20:48:29 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/09/experience-attending-debconf20/</guid>
      <description>&lt;p&gt;The 21st edition of DebConf, DebConf20 came to end on August 29th (August 30th where I live). It officially started on August 23rd. It was my first DebConf since I started with Debian. I was looking into DebConf this year when it was scheduled for Haifa, Israel which eventually moved online due to pandemic.&lt;/p&gt;
&lt;p&gt;I registered as soon as they opened and was surprised to find a free tier (still a student, will take paid tier as soon as I get capable :) ). Too my surprise, they offered a DebConf t shirt too. So done with the registration, I eagerly waited for talk schedule and the conference.&lt;/p&gt;
&lt;p&gt;The schedule arrived and I must admit, it was filled with talks on my topic of interests. Quickly made a watch list. A day or two before the opening, the following &lt;a href=&#34;https://lists.debian.org/debconf-video/2020/08/msg00002.html&#34;&gt;mail&lt;/a&gt; arrived which called for volunteering for talkmeisters and directors for the talks. I was anxious but wanted to contribute so went ahead and volunteered for both the roles. Attended the training session. Initially I wasn&amp;rsquo;t sure if I could do it but spending time with the setup and experimenting made me fairly confident. On a side note, the director (and talkmeister) setup was common for talk and test stream, which started a few days prior. I was fiddling around with the setup unbeknown that test stream and DebConf talk recordings were uploaded in the setup and I loaded a talk recording on stream even before DebConf even started. Ding! Came the message in #debconf-video alerting me of the mistake. Then I fully understood the whole video setup.&lt;/p&gt;
&lt;p&gt;So let me briefly explain the roles. The talkmeister, they were the anchor/MC of the talk and handled the introduction and QnA of the talk. The director has the job of video mixing and handles what goes on live stream. Four different displays were available and the combination of one or more of those went on stream. The speaker, talkmeister and director remained in a Jitsi room which becomes one of the display to coordinate the talk. Detailed version of the tasks can be found &lt;a href=&#34;https://debconf-video-team.pages.debian.net/docs/online_volunteer_roles.html&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Coming back to the actual conference, initially I had planned to volunteer for talks every day, but due to a little date mistake I did, I only volunteered on 6 days out of 7 days. I ended up doing 10 volunteering tasks; 5 as talkmeister and 5 as directer \o/ . Initially I was nervous but quickly grew comfortable with the folks. It gave me the opportunity to interact with folks from all sorts of backgrounds and culture with countries ranging from Mexico, United States, France, Germany, Swaziland amongst others. I&amp;rsquo;m kind of person who shy away from interacting with unknown folks over calls but this time I loved getting to know about folks from different culture. Many a time we used to stay back after the talk ended (in the Jitsi room) and interact with the speakers directly asking them about whatever comes to mind about the talk (I specifically volunteered for talks that were on my watch list), so direct unfettered access to ask all sort of questions. All the folks I interacted were cheerful folks who loved what they were working on and answered all the queries.&lt;/p&gt;
&lt;p&gt;As for a little mess up that I did during a talk, of which I wrote a blog post that can be found &lt;a href=&#34;https://blog.sahilister.in/2020/08/dont-take-life-so-seriously/&#34;&gt;here&lt;/a&gt;. In short, during a talk, I was directing, a little mess up happened and after correction, another thing went wrong, maybe due to my panicking. But the talk ended and the speaker wasn&amp;rsquo;t furious with me and taught me an important lesson. On a fun note, I believe due to this, folks behind the video stream stack implemented a QnA preset option to reduce the manual input required by the director :D .&lt;/p&gt;
&lt;p&gt;Another memorable incidence was during the DebConf Poetry Night, which I was directing. While directing, I felt like I too should recite one. The anchor agreed and I recited &lt;a href=&#34;https://en.wikipedia.org/wiki/Chitto_Jetha_Bhayshunyo&#34;&gt;&lt;em&gt;&amp;ldquo;Where the mind is without fear&amp;rdquo;&lt;/em&gt;&lt;/a&gt; by 1913 Nobel laureate Rabindranath Tagore and quickly went back to direction. Feel good experience it was.&lt;/p&gt;
&lt;p&gt;On IRC and backend, it was a learning experience seeing new features and bug squashes in the production stream setup almost daily. True hacker nature it felt like. Another wonderful thing was I got to know the team behind DebConf India. Nice folks who care about free software, community and localization efforts.&lt;/p&gt;
&lt;p&gt;In conclusion, it was a wonderful and learning experience. Meet folks who love to contribute to make Debian and FOSS better. I&amp;rsquo;m myself trying to learn Debian packaging and other avenues to contribute to this wonderful community. The DebConf20 group photo can be found &lt;a href=&#34;https://wiki.debian.org/DebConf/20/GroupPhoto&#34;&gt;here&lt;/a&gt; and streams are available on talk pages on &lt;a href=&#34;https://debconf20.debconf.org/schedule/&#34;&gt;conference website&lt;/a&gt; and Debian &lt;a href=&#34;https://meetings-archive.debian.net/pub/debian-meetings/2020/DebConf20/&#34;&gt;video archive&lt;/a&gt;. Talks can also be found on Debian&amp;rsquo;s &lt;a href=&#34;https://peertube.debian.social/video-channels/debconf20/videos?a-state=42&#34;&gt;peertube instance&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;See you then, until next time. o/&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>compete - Typing Game, Post 4</title>
      <link>https://blog.sahilister.in/2020/08/compete-typing-game-post-4/</link>
      <pubDate>Mon, 31 Aug 2020 01:09:38 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/08/compete-typing-game-post-4/</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;a href=&#34;https://github.com/sahilister/compete&#34;&gt;Github repository&lt;/a&gt;&lt;/em&gt;,
&lt;em&gt;&lt;a href=&#34;https://blog.sahilister.in/2020/08/compete-typing-game-post-3/&#34;&gt;Previous&lt;/a&gt; and &lt;a href=&#34;https://blog.sahilister.in/2020/09/compete-typing-game-post-5/&#34;&gt;Next&lt;/a&gt; post in the series&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&#34;table-of-content&#34;&gt;Table of Content&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;#detailed-checklist&#34;&gt;Detailed Checklist&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#thoughts-and-learnings&#34;&gt;Thoughts and Learnings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#changelog&#34;&gt;Changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;detailed-checklist&#34;&gt;Detailed Checklist&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Local setup&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Keyboard character recognition&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Error recognition and highlighting&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Points system&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Text from Wikipedia API, random page&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Add variable timers&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Multiplayer mode&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Room creation using socket.io&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Implement local setup for each user&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Sync Wikipedia article&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Implement start and timer&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Sync timer&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Leaderboard&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; UI/UX redesign&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Homepage&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Match page&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Result page&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; AWS setup&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Offload to EC2 with Elastic Beanstalk&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Add site to &lt;a href=&#34;&#34;&gt;compete.sahilister.tech&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Add-ons&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Authentication&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Register&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Login&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Session management&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Profile&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Matches played&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Matches won&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Matches lost&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Average words/min&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;thoughts-and-learnings&#34;&gt;Thoughts and Learnings&lt;/h3&gt;
&lt;p&gt;Wasn&amp;rsquo;t expecting anything to happen anyhow, DebConf20 week. Volunteered for video team there and meet a bunch of awesome folks from around the world. The September 28th deadline is here and I don&amp;rsquo;t have any update yet. Let&amp;rsquo;s see what comes in the next update.&lt;/p&gt;
&lt;h3 id=&#34;changelog&#34;&gt;Changelog&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Nothing&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>My Setup - August 2020 Edition</title>
      <link>https://blog.sahilister.in/2020/08/my-setup-august-2020-edition/</link>
      <pubDate>Sat, 29 Aug 2020 03:25:45 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/08/my-setup-august-2020-edition/</guid>
      <description>&lt;p&gt;This post is inspired by Luke Smith&amp;rsquo;s blog post, &amp;ldquo;&lt;a href=&#34;https://lukesmith.xyz/programs&#34;&gt;Programs and Equipment I User&lt;/a&gt;&amp;rdquo;. It&amp;rsquo;s been a few months since I started making choices rather than going with what comes by default.&lt;/p&gt;
&lt;p&gt;I plan on to write this blog every six months starting now, so a post every august and march for the foreseeable future. This will serve as my setup timeline.&lt;/p&gt;
&lt;h3 id=&#34;software-i-use&#34;&gt;Software I Use&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Operating System / Distributions&lt;/strong&gt; - I use &lt;em&gt;Debian 10 Buster(stable)&lt;/em&gt; as of now. Not many choose Debian due to its nature of packages getting dated in stable but more or less I find it never concerns much to me (baring a few instances), prevalence of Debian and Ubuntu helps.
Earlier I was using POP!_OS or Ubuntu for the past two years (since the time I started using GNU/Linux) but got frustrated due to frequent issues and Canonical&amp;rsquo;s closed source nature around snap packages and telemetry in Ubuntu. It made me switch to Debian. I must add, presently my system is dual booted with &lt;em&gt;Windows 10&lt;/em&gt; being the other. It&amp;rsquo;s not because I like Windows(more on the contrary) but because it came pre-installed on my SSD and I fear formatting the SSD. Additionally, I still switch to Windows for making bootable media. (Now that I&amp;rsquo;m writing this, I remember balenaEtcher is an Electron app and will work cross-platform; one less reason for powering on the Windows side). Though I rarely power-off the laptop and usually forget for weeks and that I have Windows too.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Terminal&lt;/strong&gt; - &lt;em&gt;Konsole&lt;/em&gt; (Plasma default). Just work&amp;rsquo;s for me. Haven&amp;rsquo;t got to the point of changing terminals, maybe in the future.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Shell&lt;/strong&gt; - &lt;em&gt;Z shell + Oh My Zsh&lt;/em&gt;. Switched to Zsh due to the visual features and a bunch of other stuff I saw in a tutorial online. Oh My Zsh came naturally with it. My present theme is &amp;ldquo;agnoster&amp;rdquo;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Windows Manager / Desktop Environment&lt;/strong&gt; - I&amp;rsquo;m presently using &lt;em&gt;i3 gaps&lt;/em&gt; as my tiling windows manager (i3 gaps is not available for Debian, got it from a user script). Excellent in every aspect, if you prefer using keyboard over mouse. Multiple workspaces, neatly distinguished according to applications they&amp;rsquo;re running. Presently my workspaces name are as follows, in order: &amp;ldquo;primary&amp;rdquo;, &amp;ldquo;secondary&amp;rdquo;, &amp;ldquo;thunderbird&amp;rdquo;, &amp;ldquo;element&amp;rdquo; and &amp;ldquo;baggage&amp;rdquo;, which more or less tells what they&amp;rsquo;re used for. I have &lt;em&gt;KDE Plasma&lt;/em&gt; installed as my desktop manager/environment but I mostly spend time in i3 gaps user mode and only occasionally switch to it for features I couldn&amp;rsquo;t configure in i3. Though I must add, whenever I switch, my workflow gets all messed up due to me using i3 bindings and Plasma not recognizing them.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Text editor and Programming editor&lt;/strong&gt; - For text editing, I recently switched to &lt;em&gt;vim&lt;/em&gt;. I&amp;rsquo;m learning vim as of now but am more or less comfortable with the basic keyboard usage (due to nano being my previous editor). Now trying to incorporate advance vim bindings to maximize advantage of using it. For web development related stuff, I use &lt;em&gt;atom&lt;/em&gt; due to its GUI oriented nature for project management. Presently I&amp;rsquo;m not doing much coding other than web development and other Linux scripting, so not using any editor for that at the moment.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Web browser&lt;/strong&gt; - &lt;em&gt;Mozilla Firefox&lt;/em&gt; is the go-to browser for its FOSS nature and respect for user privacy. I also have &lt;em&gt;Brave Browser&lt;/em&gt; for websites that don&amp;rsquo;t play nice with Firefox or my tweaks with it. Some of my go-to extensions are &lt;em&gt;uBlock Origin, Decentraleyes, Bitwarden, Cookie AutoDelete, HTTPS Everywhere&lt;/em&gt; and &lt;em&gt;NoScript&lt;/em&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;File Manager&lt;/strong&gt; - I usually use &lt;em&gt;terminal&lt;/em&gt; for navigation. For GUI, I have &lt;em&gt;Dolphin&lt;/em&gt; (Plasma default). Recently I came across Midnight Commander, will probably switch to it some time in the future (tried Ranger once but found it too complicated to setup, maybe that is also a possibility in near future).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Mail Client&lt;/strong&gt; - &lt;em&gt;Thunderbird&lt;/em&gt;. Switched to standalone mail client due to heavy nature of Gmail on Linux and loved it. ProtonMail provide IMAP support for paid customer only, so still stuck with Gmail.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Music &amp;amp; Video Player&lt;/strong&gt; - &lt;em&gt;mpv&lt;/em&gt;. Found mpv from Luke Smith&amp;rsquo;s post mentioned in the introduction and loved it. Streaming URLs directly from terminal is the best part.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;RSS Feed Reader&lt;/strong&gt; - &lt;em&gt;Thunderbird&lt;/em&gt;. Thunderbird actually is jack of all trades and houses feed reader, calendar, chat (including IRC and XMPP), newsgroups, address book, filelink too.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Office Suite&lt;/strong&gt; - &lt;em&gt;LibreOffice&lt;/em&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Image Viewer/Modifier&lt;/strong&gt; - &lt;em&gt;Gwenview&lt;/em&gt; (Plasma default).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Matrix / IRC Client&lt;/strong&gt; - &lt;em&gt;Element&lt;/em&gt;. For IRC channels, I usually bridge using matrix. Though Element is giving troubles these days, might switch.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;hardware-i-use&#34;&gt;Hardware I Use&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Laptop&lt;/strong&gt; - &lt;em&gt;ASUS VivoBook 15 X510UN&lt;/em&gt; with 8 GB RAM, Intel Core i5-8250U @ 1.60GHz, Nvidia MX150 GPU (though I haven&amp;rsquo;t installed necessary drivers, not been able to install Nouveau and avoiding proprietary Nvidia one&amp;rsquo;s), 1 TB HDD, 256 GB SDD. It has a problem with screen flex but does its job fine.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Hardware &amp;amp; Peripherals&lt;/strong&gt; - I have an &lt;em&gt;HP USB&lt;/em&gt; mouse and a 1.5 TB &lt;em&gt;Seagate&lt;/em&gt; external USB HDD. I planned on buying a mechanical keyboard but most on my wishlist are stock out due to the coronavirus pandemic and India-China dispute. Also, I have a thumb drive and a TP link Ethernet to USB converter.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;mobile-and-software-in-it&#34;&gt;Mobile and Software In It&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mobile&lt;/strong&gt; - &lt;em&gt;Nokia 5&lt;/em&gt;, original 2 GB RAM version running Android 9 with most Google apps disabled or unistalled. Trying to switch towards a Google free device. Some noteworthy apps I use &lt;em&gt;Access Dots, Aurora Store, F-Droid, NetGuard, NewPipe and Tusky&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Update (03/2021): Apart from switching from KDE Plasma to Mate DE (and switching Plasma defaults with Mate one&amp;rsquo;s), nothing changed. So I&amp;rsquo;m skipping writing a new setup post now for the foreseeable future until some major change comes.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Don&#39;t Take Life So Seriously</title>
      <link>https://blog.sahilister.in/2020/08/dont-take-life-so-seriously/</link>
      <pubDate>Fri, 28 Aug 2020 01:12:11 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/08/dont-take-life-so-seriously/</guid>
      <description>&lt;p&gt;Great learnings and thoughts can arrive anytime and usually when we least expect them. One such experience happened with me yesterday (26th August 2020) during DebConf20.&lt;/p&gt;
&lt;p&gt;I was directing a talk yesterday. In direction, my role was to choose what goes on DebConf20 live stream worldwide. During a transition, I messed up by choosing a wrong display which played on stream for more than a minute. This was only rectified when the talk meister pointed that out to me. After the talk ended, the speaker thanked us (talk meister and me) to which I apologized for messing up during his talk to which he casually said, on the lines that &amp;ldquo;don&amp;rsquo;t take life so seriously&amp;rdquo;. This had my mind blown. Due to the mess up, I was planning to drop from directing two other talks that I had later that day I was stressed and was getting anxious. These simple words were like enlightenment and soothed me. But after listening to the words, I dropped the idea of dropping ;).&lt;/p&gt;
&lt;p&gt;I know, I&amp;rsquo;ll mess up things in life but, I will continue doing what I enjoy and took the responsibility for. Many a time, we take life too seriously. Things tend to go haywire, mistakes happen but that doesn&amp;rsquo;t mean we have to keep stressing out about it. They were experiences and happenings in our journey called life. Moving on is the key forward. Let&amp;rsquo;s consider maybe our stresses are own creations.&lt;/p&gt;
&lt;p&gt;The following quote does a fairly good job describing life:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Life is a tragedy when seen in close-up, but a comedy in long-shot.
― &lt;em&gt;Charlie Chaplin&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And finally,
Thank you, Florian Haftmann, speaker for talk, &amp;ldquo;POSIX pitfalls in modern desktop environments and how to work-around them&amp;rdquo; in DebConf20 for this lesson. I am genuinely indebted to you.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>compete - Typing Game, Post 3</title>
      <link>https://blog.sahilister.in/2020/08/compete-typing-game-post-3/</link>
      <pubDate>Fri, 21 Aug 2020 01:09:38 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/08/compete-typing-game-post-3/</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;a href=&#34;https://github.com/sahilister/compete&#34;&gt;Github repository&lt;/a&gt;&lt;/em&gt;,
&lt;em&gt;&lt;a href=&#34;https://blog.sahilister.in/2020/08/compete-typing-game-post-2/&#34;&gt;Previous&lt;/a&gt; and &lt;a href=&#34;https://blog.sahilister.in/2020/08/compete-typing-game-post-4/&#34;&gt;Next&lt;/a&gt; post in the series&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&#34;table-of-content&#34;&gt;Table of Content&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;#detailed-checklist&#34;&gt;Detailed Checklist&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#thoughts-and-learnings&#34;&gt;Thoughts and Learnings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#changelog&#34;&gt;Changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;detailed-checklist&#34;&gt;Detailed Checklist&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Local setup&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Keyboard character recognition&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Error recognition and highlighting&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Points system&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Text from Wikipedia API, random page&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Add variable timers&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Multiplayer mode&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Room creation using socket.io&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Implement local setup for each user&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Sync Wikipedia article&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Implement start and timer&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Sync timer&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Leaderboard&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; UI/UX redesign&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Homepage&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Match page&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Result page&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; AWS setup&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Offload to EC2 with Elastic Beanstalk&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Add site to &lt;a href=&#34;&#34;&gt;compete.sahilister.tech&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Add-ons&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Authentication&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Register&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Login&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Session management&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Profile&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Matches played&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Matches won&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Matches lost&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Average words/min&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;thoughts-and-learnings&#34;&gt;Thoughts and Learnings&lt;/h3&gt;
&lt;p&gt;I slacked off, again without much progress. Though got a jitsi instance and a searx instance throught yunohost. Searx is been used as the daily driver, nice.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s hope the next post, which would be almost a month from the day I started has something to write in the changelog, though I doubt that too as DebConf20 is starting this weekend and will go on for a week + some sessional exams too.&lt;/p&gt;
&lt;h3 id=&#34;changelog&#34;&gt;Changelog&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Nothing&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>How I Installed Searx Using Yunohost</title>
      <link>https://blog.sahilister.in/2020/08/how-i-installed-searx-using-yunohost/</link>
      <pubDate>Wed, 19 Aug 2020 01:22:38 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/08/how-i-installed-searx-using-yunohost/</guid>
      <description>&lt;p&gt;I had an AWS account which offers 12 months of Amazon EC2 with 750 hours/month free on initial sign up. It&amp;rsquo;s called free tier by Amazon and offers a t2.micro instance having 1vCPU, 1 GB RAM and 30 GB of storage. I would fire up an instance now and then for trying out various services and just play around with it.&lt;/p&gt;
&lt;p&gt;I found about &lt;a href=&#34;https://yunohost.org/&#34;&gt;YunoHost&lt;/a&gt; while trying to install Matrix homeserver (Synapse). I was trying it through an &lt;a href=&#34;https://github.com/spantaleev/matrix-docker-ansible-deploy&#34;&gt;ansible playbook&lt;/a&gt; but failed to ssh into my instance using the playbook. I tried installing Synapse using YunoHost which too failed but I discovered various &lt;a href=&#34;https://yunohost.org/#/apps&#34;&gt;applications&lt;/a&gt; that can be installed on YunoHost.YunoHost installs on your Debian instance and give you a web interface to handle/install services. They explain it well &lt;a href=&#34;https://yunohost.org/#/whatsyunohost&#34;&gt;here&lt;/a&gt;.You can try them on their website &lt;a href=&#34;https://yunohost.org/#/try&#34;&gt;here&lt;/a&gt;. So amongst the list I was interested in Nextcloud and Searx. I dropped Nextcloud due to hardware limitations. I installed Searx and it&amp;rsquo;s been my daily driver ever since. It works well and returns results in under 1.5 sec on best cases and under 5 sec in worst cases scenarios. The average first load time is 2.4 sec and average full load time is 3.4 sec for my personal instance. Not relaying on external search provider due to privacy concern does feel good (though Searx is a meta-search engine, but you know what I mean).&lt;/p&gt;
&lt;p&gt;Lets me tell you how I installed it.&lt;/p&gt;
&lt;h3 id=&#34;basic-requirements&#34;&gt;Basic Requirements&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;A server with root access.&lt;/li&gt;
&lt;li&gt;Public IP for the server.&lt;/li&gt;
&lt;li&gt;Debian 10 Buster.&lt;/li&gt;
&lt;li&gt;(Optional) A domain. YunoHost provides &lt;em&gt;.nohost.me&lt;/em&gt;, &lt;em&gt;.noho.st&lt;/em&gt; or &lt;em&gt;.ynh.fr&lt;/em&gt; subdomains if you don&amp;rsquo;t have or want to use a personal one.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;table-of-content&#34;&gt;Table of Content&lt;/h3&gt;
&lt;p&gt;The installation process is divided into 5 step:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;#launch-and-configure-instance&#34;&gt;Launch and configure instance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#install-yunohost&#34;&gt;Install YunoHost&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#configure-dns&#34;&gt;Configure DNS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#configure-yunohost&#34;&gt;Configure YunoHost&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#install-searx&#34;&gt;Install Searx&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;installation&#34;&gt;Installation&lt;/h3&gt;
&lt;h4 id=&#34;launch-and-configure-instance&#34;&gt;Launch and configure instance&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Launch instance with Debian 10 Buster (YunoHost is based on Debian and won&amp;rsquo;t work on other distros).&lt;/li&gt;
&lt;li&gt;Update the system&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt upgrade -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Check port forwarding and allow inbound traffic on port 80 (TCP, HTTP), 443 (TCP, HTTPS) and port 22 for SSH.&lt;/li&gt;
&lt;li&gt;Note you&amp;rsquo;re public IP.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;install-yunohost&#34;&gt;Install YunoHost&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Install YunoHost using following command&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl https://install.yunohost.org &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;On prompts, allow.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;configure-dns&#34;&gt;Configure DNS&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Get a dedicated domain (&lt;em&gt;example.com&lt;/em&gt;) or subdomain (&lt;em&gt;subdomain.example.com&lt;/em&gt;). If not available follow &lt;a href=&#34;https://yunohost.org/#/dns_nohost_me&#34;&gt;this&lt;/a&gt; to get YunoHost provided domains.&lt;/li&gt;
&lt;li&gt;In you&amp;rsquo;re DNS panel, add a &lt;code&gt;A record&lt;/code&gt; with Hostname = &lt;em&gt;example.com&lt;/em&gt;, Destination IP = &lt;em&gt;11.22.33.44&lt;/em&gt; (server public IP) and for TTL, YunoHost recommends &lt;em&gt;3600&lt;/em&gt; but some DNS providers don&amp;rsquo;t allow that, so choose the minimum your provider allows.&lt;/li&gt;
&lt;li&gt;Basic DNS configuration ends here. If you plan on to add mail and xmpp servers, look for their DNS configuration &lt;a href=&#34;https://yunohost.org/#/dns_config&#34;&gt;here&lt;/a&gt; (only the bold part).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Note — Before proceeding further, wait for 10-15 min for DNS update to propagate, then check by using the &lt;code&gt;dig&lt;/code&gt; command.&lt;/em&gt;&lt;/p&gt;
&lt;h4 id=&#34;configure-yunohost&#34;&gt;Configure YunoHost&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Visit &lt;em&gt;example.com/yunohost/admin&lt;/em&gt;. It will throw certificate issues, accept and proceed (we&amp;rsquo;ll install certificate in the following steps).&lt;/li&gt;
&lt;li&gt;Next follow the screen instructions and choose a strong password. This URL and password would be used to enter the admin panel of the server.&lt;/li&gt;
&lt;li&gt;Next click on &lt;code&gt;Domains&lt;/code&gt; -&amp;gt; &lt;code&gt;example.com&lt;/code&gt; -&amp;gt; &lt;code&gt;Let&#39;s Encrypt&lt;/code&gt; to get a SSL certificate for the domain.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;install-searx&#34;&gt;Install Searx&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Click &lt;code&gt;Applications&lt;/code&gt; -&amp;gt; &lt;code&gt;Install&lt;/code&gt; -&amp;gt; &lt;code&gt;Small Utilities&lt;/code&gt; -&amp;gt; &lt;code&gt;Searx&lt;/code&gt;-&amp;gt; &lt;code&gt;Install&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Configure the default URLs or add a special one using above Configure DNS section above and add that through &lt;code&gt;Domains&lt;/code&gt; -&amp;gt; &lt;code&gt;Add domain&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Enjoy your own privacy respecting search engine.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Notes — If you want the Searx for your own usage, change permissions in Users section.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Complete documentation and forum links can be found &lt;a href=&#34;https://yunohost.org/#/docs&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Invidious Creator Steps Away From Open Source</title>
      <link>https://blog.sahilister.in/2020/08/invidious-creator-steps-away-from-open-source/</link>
      <pubDate>Tue, 11 Aug 2020 18:56:23 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/08/invidious-creator-steps-away-from-open-source/</guid>
      <description>&lt;p&gt;Recently &lt;a href=&#34;https://omar.yt/&#34;&gt;Omar Roth&lt;/a&gt;, creator of
&lt;a href=&#34;https://github.com/iv-org/invidious&#34;&gt;Invidious&lt;/a&gt;, &lt;a href=&#34;https://omar.yt/posts/stepping-away-from-open-source&#34;&gt;announced&lt;/a&gt; his stepping down from
Invidious lead developer as well as open source as a whole. He cited the mental toll and other reasons for the
same. This also result in shutting down of official Invidious instance,
&lt;a href=&#34;https://invidio.us/&#34;&gt;invidio.us&lt;/a&gt;. Invidious had largely been a &lt;a href=&#34;https://github.com/iv-org/invidious/commits/master&#34;&gt;one man
project&lt;/a&gt; (though occasional contributions
by others were made).&lt;/p&gt;
&lt;p&gt;Majority of FOSS projects usually begin as hobby project or something that solved a problem
faced by the creator. A few blows up which sometimes lead to burnouts for the
creators/developers/contributors if possible load balancing is not done.&lt;/p&gt;
&lt;p&gt;As of now, &lt;a href=&#34;https://github.com/Perflyst&#34;&gt;Perflyst&lt;/a&gt; (from &lt;a href=&#34;https://snopyta.org/&#34;&gt;Snopyta&lt;/a&gt;) has been promoted to &lt;a href=&#34;https://github.com/iv-org/invidious/issues/1320#issue-671221427&#34;&gt;project owner status&lt;/a&gt; by Omar. Perflyst replied -&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Please note that I am not a developer. Therefore, I will most likely not be able to implement
breaking changes from YouTube in Invidious.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;I will do my best to manage the issue section and to answer questions. Previous code
collaborations were also invited to the GitHub organization.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;— &lt;cite&gt;Perflyst&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That leaves behind the need of contributors who could solve breakages if anything changes from
YouTube&amp;rsquo;s side, do bug fixes and take the project forward. A major issue is that
Invidious is written in &lt;a href=&#34;https://en.wikipedia.org/wiki/Crystal_(programming_language)&#34;&gt;Crystal&lt;/a&gt;
and not many developer know or use. Though it leaves the playing field open for someone to jump in. Another thing that if it had been a
closed source software and invidio.us was the only instance, Invidious would have been lost
forever which might not be the case now as we have multiple &lt;a href=&#34;https://github.com/iv-org/invidious/wiki/Invidious-Instances&#34;&gt;public
instances&lt;/a&gt; running, some
accessible via TOR hidden services too.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: Here’s a great
&lt;a href=&#34;https://github.com/iv-org/invidious/issues/1320#issuecomment-667595476&#34;&gt;comment&lt;/a&gt; on the
alternatives for viewing YouTube. As of now, I would switch my Invidious embeds away from
invidio.us to probably Snopyta&amp;rsquo;s &lt;a href=&#34;https://invidious.snopyta.org/&#34;&gt;instance&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;“Project Future · Issue #1320 · Iv-Org/Invidious.” GitHub, &lt;a href=&#34;https://github.com/iv-org/invidious/issues/1320#issuecomment-667591533&#34;&gt;https://github.com/iv-org/invidious/issues/1320#issuecomment-667591533&lt;/a&gt;.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>compete - Typing Game, Post 2</title>
      <link>https://blog.sahilister.in/2020/08/compete-typing-game-post-2/</link>
      <pubDate>Sun, 09 Aug 2020 01:09:38 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/08/compete-typing-game-post-2/</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;a href=&#34;https://github.com/sahilister/compete&#34;&gt;Github repository&lt;/a&gt;&lt;/em&gt;,
&lt;em&gt;&lt;a href=&#34;https://blog.sahilister.in/2020/07/compete-typing-game-post-1/&#34;&gt;Previous&lt;/a&gt; and &lt;a href=&#34;https://blog.sahilister.in/2020/08/compete-typing-game-post-3/&#34;&gt;Next&lt;/a&gt; post in the series&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&#34;table-of-content&#34;&gt;Table of Content&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;#detailed-checklist&#34;&gt;Detailed Checklist&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#thoughts-and-learnings&#34;&gt;Thoughts and Learnings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#changelog&#34;&gt;Changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;detailed-checklist&#34;&gt;Detailed Checklist&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Local setup&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Keyboard character recognition&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Error recognition and highlighting&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Points system&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Text from Wikipedia API, random page&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Add variable timers&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Multiplayer mode&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Room creation using socket.io&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Implement local setup for each user&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Sync Wikipedia article&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Implement start and timer&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Sync timer&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Leaderboard&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; UI/UX redesign&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Homepage&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Match page&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Result page&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; AWS setup&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Offload to EC2 with Elastic Beanstalk&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Add site to &lt;a href=&#34;&#34;&gt;compete.sahilister.tech&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Add-ons&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Authentication&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Register&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Login&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Session management&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Profile&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Matches played&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Matches won&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Matches lost&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Average words/min&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;thoughts-and-learnings&#34;&gt;Thoughts and Learnings&lt;/h3&gt;
&lt;p&gt;I slacked off the previous ten days without any activity related to web development. Though is
recently tried &lt;a href=&#34;https://yunohost.org/#/&#34;&gt;YUNO HOST&lt;/a&gt; on my ec2 adding NextCloud, Element and
trying to make my Matrix server work. I plan on to add &lt;a href=&#34;https://asciimoo.github.io/searx/&#34;&gt;Searx&lt;/a&gt; too but almost every time the ec2
goes inaccessible maybe due to its same size (1 GB RAM with 8 GB storage and I guess 1 core).&lt;/p&gt;
&lt;p&gt;Will try viewing Brad Traversy&amp;rsquo;s tutorials and try implementing the base keyboard recognition
until the next post date.&lt;/p&gt;
&lt;h3 id=&#34;changelog&#34;&gt;Changelog&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Nothing&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Privacy and Security</title>
      <link>https://blog.sahilister.in/2020/08/privacy-and-security/</link>
      <pubDate>Wed, 05 Aug 2020 02:39:08 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/08/privacy-and-security/</guid>
      <description>&lt;p&gt;&lt;em&gt;Note — I&amp;rsquo;ll broadly focus on the digital/cyber side of privacy and security.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I always believed a secure system is equal to privacy
respecting system. After Bryan Lunduke uploaded
&lt;a href=&#34;https://www.youtube.com/watch?v=Kn22_64UvS8&#34;&gt;this&lt;/a&gt;
and
&lt;a href=&#34;https://www.youtube.com/watch?v=HG8Oxu7g7Gs&#34;&gt;this&lt;/a&gt;
video, they got me thinking that privacy and security
are inherently two different terms. Privacy partially
overlaps with security, but they many-a-times exist independently.&lt;/p&gt;
&lt;p&gt;First let&amp;rsquo;s go over textbook definitions of the terms.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Privacy&lt;/strong&gt; is the ability of an individual or group to seclude themselves or information about themselves, thereby express themselves selectively.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;— &lt;cite&gt;Wikipedia&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;and&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Cybersecurity&lt;/strong&gt; is the practice of protecting systems, networks, and programs from digital attacks. These cyberattacks are usually aimed at accessing, changing, or destroying sensitive information; extorting money from users; or interrupting normal business processes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;— &lt;cite&gt;Cisco&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In my terms, privacy means when one&amp;rsquo;s personal data is not seen, used or harvested without
permission. Person is fully in control how his data is handled and it&amp;rsquo;s visibility. Security is
when the software supporting a service is secure and no third party can break in. All known
vulnerabilities are fixed and active mitigation against any intrusion attempts are taken. Some
example of private services are &lt;a href=&#34;https://disroot.org/en&#34;&gt;Disroot&lt;/a&gt;,
&lt;a href=&#34;https://snopyta.org/&#34;&gt;Snopyta&lt;/a&gt; amongst others. &lt;a href=&#34;https://www.google.com/&#34;&gt;Google&lt;/a&gt; is example of
secure system. Services like Disroot don’t have an active security team monitoring their
services so many a times vulnerabilities slips through (these services are less likely of
getting attack to less ROI in compared to big services like Google which inherently gives
them protection). Opinions vary but this is what I think. Sometimes they overlap too, like in
case of &lt;a href=&#34;https://protonmail.com/&#34;&gt;ProtonMail&lt;/a&gt; but it&amp;rsquo;s less often.&lt;/p&gt;
&lt;p&gt;Recently, I was telling a friend about the dangers of using
&lt;a href=&#34;https://en.wikipedia.org/wiki/Android_application_package&#34;&gt;APK&lt;/a&gt;s from untrusted sources of
unknown origins. Into the conversation, he asked me what security practices should he follow. I
advised him to get apps from Play Store only and put his trust in Google Play Security team. Though in the back of my mind, during the conversation, I had that from privacy context, non in their sane mind would
recommend Google services.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: Another takeaway from the discussion was the question
of threat models. Maybe I&amp;rsquo;ll write about that some other day.&lt;/em&gt;&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Privacy&#34;&gt;&amp;ldquo;Privacy&amp;rdquo;&lt;/a&gt;. &lt;em&gt;Wikipedia&lt;/em&gt;.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://www.cisco.com/c/en/us/products/security/what-is-cybersecurity.html&#34;&gt;&amp;ldquo;What is Cybersecurity?&amp;rdquo;&lt;/a&gt;. &lt;em&gt;Cisco&lt;/em&gt;.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>compete - Typing Game, Post 1</title>
      <link>https://blog.sahilister.in/2020/07/compete-typing-game-post-1/</link>
      <pubDate>Tue, 28 Jul 2020 01:09:38 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/07/compete-typing-game-post-1/</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;a href=&#34;https://github.com/sahilister/compete&#34;&gt;Github repository&lt;/a&gt;&lt;/em&gt;,
&lt;em&gt;&lt;a href=&#34;https://blog.sahilister.in/2020/08/compete-typing-game-post-2/&#34;&gt;Next&lt;/a&gt; post in the series.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Today I&amp;rsquo;m committing to working on compete. Compete is an online multiplayer typing
game which I intend to work upon. Now that my college require me to submit a project,
I&amp;rsquo;ll work on compete.&lt;/p&gt;
&lt;p&gt;This is first in series of posts I&amp;rsquo;ll write each day having 8 in its date i.e. 8, 18, 28 of the month; updating about the status
of work. Initial timeline is 2 months starting from July 28th, 2020 ending on September
28th, 2020 (coincidentally next day of my birthday).&lt;/p&gt;
&lt;h2 id=&#34;table-of-content&#34;&gt;Table of Content&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;#detailed-checklist&#34;&gt;Detailed Checklist&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#thoughts-and-learnings&#34;&gt;Thoughts and Learnings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#changelog&#34;&gt;Changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;detailed-checklist&#34;&gt;Detailed Checklist&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Local setup&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Keyboard character recognition&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Error recognition and highlighting&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Points system&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Text from Wikipedia API, random page&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Add variable timers&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Multiplayer mode&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Room creation using socket.io&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Implement local setup for each user&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Sync Wikipedia article&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Implement start and timer&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Sync timer&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Leaderboard&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; UI/UX redesign&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Homepage&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Match page&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Result page&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; AWS setup&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Offload to EC2 with Elastic Beanstalk&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Add site to &lt;a href=&#34;&#34;&gt;compete.sahilister.tech&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Add-ons&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Authentication&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Register&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Login&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Session management&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Profile&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Matches played&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Matches won&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Matches lost&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Average words/min&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;thoughts-and-learnings&#34;&gt;Thoughts and Learnings&lt;/h3&gt;
&lt;p&gt;In my 3rd year of my college, we used to play
&lt;a href=&#34;https://play.typeracer.com/&#34;&gt;typeracer&lt;/a&gt; a lot. We used to host rooms and tell
classmates to join. Maybe that was the initial inspiration behind it.&lt;/p&gt;
&lt;p&gt;Through the
project I want to work on React(for frontend), Node.js (for backend server), Express (Node.js framework), Amazon Elastic Compute
Cloud (a virtual computer) which is fun, AWS Elastic Beanstalk (in place of Heroku, for application deployment on EC2), Socket.IO (for bi-directional communication b/w client and server)
and maybe p5.js (for visual features).&lt;/p&gt;
&lt;p&gt;And above all get compete with friends in typing on my personal domain at &lt;a href=&#34;&#34;&gt;compete.sahilister.tech&lt;/a&gt; is the main motivation.&lt;/p&gt;
&lt;h3 id=&#34;changelog&#34;&gt;Changelog&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added introduction to project&lt;/li&gt;
&lt;li&gt;Added detailed checklist section&lt;/li&gt;
&lt;li&gt;Added thoughts and learnings section&lt;/li&gt;
&lt;li&gt;Added changelog section&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Invidious embed instead of Youtube&#39;s</title>
      <link>https://blog.sahilister.in/2020/07/invidious-embed-instead-of-youtubes/</link>
      <pubDate>Sun, 26 Jul 2020 03:49:20 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/07/invidious-embed-instead-of-youtubes/</guid>
      <description>&lt;p&gt;When I thought about writing my blog post titled &lt;em&gt;&lt;a href=&#34;https://blog.sahilister.in/2020/07/to-zinda-ho-tum/&#34;&gt;To Zinda Ho
Tum&lt;/a&gt;&lt;/em&gt;, I was dilemma.
Situation being, I couldn&amp;rsquo;t simply copy the poem in my blog. A simple attribution
wouldn&amp;rsquo;t be enough. Then I remembered about Farhan Akhar&amp;rsquo;s
&lt;a href=&#34;https://www.youtube.com/watch?v=Lni3YbDRmpY&#34;&gt;narration&lt;/a&gt; of the poem for the movie
&lt;a href=&#34;https://en.wikipedia.org/wiki/Zindagi_Na_Milegi_Dobara&#34;&gt;&lt;em&gt;ZKMD&lt;/em&gt;&lt;/a&gt;. I thought about embedding this video along with my thoughts on it.&lt;/p&gt;
&lt;p&gt;Now another dilemma arouse as YouTube even in it&amp;rsquo;s &amp;ldquo;&lt;em&gt;Privacy-Enhanced mode&lt;/em&gt;&amp;rdquo; embed states:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When you turn on privacy-enhanced mode, YouTube won&amp;rsquo;t store information about visitors on your website unless they play the video.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;— &lt;em&gt;YouTube&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The last part troubled me. If a visitor on my blog views the video, he would be unknowingly feeding their information to YouTube and Google service for ad tracking.&lt;/p&gt;
&lt;p&gt;Then I remembered about &lt;a href=&#34;https://github.com/iv-org/invidious&#34;&gt;Invidious&lt;/a&gt;, an open
source, alternate privacy centric front to YouTube which doesn&amp;rsquo;t track. Delighted, I
searched how to embed video using Invidious&amp;rsquo;s official instance
&lt;a href=&#34;https://www.invidio.us/&#34;&gt;invidio.us&lt;/a&gt; but to no avail. A reply in the forum post finally helped. It said to replace YouTube&amp;rsquo;s URL in the embed code with invidio.us&amp;rsquo;s. Tried and it worked. Now I could embed any YouTube video without Google&amp;rsquo;s tracking.&lt;/p&gt;
&lt;h4 id=&#34;about-invidious&#34;&gt;About Invidious&lt;/h4&gt;
&lt;p&gt;Invidious is an alternative front-end to YouTube licensed under AGPLv3+. Other than
privacy feature, it supports Audio-only mode, Onion support, Dark mode, doesn&amp;rsquo;t require JavaScript to
play video, doesn&amp;rsquo;t require Google account to save subscriptions and absolutely no
ads.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.invidio.us/&#34;&gt;invidio.us&lt;/a&gt; is the official instance.
List of other public instances can be found &lt;a href=&#34;https://github.com/iv-org/invidious/wiki/Invidious-Instances&#34;&gt;here&lt;/a&gt;.
Some instances offer downloads too.&lt;/p&gt;
&lt;h4 id=&#34;for-hugo-users&#34;&gt;For Hugo users&lt;/h4&gt;
&lt;p&gt;Hugo provides shortcodes for
&lt;a href=&#34;https://gohugo.io/content-management/shortcodes/#vimeo&#34;&gt;Vimeo&lt;/a&gt;,
&lt;a href=&#34;https://gohugo.io/content-management/shortcodes/#youtube&#34;&gt;YouTube&lt;/a&gt; and a bunch
of
&lt;a href=&#34;https://gohugo.io/templates/shortcode-templates/#more-shortcode-examples&#34;&gt;services&lt;/a&gt;.
A &lt;a href=&#34;https://gohugo.io/content-management/shortcodes/&#34;&gt;shortcode&lt;/a&gt; is a simple HTML
snippet inside a content file that Hugo will render using predefined template. It can
accept arguments too. For example in our case the link of the video.&lt;/p&gt;
&lt;p&gt;Invidious doesn&amp;rsquo;t have a predefined shortcode in Hugo, so we&amp;rsquo;ll go into how I created
one for this &lt;a href=&#34;https://blog.sahilister.in/2020/07/to-zinda-ho-tum/&#34;&gt;post&lt;/a&gt;. Let&amp;rsquo;s create:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Make a new sub-directory inside &lt;code&gt;layouts&lt;/code&gt;. Name it &lt;code&gt;shortcodes&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Inside &lt;code&gt;shortcodes&lt;/code&gt;, create a file named &lt;code&gt;invidious.html&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Define your shortcode HTML inside it.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;embed-container&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; _ &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;iframe&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;https://invidio.us/embed/{{ index .Params 0 }}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	 &lt;span class=&#34;na&#34;&gt;frameborder&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;0&amp;#39;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;allowfullscreen&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  _&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;iframe&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Notice the&lt;/em&gt; &lt;code&gt;{{ index .Params 0}}&lt;/code&gt; . &lt;em&gt;This accepts the link argument from content file.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Now let&amp;rsquo;s use the shortcode:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Inside you&amp;rsquo;re content file, write&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{{ &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;invidious&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;LINK&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt; }}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Link here only means the alphanumeric text after &lt;strong&gt;&amp;quot;=&amp;quot;&lt;/strong&gt; in video URL like
&lt;strong&gt;Lni3YbDRmpY&lt;/strong&gt; in &lt;a href=&#34;https://invidio.us/watch?v=Lni3YbDRmpY&#34;&gt;https://invidio.us/watch?v=Lni3YbDRmpY&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note&lt;/strong&gt; — To use above shortcode, there is no space between the curly brackets and side
arrows like shown &lt;a href=&#34;https://paste.debian.net/plain/1157847&#34;&gt;here&lt;/a&gt;. Writing shortcode triggered my
shortcode implementation, so had to resort to putting a link.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Learn more about creating your shortcode &lt;a href=&#34;https://gohugo.io/templates/shortcode-templates/&#34;&gt;here&lt;/a&gt; or see a
list of codes for some other shortcodes
&lt;a href=&#34;https://github.com/spf13/spf13.com/tree/master/layouts/shortcodes&#34;&gt;here&lt;/a&gt; and &lt;a href=&#34;https://github.com/gohugoio/hugo/tree/master/docs/layouts/shortcodes&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: Now that invidio.us is no longer available, try
&lt;a href=&#34;https://invidious.snopyta.org/&#34;&gt;invidious.snopyta.org&lt;/a&gt; or one from the list of &lt;a href=&#34;https://github.com/iv-org/invidious/wiki/Invidious-Instances&#34;&gt;public
instances&lt;/a&gt; for the embed.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PSS: I wrote a The creator of Invidious, Omar Roth stepped away from the project, my thoughts
about it can be found
&lt;a href=&#34;https://blog.sahilister.in/2020/08/invidious-creator-steps-away-from-open-source/&#34;&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Text taken from YouTube&amp;rsquo;s embed section. Can be viewed by clicking on video share button, then embed and hovering over &lt;strong&gt;i&lt;/strong&gt; icon.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>To Zinda Ho Tum</title>
      <link>https://blog.sahilister.in/2020/07/to-zinda-ho-tum/</link>
      <pubDate>Thu, 23 Jul 2020 01:32:55 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/07/to-zinda-ho-tum/</guid>
      <description>&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
&lt;/style&gt;
&lt;div class=&#39;embed-container&#39;&gt;
  &lt;iframe src=&#39;https://invidious.snopyta.org/embed/Lni3YbDRmpY&#39; frameborder=&#39;0&#39; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;&lt;i&gt; &lt;div style=&#34;text-align: center&#34;&gt;Video Credit - &lt;a
href=&#34;https://youtu.be/Lni3YbDRmpY&#34;&gt;T-Series&lt;/a&gt; &lt;/div&gt; &lt;/i&gt;&lt;/p&gt;
&lt;h4 id=&#34;rough-translation&#34;&gt;Rough Translation:&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;If you&amp;rsquo;re moving with eagerness in your heart,&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;then you&amp;rsquo;re alive!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;p&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you have sparks of dreams in your eyes,&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;then you&amp;rsquo;re alive!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;p&gt; &lt;br /&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Learn to be free like gusts of wind,&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Learn to flow like river,&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Meet each moment with open arms,&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Every moment these eyes look at a new weather,&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;p&gt; &lt;br /&gt;&lt;/em&gt;
&lt;em&gt;If you&amp;rsquo;re moving with bewilderment in your eyes,&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;then you&amp;rsquo;re alive!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;p&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you&amp;rsquo;re moving with eagerness in heart,&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;then you&amp;rsquo;re alive!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;h4 id=&#34;thoughts&#34;&gt;Thoughts&lt;/h4&gt;
&lt;p&gt;Yesterday I was browsing &lt;a href=&#34;https://en.wikipedia.org/wiki/Atul_Chitnis&#34;&gt;Atul Chitnis&lt;/a&gt;&amp;rsquo;s
&lt;a href=&#34;http://atulchitnis.net/&#34;&gt;blog&lt;/a&gt;. He had posted
&lt;em&gt;&lt;a href=&#34;http://atulchitnis.net/2013/toh-zinda-ho-tum-then-you-are-alive/&#34;&gt;Toh Zinda Ho Tum&lt;/a&gt;&lt;/em&gt; by Javed
Akhtar. Reading it, I felt how much I love these lines, how different I feel every time
listening to these lines, hence decided posted it here.&lt;/p&gt;
&lt;p&gt;Poems in the movie &lt;a href=&#34;https://en.wikipedia.org/wiki/Zindagi_Na_Milegi_Dobara&#34;&gt;&lt;em&gt;Zindagi Na Milegi
Dobara&lt;/em&gt;&lt;/a&gt; are gems in themselves.
Beautifully penned by the Great Javed Akhtar and narrated by Farhan Akhtar. Listen to the
complete playlist; on Invidious
&lt;a href=&#34;https://invidio.us/playlist?list=PL9bw4S5ePsEH3tOw-4lH5Ehv8fn89RyZx&#34;&gt;here&lt;/a&gt; or on YouTube
&lt;a href=&#34;https://www.youtube.com/watch?v=ZmAYoJUsFEs&amp;amp;list=PL9bw4S5ePsEH3tOw-4lH5Ehv8fn89RyZx&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: The embed uses Invidious (&lt;a href=&#34;https://www.invidio.us/&#34;&gt;invidio.us&lt;/a&gt;), an &lt;a href=&#34;https://github.com/iv-org/invidious&#34;&gt;open
source&lt;/a&gt;, privacy respecting front end to YouTube
instead of official YouTube embed.  To know about my dilemma about not embedding YouTube
into my blog (for privacy reasons) and finally using Invidious to achieve it, read
&lt;a href=&#34;https://blog.sahilister.in/2020/07/invidious-embed-instead-of-youtubes/&#34;&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PSS: The creator of Invidious, Omar Roth stepped away from the project, my thoughts about it
can be found
&lt;a href=&#34;https://blog.sahilister.in/2020/08/invidious-creator-steps-away-from-open-source/&#34;&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Firefox Monitor</title>
      <link>https://blog.sahilister.in/2020/07/firefox-monitor/</link>
      <pubDate>Mon, 20 Jul 2020 15:44:54 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/07/firefox-monitor/</guid>
      <description>&lt;p&gt;I have always preferred Firefox due to their approach to privacy as well as providing a viable alternative to Google backed Chromium/Chrome. Recently I also started using Thunderbird for Gmail (slowly trying to switch to ProtonMail). I couldn’t figure out why Gmail on Firefox for Linux with my extensions make the Gmail web client crawl.&lt;/p&gt;
&lt;p&gt;Coming to &lt;a href=&#34;https://monitor.firefox.com/&#34;&gt;Firefox Monitor&lt;/a&gt;. It&amp;rsquo;s an online service to see if an account has been part of any public data breach. It sends out email alerts with name of service breach as well as data assumed compromised with the service. The service is free and you can learn more about data breaches and how Firefox Monitor helps &lt;a href=&#34;https://support.mozilla.org/en-US/kb/firefox-monitor-faq&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;my-experience&#34;&gt;My Experience&lt;/h4&gt;
&lt;p&gt;Today i received a breach &lt;a href=&#34;https://monitor.firefox.com/breach-details/Wattpad&#34;&gt;alert&lt;/a&gt; for Wattpad. &lt;a href=&#34;https://www.wattpad.com&#34;&gt;Wattpad&lt;/a&gt; is a website for readers and writers to publish new user-generated stories in different genres. The breach exposed almost 270 million records including names, usernames, email, IP address, genders, date of birth and passwords as bcrypt hashes.&lt;cite&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;Bear in mind, Wattpad didn&amp;rsquo;t contact me or anyone to inform about the data compromised. No public disclosure was done to inform users to change their credentials. Companies tend to hide these kinds of breaches for PR purposes but it leads to privacy and security concerns. This is also an added benefit of using Firefox Monitor.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Side note — Check&lt;/em&gt; &lt;a href=&#34;https://haveibeenpwned.com/&#34;&gt;&lt;em&gt;have i been pwned?&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. Instantly check your account for any compromises. Firefox Monitor works with it to provide alerts.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;As for Wattpad, I don&amp;rsquo;t use the service anymore so I contacted customer service for data deletion request. The procedure is as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Email &lt;em&gt;privacy@wattpad.com&lt;/em&gt; with subject line: &lt;code&gt;Permanent Account Deletion&lt;/code&gt; with the email address linked to Wattpad account.&lt;/li&gt;
&lt;li&gt;An automated confirmation mail with usual warning will arrive about losing libraries, reading lists, messages, comments and personal written works. Reply to this mail with an agreement to deletion as well as your username to proceed.&lt;/li&gt;
&lt;li&gt;Done.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;PS: Firefox shows dialog box with breach alerts with info if you visit such site.&lt;/em&gt;&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://haveibeenpwned.com/PwnedWebsites#Wattpad&#34;&gt;&amp;ldquo;Have I Been Pwned: Pwned websites&amp;rdquo;&lt;/a&gt;. &lt;em&gt;haveibeenpwned.com&lt;/em&gt;.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Duckduckgo bangs!</title>
      <link>https://blog.sahilister.in/2020/07/duckduckgo-bangs/</link>
      <pubDate>Tue, 14 Jul 2020 17:36:32 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/07/duckduckgo-bangs/</guid>
      <description>&lt;p&gt;Apart from privacy centric, non-profiled search results; bangs are one of the more underrated features offered by &lt;a href=&#34;https://duckduckgo.com/&#34;&gt;Duckduckgo&lt;/a&gt; (now also available on &lt;a href=&#34;https://duck.com&#34;&gt;duck.com&lt;/a&gt;). &lt;a href=&#34;https://duckduckgo.com/bang?q=&#34;&gt;Bangs&lt;/a&gt; are shortcuts that take you to search results on other sites. Right now there&amp;rsquo;re more than 13,500 bangs available.&lt;/p&gt;
&lt;p&gt;Syntax for bang -  &lt;em&gt;!bang&lt;/em&gt; &lt;em&gt;SEARCH-TERM&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Example - &lt;em&gt;!w Linux&lt;/em&gt; will get you to Wikipedia&amp;rsquo;s Linux &lt;a href=&#34;https://en.wikipedia.org/wiki/Linux&#34;&gt;entry&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;- Examples here assume that you’re on Duckduckgo or have it as default search engine.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Some other example are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;!yt video-title&lt;/em&gt; for Youtube.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;!a&lt;/em&gt; for Amazon.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;!r&lt;/em&gt; for Reddit.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To search for bang for your favorite site,
&lt;em&gt;!bang favorite-site&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If a site&amp;rsquo;s bang isn&amp;rsquo;t available, simply submit new bangs &lt;a href=&#34;https://duckduckgo.com/newbang&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Bangs can be used as shortcuts too. Instead of typing &lt;a href=&#34;https://www.youtube.com/&#34;&gt;youtube.com&lt;/a&gt; , only typing &lt;em&gt;!yt&lt;/em&gt; would do the same.&lt;/p&gt;
&lt;h4 id=&#34;my-favorite-bangs&#34;&gt;My favorite bangs:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;!w&lt;/em&gt; for Wikipedia articles.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;!yt&lt;/em&gt; for Youtube.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;!ia&lt;/em&gt; for Internet Archive Wayback Machine.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;!nyt&lt;/em&gt; for New York Times.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;!mdn&lt;/em&gt; for Mozilla Developer Network.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;!di&lt;/em&gt; for Dictionary.com&lt;/li&gt;
&lt;li&gt;&lt;em&gt;!iid&lt;/em&gt; for isitdownrightnow.com&lt;/li&gt;
&lt;li&gt;&lt;em&gt;!osm&lt;/em&gt; for Open Street Maps.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;!translate&lt;/em&gt; for Google Translate.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Fun fact - The company name is a reference to the children&amp;rsquo;s game duck, duck, goose. &lt;cite&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;From Washington Post&amp;rsquo;s article - &lt;a href=&#34;https://www.washingtonpost.com/business/ducking-google-in-search-engines/2012/11/09/6cf3af10-2842-11e2-bab2-eda299503684_story.html&#34;&gt;&amp;ldquo;Ducking Google in search engines&amp;rdquo;&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Alias command</title>
      <link>https://blog.sahilister.in/2020/07/alias-command/</link>
      <pubDate>Wed, 08 Jul 2020 02:26:10 +0530</pubDate>
      <author>Sahil Dhiman</author>
      <guid>https://blog.sahilister.in/2020/07/alias-command/</guid>
      <description>&lt;p&gt;Writing long commands is boring. Making commands smaller or chaining of commands helps. This can be achieved using &lt;code&gt;alias&lt;/code&gt; command. &lt;a href=&#34;https://en.wikipedia.org/wiki/Alias_(command)&#34;&gt;Alias&lt;/a&gt; command is mainly used for abbreviating a system command, or for adding default arguments to a regularly used command.&lt;/p&gt;
&lt;p&gt;For example, instead of writing:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git add .  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;COMMIT MESSAGE&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;we can write following to achieve the same goals.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gc &lt;span class=&#34;s2&#34;&gt;&amp;#34;COMMIT MESSAGE&amp;#34;&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gp  
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In the example, git commands were chained. Git doesn&amp;rsquo;t allow chaining using &lt;code&gt;git alias&lt;/code&gt; command but we can simply overcome that by &lt;code&gt;alias&lt;/code&gt; command as shown above. Do visit  &lt;a href=&#34;https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases&#34;&gt;git-scm.com&lt;/a&gt; to evaluate what&amp;rsquo;s best for your use case.&lt;/p&gt;
&lt;h2 id=&#34;usage&#34;&gt;Usage&lt;/h2&gt;
&lt;h3 id=&#34;for-gnulinux-bash&#34;&gt;For GNU/Linux (bash)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Add &lt;code&gt;.bash_aliases&lt;/code&gt; file in &lt;code&gt;~&lt;/code&gt; &lt;code&gt;/home/USER_NAME&lt;/code&gt; directory:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ touch ~/.bash_aliases
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Edit the file to add:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;alias&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;gc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;git add . &amp;amp;&amp;amp; git commit -m &amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;alias&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;gp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;git push&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Note - no spaces between the alias target and alias input commands and single quotes only.&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In terminal, write:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ &lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; ~/.bash_aliases
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Restart terminal.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;for-windows-git-bash&#34;&gt;For Windows (Git Bash)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Run git bash in administrator mode.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Navigate to &lt;code&gt;C:\Program Files\Git\etc\profile.d&lt;/code&gt; .&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ../../Program&lt;span class=&#34;se&#34;&gt;\ &lt;/span&gt;Files/Git/etc/profile.d/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Open &lt;code&gt;aliases.sh&lt;/code&gt; using &lt;code&gt;nano&lt;/code&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nano aliases.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Add following in the end:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# CUSTOM ALIASES&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;alias&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;gc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;git add . &amp;amp;&amp;amp; git commit -m&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;alias&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;gp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;git push&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Note - no spaces between the alias target and alias input commands and single quotes only.&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Save and exit &lt;code&gt;nano&lt;/code&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CTRL+O 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# PRESS ENTER&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CTRL+X 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Restart terminal.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;use-cases&#34;&gt;Use Cases&lt;/h2&gt;
&lt;p&gt;Some useful aliases can be:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;alias&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;update&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;sudo apt update &amp;amp;&amp;amp; sudo apt upgrade&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;alias&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;rm&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;rm -i&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;alias&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;gc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;git add . &amp;amp;&amp;amp; git commit - &amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;alias&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;gp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;git push&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;alias&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;gr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;git restore --staged&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;My bash aliases can be found &lt;a href=&#34;https://git.fosscommunity.in/sahilister/dotfiles&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    
    
    
  </channel>
</rss>
