<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Reference on Janusworx</title><link>https://janusworx.com/tags/reference/</link><description>Recent content in Reference on Janusworx</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>feedback@janusworx.com (Mario Jason Braganza)</managingEditor><webMaster>feedback@janusworx.com (Mario Jason Braganza)</webMaster><copyright>© 2026, Mario Jason Braganza</copyright><lastBuildDate>Sat, 18 Nov 2023 09:37:35 +0530</lastBuildDate><atom:link href="https://janusworx.com/tags/reference/index.xml" rel="self" type="application/rss+xml"/><item><title>Getting Emacs Windows to Not Be Shy</title><link>https://janusworx.com/work/getting-emacs-windows-to-not-be-shy/</link><pubDate>Sat, 18 Nov 2023 09:37:35 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/getting-emacs-windows-to-not-be-shy/</guid><description>&lt;p&gt;Figuring out my webapps problem yesterday made me ask myself if I could somehow repurpose that little &lt;code&gt;xdotool&lt;/code&gt; script to solve another niche itch that I had.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Spoiler alert: It did.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I run &lt;a href="https://www.emacswiki.org/emacs/EmacsAsDaemon" target="_blank" rel="noreferrer"&gt;Emacs as a daemon&lt;/a&gt;, and use EmacsClient to connect to the Emacs process.&lt;br&gt;
Makes it really ease to launch, work on, sling around and close lots of Emacs windows.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Which brings me to the hiccough. I launch EmacsClient and a window (frame) does indeed launch, but it just … stays there in the background.&lt;/p&gt;
&lt;hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;'/&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2023/ec-err-1.png" alt="" /&gt;
 
 
 &lt;/figure&gt;
&lt;hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;'/&gt;

&lt;p&gt;Repeated attempts to launch EmacsClient are to no avail.&lt;br&gt;
The pesky little windows just pile up in their corner.&lt;/p&gt;

&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2023/ec-err-2.png" alt="" /&gt;
 
 
 &lt;/figure&gt;
&lt;hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;'/&gt;

&lt;p&gt;Ergo, this little bit of Bash/xdotool shenanigans …&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/usr/bin/env bash 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;EMACSWINID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;xdotool search &lt;span class="s2"&gt;&amp;#34;\*scratch\*&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; tail -n1&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$EMACSWINID&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; xdotool windowactivate &lt;span class="nv"&gt;$EMACSWINID&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; sh -c &lt;span class="s1"&gt;&amp;#39;emacsclient --create-frame --no-wait --alternate-editor=&amp;#34;&amp;#34; &amp;amp;&amp;amp; export EMACSWINID=$(xdotool search &amp;#34;\*scratch\*&amp;#34; | tail -n1) &amp;amp;&amp;amp; xdotool windowactivate $EMACSWINID&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Check to see if an Emacs scratch buffer is open. If it is, switch to it.&lt;/li&gt;
&lt;li&gt;Otherwise, just launch EmacsClient, get the id of the scratch buffer window (frame) and raise it, so that I can work on it. In peace.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;'/&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2023/ec-err-3.png" alt="An Emacs frame in the foreground" /&gt;
 
 
 &lt;/figure&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;&lt;em&gt;Cue: sounds of relief, in the background&lt;/em&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;p&gt;&lt;hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;'/&gt;

Feedback on this post? Mail me at &lt;a href="mailto:&amp;amp;#102;&amp;amp;%23101;&amp;amp;%23101;&amp;amp;%23100;&amp;amp;%2398;&amp;amp;%2397;&amp;amp;%2399;&amp;amp;%23107;&amp;amp;%2364;&amp;amp;%23106;&amp;amp;%2397;&amp;amp;%23110;&amp;amp;%23117;&amp;amp;%23115;&amp;amp;%23119;&amp;amp;%23111;&amp;amp;%23114;&amp;amp;%23120;&amp;amp;%2346;&amp;amp;%2399;&amp;amp;%23111;&amp;amp;%23109;" &gt;feedback@janusworx.com&lt;/a&gt;
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit.&lt;/a&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Frames, in Emacs parlance&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Having My Emacs Tasks and Notes Ready</title><link>https://janusworx.com/work/having-my-emacs-tasks-and-notes-ready/</link><pubDate>Thu, 16 Nov 2023 18:56:38 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/having-my-emacs-tasks-and-notes-ready/</guid><description>&lt;p&gt;&lt;a href="https://janusworx.com/work/having-my-emacs-tasks-and-notes-ready/#update-2023-11-17" &gt;&lt;em&gt;Updated: 2023-11-17. Read more below&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Nearly everything I write is in Emacs.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;br&gt;
It’s been slightly more than two years, since I made the move to using it as my everyday text editor.&lt;br&gt;
I have a spartan Emacs config, with only a few customisations, that I found by watching David Wilson aka System Crafters’ &lt;a href="https://www.youtube.com/live/74zOY-vgkyw" target="_blank" rel="noreferrer"&gt;Emacs From Scratch #1&lt;/a&gt; video and the rest by searching on the web and asking around on the fediverse.&lt;/p&gt;
&lt;p&gt;I’ve touched my config only about three times; basically every time I’ve found a new use for emacs.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;When I started editing text&lt;/li&gt;
&lt;li&gt;When I start using it as my Organiser (&lt;a href="https://orgmode.org/features.html" target="_blank" rel="noreferrer"&gt;Org Mode&lt;/a&gt;) and&lt;/li&gt;
&lt;li&gt;When I began using it as my Zettelkasten (&lt;a href="https://www.orgroam.com/" target="_blank" rel="noreferrer"&gt;Org Roam&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Which is to say, I know only the bare bones of how Emacs configuration and Elisp work.&lt;/p&gt;
&lt;p&gt;And yet … and yet …&lt;br&gt;
I have this itch that rankles.&lt;br&gt;
You see, every morning I sit at the computer with my cup of coffee, and pull up my tasks and notes and the agenda for the day.&lt;br&gt;
Now I don’t use the agenda much, but the tasks and notes are a must.&lt;br&gt;
So I open the tasks file and maximize my window and then I split my frame and I open the notes file, and then I go back to my tasks and I have it all ready just the way I like it.&lt;br&gt;
Thing is, I’m grumpy in the morning and doing all that grates on me.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://youtu.be/RMgaDqgv5u4?t=20" target="_blank" rel="noreferrer"&gt;There’s gotta be a better way!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So I tried looking around, and came to the conclusion that creating a function, that did all this for me, would be the best thing.&lt;br&gt;
But I know no Elisp.&lt;br&gt;
And right now, I have no time to put into learning it. I did spend close to a day looking at what I could whip up, to no avail.&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;So the next best idea I came up with, was recording my actions, doing the file opening, window arranging dance, as a macro and then assigning a keyboard shortcut to it.&lt;br&gt;
That turned out to be iffy.&lt;br&gt;
It’d work fine when I created it, but when I restarted my Emacs daemon (or my system) and then call it again, Emacs would freeze.&lt;/p&gt;
&lt;p&gt;My intuition told me that it could be the fact, that a recorded macro&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt; could not handle opening files and switching buffers.&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;br&gt;
Then I realised that I could outsource &lt;em&gt;that&lt;/em&gt; part to the command line or my application launcher&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt; and leave the rest of it to the macro.&lt;/p&gt;
&lt;hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;'/&gt;

&lt;p&gt;So I did just that. I created a Ulauncher shortcut.&lt;br&gt;
It binds the keyword &lt;code&gt;etn&lt;/code&gt; to the command:&lt;br&gt;
&lt;code&gt;emacsclient -c --no-wait ~/path/to/tasks.org ~/path/to/my/notes.org&lt;/code&gt;&lt;br&gt;
so that Emacs opens both my tasks and notes files as it fires up.&lt;/p&gt;

&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2023/etn-ulauncher.png" alt="" /&gt;
 
 
 &lt;/figure&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;A Ulauncher window, with name, keyword and the actual command to launch emacs&lt;/p&gt;
&lt;/figcaption&gt;
&lt;hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;'/&gt;

&lt;p&gt;And in Emacs I bound a keyboard macro, to the rest of the recorded macro code that would&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Maximise the frame&lt;/li&gt;
&lt;li&gt;Split the frame into two windows, with my tasks on top and the notes in the bottom&lt;/li&gt;
&lt;li&gt;Have the cursor be ready at the place I needed it to be.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-elisp" data-lang="elisp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;defalias&lt;/span&gt; &lt;span class="ss"&gt;&amp;#39;mjbtn&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;kmacro&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;M-x t o g g l e - f r a m e - m a x i m i z e d &amp;lt;return&amp;gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; C-x 2 C-x o C-x b n o t e s . o r g &amp;lt;return&amp;gt; C-x o M-g g 3 6 &amp;lt;return&amp;gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;;; Assign a keyboard shortcut to the macro above: C-c z&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-set-key&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;kbd&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;C-c z&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ss"&gt;&amp;#39;mjbtn&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;'/&gt;
&lt;br&gt;
Et voilà! I have everything, just the way I want it.&lt;br&gt;
And while it might not be fancy, it works without a fuss!&lt;br&gt;
&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2023/etn-emacs.png" alt="" /&gt;
 
 
 &lt;/figure&gt;&lt;/p&gt;
&lt;hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;'/&gt;


&lt;h3 class="relative group"&gt;Update: 2023-11-17
 &lt;div id="update-2023-11-17" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#update-2023-11-17" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;One advantage of writing about what you do and putting it out there, is that really kind souls come along and teach you new things!&lt;br&gt;
One of them is &lt;a href="https://mastodon.social/@laotang" target="_blank" rel="noreferrer"&gt;@laotang&lt;/a&gt;, over on the Fediverse.&lt;br&gt;
Remember when I said, the best solution would be to write an Emacs function that would do what I wanted?&lt;br&gt;
Well, laotang loved my tinkering and then went on to &lt;a href="https://mastodon.social/@laotang/111424355930361393" target="_blank" rel="noreferrer"&gt;give me just that&lt;/a&gt;!&lt;br&gt;
I raise my cup of coffee to you, Sir! You made my day! Thank you, so much!&lt;/p&gt;
&lt;p&gt;Here’s the code he suggested.Worked like a charm!&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-elisp" data-lang="elisp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;defun&lt;/span&gt; &lt;span class="nv"&gt;getting-ready&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;Getting ready for work.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;interactive&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;toggle-frame-maximized&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;split-window-below&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;find-file&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;~/path/to/notes/notes.org&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;find-file-other-window&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;~/path/to/tasks/tasks.org&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-set-key&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;kbd&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;C-c r&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ss"&gt;&amp;#39;getting-ready&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Oh, and if you liked how Org-Roam worked in the past? When it was all just text files?&lt;br&gt;
Well, if you want something like that, check out laotang’s feature-complete&lt;sup id="fnref:6"&gt;&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref"&gt;6&lt;/a&gt;&lt;/sup&gt; replica, &lt;a href="https://github.com/rtrppl/orgrr" target="_blank" rel="noreferrer"&gt;ORGRR&lt;/a&gt;
&lt;hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;'/&gt;

Feedback on this post? Mail me at &lt;a href="mailto:&amp;amp;#102;&amp;amp;%23101;&amp;amp;%23101;&amp;amp;%23100;&amp;amp;%2398;&amp;amp;%2397;&amp;amp;%2399;&amp;amp;%23107;&amp;amp;%2364;&amp;amp;%23106;&amp;amp;%2397;&amp;amp;%23110;&amp;amp;%23117;&amp;amp;%23115;&amp;amp;%23119;&amp;amp;%23111;&amp;amp;%23114;&amp;amp;%23120;&amp;amp;%2346;&amp;amp;%2399;&amp;amp;%23111;&amp;amp;%23109;" &gt;feedback@janusworx.com&lt;/a&gt;
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit.&lt;/a&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;with the exception of code.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;Not much. there are lots of primitives and I cannot separate the language from Emacs specific stuff yet&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;rather, &lt;em&gt;&lt;strong&gt;my&lt;/strong&gt;&lt;/em&gt; recorded macro&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4"&gt;
&lt;p&gt;Don’t know if this is true or not. This is just me scratching my head. I’m assuming a function that can call buffers and handle switching between them is the ticket.&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:5"&gt;
&lt;p&gt;&lt;a href="https://ulauncher.io/" target="_blank" rel="noreferrer"&gt;Ulauncher&lt;/a&gt;&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:6"&gt;
&lt;p&gt;almost&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>My Custom CSS for Miniflux</title><link>https://janusworx.com/work/my-custom-css-for-miniflux/</link><pubDate>Wed, 15 Nov 2023 16:10:13 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/my-custom-css-for-miniflux/</guid><description>&lt;p&gt;Various bits and bobs, I gradually accumulated over the past couple of years, to make my self hosted &lt;a href="https://miniflux.app" target="_blank" rel="noreferrer"&gt;Miniflux&lt;/a&gt; look just the way I want it.&lt;/p&gt;

&lt;h3 class="relative group"&gt;Width and Size
 &lt;div id="width-and-size" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#width-and-size" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Changed the width to 850 pixels wide, because even on my vertical monitor, there was quite a bit of wasted horizontal space. Changed the body to use a slightly smaller size.&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-CSS" data-lang="CSS"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;850&lt;/span&gt;&lt;span class="kt"&gt;px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="err"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="kt"&gt;%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;'/&gt;


&lt;h3 class="relative group"&gt;&lt;em&gt;Italic&lt;/em&gt; Blockquotes
 &lt;div id="italic-blockquotes" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#italic-blockquotes" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Changed blockquotes to be italic, so that they’re better set off against normal body text.&lt;br&gt;
Also made them a wee bit tinier than the body.&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-CSS" data-lang="CSS"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;article&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;blockquote&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;87.5&lt;/span&gt;&lt;span class="kt"&gt;%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;font-style&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;italic&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;'/&gt;


&lt;h3 class="relative group"&gt;Smaller title size
 &lt;div id="smaller-title-size" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#smaller-title-size" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;If you follow Tumblr blogs as I do&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;, you know they have &lt;a href="https://help.tumblr.com/hc/en-us/articles/231857168-Ask" target="_blank" rel="noreferrer"&gt;Tumblr Asks&lt;/a&gt;.&lt;br&gt;
The asks themselves become the title of an RSS entry, when the author responds to one.&lt;br&gt;
And long asks lead to long titles.&lt;br&gt;
So here’s a bit of CSS to make the font smaller than the default &lt;code&gt;H1&lt;/code&gt; size.&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-CSS" data-lang="CSS"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;entry-header&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="kt"&gt;em&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Even at this size, the titles get a bit unwieldy at times (below), but this much I can live with.&lt;/p&gt;

&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2023/miniflux-smol-title.png" alt="" /&gt;
 
 
 &lt;/figure&gt;
&lt;hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;'/&gt;


&lt;h3 class="relative group"&gt;Disable Tag Visibility
 &lt;div id="disable-tag-visibility" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#disable-tag-visibility" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Miniflux displays tags, if it detects them on certain posts.&lt;br&gt;
I don’t read them. I don’t need them. It breaks my next-next-clicky-next chain of continuity by pushing the next post link below, making me move my mouse&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;. So I killed them!&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-CSS" data-lang="CSS"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;entry-tags&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;'/&gt;


&lt;h3 class="relative group"&gt;In Summary
 &lt;div id="in-summary" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#in-summary" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;So, all the flotsam and jetsam above, go into a box that says “Custom CSS” at the very bottom of the Settings page.
Putting it all together we have …&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-CSS" data-lang="CSS"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;/*set width*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;850&lt;/span&gt;&lt;span class="kt"&gt;px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="err"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="kt"&gt;%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;article&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;blockquote&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;87.5&lt;/span&gt;&lt;span class="kt"&gt;%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;font-style&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;italic&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;entry-header&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="kt"&gt;em&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;entry-tags&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;'/&gt;

Feedback on this post? Mail me at &lt;a href="mailto:&amp;amp;#102;&amp;amp;%23101;&amp;amp;%23101;&amp;amp;%23100;&amp;amp;%2398;&amp;amp;%2397;&amp;amp;%2399;&amp;amp;%23107;&amp;amp;%2364;&amp;amp;%23106;&amp;amp;%2397;&amp;amp;%23110;&amp;amp;%23117;&amp;amp;%23115;&amp;amp;%23119;&amp;amp;%23111;&amp;amp;%23114;&amp;amp;%23120;&amp;amp;%2346;&amp;amp;%2399;&amp;amp;%23111;&amp;amp;%23109;" &gt;feedback@janusworx.com&lt;/a&gt;
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit.&lt;/a&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Hello, &lt;a href="https://tkingfisher.tumblr.com/" target="_blank" rel="noreferrer"&gt;Ursula Vernon&lt;/a&gt;, &lt;a href="https://dduane.tumblr.com/" target="_blank" rel="noreferrer"&gt;Diane Duane&lt;/a&gt;, &lt;a href="https://petermorwood.tumblr.com/" target="_blank" rel="noreferrer"&gt;Peter Morwood&lt;/a&gt; &amp;amp; &lt;a href="https://neil-gaiman.tumblr.com/" target="_blank" rel="noreferrer"&gt;Neil Gaiman&lt;/a&gt;!&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;Oh, the troubles I face, I tell you!&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Multiline Regex Search in VS Code</title><link>https://janusworx.com/work/multiline-regex-search-in-vs-code/</link><pubDate>Mon, 16 Aug 2021 15:18:10 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/multiline-regex-search-in-vs-code/</guid><description>&lt;p&gt;&lt;a href="https://janusworx.com/images/2021/kindle-notes.png" &gt;&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt="picture of notes imported from an amazon kindle in vscode"
 src="https://janusworx.com/images/2021/kindle-notes.png"
 &gt;&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;hr style='margin-left: auto; margin-right: auto;margin-bottom: 40px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;' /&gt; 
&lt;p&gt;This is a picture of my notes, when I import them in from the Kindle.&lt;br&gt;
And every time I have to corral them into some sort of structure or write a blog post, I needed to laboriously get rid of all the Kindle metadata with multiple searches (and replaces.)&lt;/p&gt;
&lt;p&gt;I mean these lines&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;==========
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Draft No. 4 (John McPhee)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Your Highlight on page 27 | location 406-407 | Added on Sunday, 15 August 2021 12:43:15&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;But having &lt;a href="https://janusworx.com/blog/python-regular-expressions-real-world-projects/" target="_blank" rel="noreferrer"&gt;learnt Regex&lt;/a&gt; about a year ago, I have been using it on and off and have come to appreciate the power it offers.&lt;br&gt;
And I’ve been increasingly trying to solve all of my text search issues using regex, everywhere.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;With a recent book, I managed to &lt;a href="https://cb.janusworx.com/notice/A7nXyrNLRp2VvF2ceu" target="_blank" rel="noreferrer"&gt;use regex&lt;/a&gt; to get rid of single lines all at once.&lt;br&gt;
It still took me 3 sets of search and replaces though.&lt;br&gt;
So today, I got lazier and curiouser and wondered if I could do all three lines together.&lt;br&gt;
I was trying combinations of &lt;code&gt;/g&lt;/code&gt; and &lt;code&gt;/gs&lt;/code&gt; to somehow get the regex engine to span lines, but no dice.&lt;br&gt;
A bit of web surfing led me to &lt;a href="https://code.visualstudio.com/updates/v1_29#_multiline-search" target="_blank" rel="noreferrer"&gt;this post&lt;/a&gt; which told me that, all I needed to do was match newline literals &lt;code&gt;\n&lt;/code&gt;&lt;br&gt;
This led, to me tinkering and coming up with this search regex&lt;br&gt;
&lt;code&gt;==========[\n\s]D.*[\n\s]-.*&lt;/code&gt;&lt;br&gt;
Which led to …&lt;/p&gt;
&lt;hr style='margin-left: auto; margin-right: auto;margin-bottom: 40px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;' /&gt;
&lt;p&gt;&lt;a href="https://janusworx.com/images/2021/kindle-notes-2.png" &gt;&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt="picture of notes imported from an amazon kindle in vscode with search results"
 src="https://janusworx.com/images/2021/kindle-notes-2.png"
 &gt;&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;hr style='margin-left: auto; margin-right: auto;margin-bottom: 40px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;' /&gt; 
&lt;p&gt;matching everything in one fell swoop!&lt;br&gt;
All hail the power of regex!&lt;/p&gt;
&lt;p&gt;P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list&lt;/a&gt;!&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit&lt;/a&gt;.&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;(emphasis on trying. I’m no regex genius)&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Joining Two Images Using ImageMagick</title><link>https://janusworx.com/work/joining-two-images-using-imagemagick/</link><pubDate>Fri, 06 Aug 2021 07:25:47 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/joining-two-images-using-imagemagick/</guid><description>&lt;p&gt;Sometimes, I want to share snippets of what I am reading with my friends.&lt;br&gt;
Kindles make it easy, with screenshots.&lt;br&gt;
The only issue being I want to share the full length of two pages, like I’d do if I was reading a book.&lt;br&gt;
And I need it often enough, that I felt I needed to go figure out some way to do it.&lt;/p&gt;
&lt;p&gt;It was an easy-ish hack on the mac with printing with Preview.&lt;br&gt;
But now, that I use Linux, I wondered if I could do better.&lt;/p&gt;
&lt;!-- TEASER_END --&gt;
&lt;p&gt;A little bit of spelunking and I figured out how to let &lt;a href="https://imagemagick.org/index.php" target="_blank" rel="noreferrer"&gt;ImageMagick&lt;/a&gt; do the hard work for me.&lt;br&gt;
The &lt;a href="https://imagemagick.org/script/command-line-tools.php" target="_blank" rel="noreferrer"&gt;suite&lt;/a&gt; comes with a utility called Convert, that does exactly what I need.&lt;/p&gt;
&lt;p&gt;The basic command structure is,&lt;/p&gt;
&lt;p&gt;&lt;code&gt;some-imagemagick-utility -options input-file-1 input-file-2 … output-file&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;So to join my screenshots all I needed to do was,&lt;/p&gt;
&lt;p&gt;&lt;code&gt;convert +append dff1.png dff2.png combined-kindle-screenshot.png&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;and boom!&lt;/p&gt;
&lt;hr style='margin-left: auto; margin-right: auto;margin-bottom: 40px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;' /&gt; 
&lt;p&gt;&lt;a href="https://janusworx.com/images/2021/combined-kindle-screenshot.png" &gt;&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt="screenshot of a two pages from a kindle book"
 src="https://janusworx.com/images/2021/combined-kindle-screenshot.png"
 &gt;&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;hr style='margin-left: auto; margin-right: auto;margin-bottom: 40px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;' /&gt; 
&lt;p&gt;While this is what I want, the convert utility also lets me stack them one below the other by using &lt;code&gt;-append&lt;/code&gt; like so …&lt;/p&gt;
&lt;p&gt;&lt;code&gt;convert -append dff1.png dff2.png combined-kindle-screenshot.png&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Yes, I know ImageMagick is the &lt;a href="https://legacy.imagemagick.org/Usage/" target="_blank" rel="noreferrer"&gt;bees knees&lt;/a&gt; when it comes to images, but I guess this will be the most I’ll ever use it :) &lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Famous last words! 😂&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Reset Confirmations in Calibre</title><link>https://janusworx.com/work/reset-confirmations-in-calibre/</link><pubDate>Mon, 02 Aug 2021 11:35:33 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/reset-confirmations-in-calibre/</guid><description>&lt;p&gt;I have been deleting too many books by mistake, now a days.&lt;br&gt;
Past Jason might have been pretty sure about what he wanted, but I sure as heck am not.&lt;/p&gt;
&lt;p&gt;So I had to do a bit of spelunking to figure out how to get the delete book option to confirm first.&lt;/p&gt;
&lt;p&gt;All I needed to do was &lt;code&gt;Preferences -&amp;gt; Behaviour -&amp;gt; Reset all disabled confirmation dialogs&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Et voilà, Calibre now asks me if I am sure about deleting my books :)&lt;/p&gt;</description></item><item><title>A Transcript of Seth Godin’s Akimbo Episode on Blogging</title><link>https://janusworx.com/personal/seth-akimbo-blogging/</link><pubDate>Sun, 17 Jun 2018 00:00:20 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/personal/seth-akimbo-blogging/</guid><description>&lt;p&gt;If you haven’t subscribed to &lt;a href="https://seths.blog" target="_blank" rel="noreferrer"&gt;Seth Godin’s podcast&lt;/a&gt; already, well then what on earth are you doing?
I’d written about it &lt;a href="https://mjbraganza.com/writing-day-33-akimbo/" target="_blank" rel="noreferrer"&gt;here&lt;/a&gt; on the home blog and you can go &lt;a href="https://www.akimbo.me/#all-the-ways-to-listen" target="_blank" rel="noreferrer"&gt;subscribe here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This episode (Season 2, Episode 1) on blogging is very important to me.
I think it’s a distillation of all of Seth’s thoughts about writing and blogging in a crisp, crackling 20 minute episode.&lt;/p&gt;
&lt;p&gt;I wanted this for permanant reference, so I thought, I’d transcribe it for myself, and then I thought, well, if it helps me, it’ll surely help others.&lt;/p&gt;
&lt;p&gt;So here you go.&lt;br&gt;
It’s all Seth below …&lt;br&gt;
P.S. Typos and errors, omissions and emphases, entirely mine.&lt;/p&gt;
&lt;!-- TEASER_END --&gt;
&lt;hr&gt;
&lt;iframe title="Embed Player" width="100%" height="188px" src="https://embed.acast.com/07058b20-e537-4225-9c56-3adf0e2a669a/gid%3A%2F%2Fart19-episode-locator%2FV0%2FAd1BO1lyiPr0k1uxnYV3rYClYc4qgDQKYEJEUXdpG5E" scrolling="no" frameBorder="0" style="border:none;overflow:hidden;"&gt;&lt;/iframe&gt; 
&lt;p&gt;At the end of May, 2018, I moved my blog.&lt;br&gt;
I moved it to a new platform.&lt;br&gt;
This is a little bit like moving to a new house, except it takes longer, it’s more emotional, and it’s a lot more expensive.&lt;/p&gt;
&lt;p&gt;Hey, it’s Seth. &lt;a href="https://www.akimbo.me/#all-the-ways-to-listen" target="_blank" rel="noreferrer"&gt;And this, is Akimbo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Moving my blog is a metaphor for a lot of things; about being found, about how ideas spread, and about the passage of time, in a fast moving world where the culture is driven by the Internet, and the Internet … is driven by the culture.&lt;br&gt;
The last time I moved my blog, was 16 years ago, when George W Bush was president, when Alicia Keys had her debut album and when the bestseller list had names on it, like James Patterson and Stephen King.&lt;br&gt;
So some things change; some things … not so much.&lt;/p&gt;
&lt;p&gt;Before I had my blog on &lt;a href="http://www.typepad.com" target="_blank" rel="noreferrer"&gt;Typepad&lt;/a&gt;, I used to deliver it by email and I’d been doing that since the 1990s.&lt;br&gt;
What I discovered then, what I wrote a book about, is the simple idea that:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anticipated, personal and relevant messages are more likely to resonate with people, than spam.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Day by day, week by week, I built up a list of people, who wanted to hear from me, who wanted to get an email newsletter from me, back in the day, when newsletters actually had stamps on them.&lt;br&gt;
I understood, from seeing the work of &lt;a href="https://en.wikipedia.org/wiki/Esther_Dyson" target="_blank" rel="noreferrer"&gt;Esther Dyson&lt;/a&gt; that an effective newsletter could completely change the game.&lt;br&gt;
The goal isn’t to reach a lot of people, the goal is to reach the &lt;em&gt;right&lt;/em&gt; people, and to reach them in a way, where they are glad you showed up.&lt;br&gt;
Anticipated, personal and relevant, means, that they would miss you if you didn’t show up; that’s my definition of permission.&lt;br&gt;
Earning the privilege … you can’t take it, it’s not a right; there’s no such thing as free speech—when we’re not talking about the government. This is earned speech.&lt;br&gt;
Showing up with a message that people want to get, drip by drip, day after day.&lt;/p&gt;
&lt;p&gt;At the time, my emails didn’t come out everyday; that would have overwhelmed most people in the information starved 1990s, atleast compared to today.&lt;br&gt;
When I began it was twenty people, getting a newsletter about the struggling entrepreneur they knew.&lt;br&gt;
Then it was twenty-five.&lt;br&gt;
Then it was forty.&lt;br&gt;
Then, it was a hundred.&lt;/p&gt;
&lt;p&gt;This led to my second big insight:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ideas that spread, win&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In the late 90s this magazine showed up, &lt;a href="https://en.wikipedia.org/wiki/Esther_Dyson" target="_blank" rel="noreferrer"&gt;Fast Company&lt;/a&gt;.&lt;br&gt;
I decided, Fast Company was the greatest magazine ever published.&lt;br&gt;
I also decided that my life dream, &lt;a href="https://www.fastcompany.com/user/seth-godin" target="_blank" rel="noreferrer"&gt;was to be a columnist, for Fast Company magazine&lt;/a&gt;.&lt;br&gt;
I figured I had something to say, and I figured that was the place to say it.&lt;br&gt;
I sent a note to &lt;a href="https://en.wikipedia.org/wiki/Bill_Taylor_%28businessman%29" target="_blank" rel="noreferrer"&gt;Bill&lt;/a&gt; and &lt;a href="https://en.wikipedia.org/wiki/Alan_Webber" target="_blank" rel="noreferrer"&gt;Alan&lt;/a&gt;, the founders, the editors and I told them, I wanted to write a column for them. I offered to write it for free. Alan wrote back a really nice note saying, “We’d love to, except, we don’t run columns.”&lt;br&gt;
Well that didn’t deter me, so I started writing a column for Fast Company, even though they didn’t have columns.&lt;br&gt;
Every week, I sent Alan &amp;amp; Bill, a new column and by the time, I got to, I guess, the eighth or ninth week, their ad sales had started to go up and they realised they needed more editorial to sit next to all of those ads. So they said, “Sure, Seth. If you want to write for us, if you want to write thousands and thousands of words for us, for free, we’d be delighted to run your column.”&lt;/p&gt;
&lt;p&gt;I was thrilled. I made a decision then and there, that the goal of the column was to write some thing that people would xerox, in an old fashioned Xerox machine and put one in the slot of every person in the mailroom, in the old fashioned mailroom, the old fashioned slot, the whole idea that there was an office to begin with. So instead of people forwarding it by email, (which was unheard of), people were actually copying a column and putting it in other people’s mailboxes.&lt;/p&gt;
&lt;p&gt;Ideas that spread, win.&lt;/p&gt;
&lt;p&gt;Month after month, my column grew in its impact. Fast Company grew, in its impact. And that lesson has not been forgotten. That what we can do, is serve a small group of people, with an idea that they want to share.&lt;br&gt;
Why do they want to share it?&lt;br&gt;
In case of my Fast Company column, the reason was this:&lt;br&gt;
I was telling them something, they already believed, they already wanted to be true, they already wanted to share.&lt;br&gt;
My job, was to write it in a way, that made it cogent and easy to share.&lt;br&gt;
And so they did. And if that resonated with some other people, they joined in.&lt;/p&gt;
&lt;p&gt;Few years later, I was at a conference. I met &lt;a href="https://en.wikipedia.org/wiki/Joi_Ito" target="_blank" rel="noreferrer"&gt;Joi Ito&lt;/a&gt; there. He was on the board of a company called &lt;a href="https://movabletype.com" target="_blank" rel="noreferrer"&gt;Six Apart&lt;/a&gt;. I saw for for the very first time, what the Typepad platform looked like and I moved my blog to it, a few weeks later.&lt;br&gt;
Here’s the thing.&lt;br&gt;
&lt;a href="https://www.google.com" target="_blank" rel="noreferrer"&gt;Google&lt;/a&gt; changed &lt;em&gt;everything&lt;/em&gt;.&lt;br&gt;
They changed everything in a way that most people dont see or understand. Most people use Google to find things. They assume it is telepathetic. They assume, that all they have to do, is type in a few simple words, and Google will comb through the entire Internet, and find them &lt;em&gt;exactly&lt;/em&gt; what they’re loooking for. Most people never get past the first page of results on Google.&lt;br&gt;
Well it’s so popular, so many billions of searches are done, that everybody, who makes a thing, who has a service, who wants a job, who needs or wants to be found … wants to be found by Google.&lt;br&gt;
There is a haystack, the biggest haystack in the history of the world, and each of us, each of us who wants to make a difference, who wants to be found—we’re needles.&lt;/p&gt;
&lt;p&gt;And so there’s a problem. There’s a challenge.&lt;/p&gt;
&lt;p&gt;And the challenge is, getting found for a generic term.
Right, if I search for “&lt;a href="https://en.wikipedia.org/wiki/John_Jacob_Jingleheimer_Schmidt" target="_blank" rel="noreferrer"&gt;John Jacob Jingleheimer Schmidt&lt;/a&gt;” and Google does its job right, I will actually find John. But most of the time, that’s not what people search for.&lt;br&gt;
Most of the time, people aren’t sure what they’re looking for and they want Google to find it for them. And so, in every town there are a thousand plumbers, with sharp elbows, hoping that they will be the first match for the word, plumber. And in every industry there are consultants or there are freelancers or there are companies, big or small, waiting to be found.&lt;/p&gt;
&lt;p&gt;At the beginning, Google’s algorithm was pretty primitive. It wasn’t particularly difficult to cheat your way to the front of the line, to play in ways that the Google algorithm liked a lot and get more than your fair share of visits, from the hordes of people, searching, for the likes of you.&lt;/p&gt;
&lt;p&gt;And so we began this striation, this sedimentary approach; people at the top, people in the middle, people at the bottom, not because they are worthy, not because Google has done a site visit or the Department of Health has verified them, but instead, because they got good at getting found.&lt;/p&gt;
&lt;p&gt;This is often called SEO, Search Engine Optimisation.&lt;br&gt;
It’s a weird term. Optimising who? Optimising what?&lt;br&gt;
Well, the search engine is Google and what we are optimising is the way, our website looks and feels and is seen by the other people in the world, so that Google will pick us.&lt;br&gt;
And it’s led to all sorts of weird side effects. People twisting themselves into knots, not seeking to serve the customer, but seeking to serve some sort of mythical wizard, inside the box, that calls itself Google.&lt;/p&gt;
&lt;p&gt;So what does this have to do with blogs?&lt;/p&gt;
&lt;p&gt;I’ll get to that in just a second.&lt;br&gt;
At the beginning, the genius of Google’s algorithm was this—they didn’t rank pages, based on what was on the page. They ranked pages, based on what people who &lt;em&gt;linked to the page&lt;/em&gt; were saying. So if a lot of people linked to a page, saying this is the best hotel in all of Ghana, then if you search for &lt;em&gt;“best hotel in Ghana”&lt;/em&gt;, the Google algorithm should have found, the page they were all pointing to.&lt;/p&gt;
&lt;p&gt;If you wanted to be found then, the idea of writing blog posts that were often shared and spread, made an awful lot of sense. Because instead of just one website that just sat there all day, everyday the same, you were writing a blog.&lt;br&gt;
A blog about this and a blog about that.&lt;br&gt;
So for eight years, if you typed the word blog into Google, &lt;a href="https://seths.blog" target="_blank" rel="noreferrer"&gt;my blog&lt;/a&gt;, was the very first match.&lt;br&gt;
Now it’s important for me to state, that I didn’t write the blog so this would be true. I wrote the blog, because after I left Fast Company, I wanted that same experience.&lt;br&gt;
The experience of people, xeroxing my posts and putting them into the office mailboxes. Of course, no xeroxing, just email.&lt;/p&gt;
&lt;p&gt;So I was writing for the very reason, that people were linking. I was writing so that people, would spread the ideas.&lt;br&gt;
No ads on my blog. Rare calls to action.&lt;br&gt;
That’s not what it’s for.&lt;br&gt;
What it’s for, is to teach people, to show them something.&lt;/p&gt;
&lt;p&gt;But, back to this challenge and how the culture changed.&lt;/p&gt;
&lt;p&gt;Because what happened was, people who didn’t belong, for whatever reason you want to measure, number one in anything, decided that being number one was so valuable, they would spend their time and their money working to be number one as opposed to working to &lt;em&gt;be better&lt;/em&gt;, working to &lt;em&gt;serve people, better&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;And thus, SEO developed a bad reputation.&lt;br&gt;
The idea was that for a thousand or five thousand or fifty thousand or a hundred thousand dollars, you could game the system, so that you would get more links than you would (quote) “deserved”, that you’re exposing many of the failings of the Google algorithm, because human beings weren’t actually looking at your site.&lt;/p&gt;
&lt;p&gt;Once it became worth millions of dollars, &lt;em&gt;tens&lt;/em&gt; of millions of dollars to be ranked number one in Google, an arms race began. That arms race brought in good operators, bad operators, people who were playing for the right reasons and people who weren’t.&lt;/p&gt;
&lt;p&gt;But what we saw in all of the hotly contested areas, things like hotels or travel or things that we might buy, or services or obscure terms, were people who were subverting the very idea behind the search engine.&lt;/p&gt;
&lt;p&gt;It was then, that Google made an interesting choice.&lt;br&gt;
I’m not sure what I would have done in their shoes.&lt;br&gt;
But it was a two part choice. They didn’t really understand how the algorithm began to work, because it got too complicated. More than three thousand people, were hand tweaking, the way Google was scoring pages. So Google pretended,&lt;/p&gt;
&lt;p&gt;a. They knew exactly how it worked and&lt;br&gt;
b. that no human beings were actually making these decisions. It was simply the algorithm. “Well it’s not our fault you moved down, it’s the algorithm”. “Oh, it’s not our fault, that this hate term is number one in results. It’s the algorithm.”&lt;/p&gt;
&lt;p&gt;And somehow, though all of this is nonsense, it also undermines their responsibity, because once they are the middleman, the monopoly on how peple find stuff, they do have a responsibilty to keep their promise and give the best possible results.&lt;/p&gt;
&lt;p&gt;But we’re here to talk about the change that each of us can make, and I think the key insight is this&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You cannot trust, that your needle is going to get found in the haystack.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You cannot trust that, any generic word, the word you seek to own, &lt;em&gt;butcher shop, shoe store&lt;/em&gt;; pick whichever one you want, is going to end up with you on top.&lt;br&gt;
And if you’re not on top, if you’re number twenty, or number fifty or number hundred, you might as well be invisible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The alternative, is to win when someone searches for you.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So, if you look for &lt;a href="https://duckduckgo.com/?q=seth" target="_blank" rel="noreferrer"&gt;Seth&lt;/a&gt;, you’ll find me.&lt;br&gt;
If you look for &lt;a href="https://duckduckgo.com/?q=seth&amp;#43;godin" target="_blank" rel="noreferrer"&gt;Seth Godin&lt;/a&gt;, you’ll definitely find me.&lt;br&gt;
If you look for &lt;a href="https://duckduckgo.com/?q=newton&amp;#43;running&amp;#43;shoes" target="_blank" rel="noreferrer"&gt;Newton Running Shoes&lt;/a&gt;, you’ll find the people that make Newton Running Shoes.&lt;br&gt;
So the game goes from, &lt;em&gt;“How do I persuade Google to find me, when someone is looking for the generic?”&lt;/em&gt; to &lt;em&gt;“How do I persuade the public to look for the specific?”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;And so, as we enter this post Google age, where &lt;em&gt;clearly&lt;/em&gt; there’s room for more than one winner for every noun, how do we have a chance to change the culture?&lt;/p&gt;
&lt;p&gt;And the answer is this.&lt;br&gt;
The answer is,&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Change the people you engage with, so much, that they want to tell other people.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Have them want to tell other people in the specific, not in the general.&lt;/p&gt;
&lt;p&gt;You may have heard me talk about one of my favourite examples: &lt;a href="https://www.poilane.com/en_US/" target="_blank" rel="noreferrer"&gt;The Poilâne Bakery&lt;/a&gt; in Paris.&lt;br&gt;
Run by Apollonia Poilâne, the daughter of the late &lt;a href="https://en.wikipedia.org/wiki/Lionel_Poil%C3%A2ne" target="_blank" rel="noreferrer"&gt;Lionel&lt;/a&gt;.&lt;br&gt;
This bakery is extraordinary. Lines out the door. A premium product enjoyed at most of the fine restautants in Paris.&lt;br&gt;
If you search for bakery, you will not find it. Not easily.&lt;br&gt;
But if you search for &lt;a href="https://duckduckgo.com/?q=poilane" target="_blank" rel="noreferrer"&gt;Poilane&lt;/a&gt;, there it is, right up top, where it belongs.&lt;/p&gt;
&lt;p&gt;So that’s the mission.&lt;br&gt;
The mission is to write things, create things, post things, engage with things … that people choose to share.&lt;br&gt;
To earn the permission of people they share them with.&lt;br&gt;
The permission to follow up, the permission to teach, the permission to engage,&lt;br&gt;
And then share some more, and then teach some more, and do it in a way that people will share it again.&lt;br&gt;
And then people &lt;em&gt;will&lt;/em&gt; share it again.&lt;br&gt;
And then people will share it again.&lt;br&gt;
Each time, earning you more permission.&lt;/p&gt;
&lt;p&gt;Because, trusting the middleman on the Internet; that’s a dangerous game.&lt;br&gt;
That if you are building your content on Linkedin or building your content on Facebook, &lt;a href="https://en.wikipedia.org/wiki/Sharecropping" target="_blank" rel="noreferrer"&gt;you’re sharecropping&lt;/a&gt;.&lt;br&gt;
That you’re working for a landlord who does not care about you.&lt;br&gt;
That has no contractual obligation to keep their word.&lt;br&gt;
That at anytime they can say, “Oh! You know all those people you have permission to talk to? Your followers? your friends? We’re going to start charging you money to reach them. Wanna boost this post?” That’s a lousy deal.&lt;br&gt;
That what we have to figure out how to do, is engage with a platform that has an obligation to us.&lt;/p&gt;
&lt;p&gt;That was my relationship with Typepad.&lt;br&gt;
And I’m super grateful, that in the sixteen years I was on their platform, they kept their end of the bargain.&lt;br&gt;
I happily paid them, whatever it was, $20 a month, because that money was repaid to me again and again, by a third party that had my interests at heart, a site that was up almost all the time.&lt;br&gt;
It worked. Because I was paying for it.&lt;br&gt;
I wasn’t the product.&lt;br&gt;
I was the customer.&lt;br&gt;
And my job, on that platform, was to be a teacher.&lt;br&gt;
My job, on that platform, was to teach, was to make it easy for people to find me, if they were looking for me.&lt;br&gt;
Not looking for the generic, but looking for the specific.&lt;br&gt;
And then, to earn their attention and trust, and to keep a promise.&lt;/p&gt;
&lt;p&gt;I discovered that five to ten years ago, I was blogging three times a day.&lt;br&gt;
I was sort of insane. I don’t know what kind of caffeine I was drinking.&lt;br&gt;
I realised that my promise was out of hand.&lt;br&gt;
So I made a specific promise.&lt;br&gt;
I said “Once a day. That’s it. I’m not going to overwhelm you. Once a day, I’ll be here.”&lt;/p&gt;
&lt;p&gt;And I’ve been there everyday, since then.&lt;br&gt;
Partly, because I have something to teach, partly because I have something to say, partly because I have something to share.&lt;br&gt;
But also, because I made a promise.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anticpated, personal and relevant messages to people who want to get them.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Drip by drip.&lt;br&gt;
Day by day.&lt;/p&gt;
&lt;p&gt;So I’m grateful to all the people, who worked so hard, to help me build this new platform for my blog.&lt;/p&gt;
&lt;p&gt;But waaaaay more important than that, &lt;em&gt;&lt;strong&gt;I’m encouraging each one of you to have one&lt;/strong&gt;&lt;/em&gt;.&lt;br&gt;
Not to have a blog to make money. Because you probably won’t.&lt;br&gt;
Not to have a blog because you’ll have millions and millions of readers. Because you probably won’t.&lt;br&gt;
But to have a blog because of the discipline it gives you, to know, that you’re going to write something tomorrow, something that might not be read by many people, it doesn’t matter.&lt;br&gt;
&lt;em&gt;It’ll be read by you.&lt;/em&gt;&lt;br&gt;
And that if you can build that up, ten at a time, twenty at a time, a month at a time, day by day, &lt;strong&gt;you will begin to think more clearly&lt;/strong&gt;.&lt;br&gt;
You’ll make predictions.&lt;br&gt;
You’ll make assertions.&lt;br&gt;
You’ll make connections.&lt;/p&gt;
&lt;p&gt;And there, they will be, in type, for you to look at a month or a year later.&lt;br&gt;
This practice, of sharing your ideas, to people who will then choose, or not choose to share them, helps us get out of our own head, because it’s no longer the narrative inside, it’s the narrative outside.&lt;br&gt;
The narrative that you’ve typed up, that you’ve cared enough to share.&lt;/p&gt;
&lt;p&gt;So SEO’s fine. If you win at SEO, Congratulations!&lt;br&gt;
I’ll send you a postcard, maybe a medal and a ribbon.&lt;br&gt;
It’s great.&lt;br&gt;
Someone needs to win at every single noun, anyone could search on.&lt;br&gt;
But it might not be you. It probably won’t be you.
The odds are against it being you.&lt;br&gt;
A twelve year old, probably should not grow up saying “I will not be happy, unless I am the champion of the world at this sport or that thing.”&lt;br&gt;
Because the odds are too long.&lt;br&gt;
It’s not worth betting your happiness on that.&lt;br&gt;
That if we’re going to change the culture, we’re going to have to figure out how to bypass the generic Google search, and instead reach a few, the smallest viable audience, the group of people we seek to serve, to connect those people with each other and with our ideas in such a way that we become the specific, not the generic.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Because if you’re specific enough and generous enough and consistent enough, it’s worth the journey.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Thanks for tuning in to Akimbo.&lt;br&gt;
I hope that &lt;a href="https://www.akimbo.me/#all-the-ways-to-listen" target="_blank" rel="noreferrer"&gt;you will subscribe&lt;/a&gt; and tell your friends.&lt;/p&gt;</description></item><item><title>Programming, Day 3, Setting up VS Code to launch from the Command Line in OS X</title><link>https://janusworx.com/work/programming-day-3-vscode-command-line-osx/</link><pubDate>Tue, 05 Jun 2018 08:44:42 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/programming-day-3-vscode-command-line-osx/</guid><description>&lt;p&gt;Problem:&lt;br&gt;
I wanted to launch Microsoft’s Visual Studio Code from the command line at will.&lt;/p&gt;
&lt;!-- TEASER_END --&gt; 
&lt;p&gt;What I did:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Launch VS Code&lt;/li&gt;
&lt;li&gt;Hit cmd-shift-p (⌘-⇧-P)&lt;/li&gt;
&lt;li&gt;Begin to type Shell … and choose and execute “Shell Command: Install &amp;lsquo;code&amp;rsquo; command in PATH”&lt;/li&gt;
&lt;li&gt;Launch Terminal and check to see if VS Code launches by typing the &lt;code&gt;code&lt;/code&gt; command.&lt;/li&gt;
&lt;li&gt;Edit the &lt;code&gt;.bash_profile&lt;/code&gt; file in the home folder and change the &lt;code&gt;$EDITOR&lt;/code&gt; variable like so …&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;# Setting Visual Studio Code as $EDITOR&lt;/code&gt;&lt;br&gt;
&lt;code&gt;export VISUAL=code&lt;/code&gt;&lt;br&gt;
&lt;code&gt;export EDITOR=&amp;quot;$VISUAL&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;And that should just about do it.&lt;/p&gt;
&lt;p&gt;Restart the terminal or source the bash_profile file for changes to take effect.&lt;/p&gt;</description></item><item><title>MathJax on a Ghost Blog</title><link>https://janusworx.com/work/mathjax-on-a-ghost-blog/</link><pubDate>Fri, 20 Apr 2018 12:00:26 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/mathjax-on-a-ghost-blog/</guid><description>&lt;p&gt;*** Everything below is broken. Kept just for posterity ***&lt;/p&gt;
&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt="mj-logo"
 src="images/2018/04/mj-logo.svg"
 &gt;&lt;/figure&gt;
&lt;p&gt;Install this script into the footer in the Code Injection section&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;script type=&amp;#34;text/javascript&amp;#34; async
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; src=&amp;#34;https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/latest.js?config=TeX-MML-AM_CHTML&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;(that should autoupdate MathJax versions or if it all breaks and goes to hell, &lt;a href="https://docs.mathjax.org/en/latest/start.html" target="_blank" rel="noreferrer"&gt;get the latest install instructions here&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;If I’ve done this right, this little piece of LaTeX should give me the quadratic equation&lt;/p&gt;
&lt;p&gt;&lt;code&gt;$$ x=\frac{-b\pm\sqrt{b^2-4ac}}{2a} $$&lt;/code&gt;&lt;/p&gt;
$$x=\frac{-b\pm\sqrt{b^2-4ac}}{2a} $$&lt;p&gt;Et voila!&lt;/p&gt;</description></item><item><title>Booting CentOS into Graphical or Command Line Mode by default</title><link>https://janusworx.com/work/booting-centos-into-graphical-command-line-mode/</link><pubDate>Tue, 13 Mar 2018 16:35:36 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/booting-centos-into-graphical-command-line-mode/</guid><description>&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt="np_close_142259_000000-3"
 src="https://janusworx.com/images/2018/03/np_close_142259_000000-3.png"
 &gt;&lt;/figure&gt;
&lt;p&gt;Ok, now that I’ve installed CentOS, I decided to install X Windows.
And like Rip Van Winkle, I learnt that a lot has changed in 20 years :)&lt;/p&gt;
&lt;p&gt;A windowing environment was easy to install …&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo yum groupinstall &amp;quot;Gnome Desktop&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;and the trusty old &lt;code&gt;startx &amp;amp;&lt;/code&gt; gave me a Windowing Environment (which I have yet to explore)&lt;/p&gt;
&lt;p&gt;However, switching permanantly to graphics mode (or vice versa) wasn’t so easy.
I wanted to set my command line as the default startup environment and so I went to look for the default runlevel.
I coudn’t find it.
That’s because they don’t exist anymore.
No inittab of old, nothing.&lt;/p&gt;
&lt;p&gt;The init scripts of old have now been replaced (for quite a while) by &lt;a href="https://www.freedesktop.org/wiki/Software/systemd/" target="_blank" rel="noreferrer"&gt;systemd&lt;/a&gt;. And while it’s old (most Linux distributions have adopted it for nearly 3-5 years now) it’s still new to me :)&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;So, systemd targets something called targets&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; instead of runlevels. (Haha, see what I did there? :P)
Targets to my mind involve a collection of settings in a file all relating to … something … a service.&lt;/p&gt;
&lt;p&gt;You could group all of your network stuff in a network target, or like I needed it all your runlevel settings in a command line target or a graphical target.&lt;/p&gt;
&lt;p&gt;Aha!&lt;/p&gt;
&lt;p&gt;So a quick search led me to the &lt;code&gt;systemctl get-default&lt;/code&gt; command which gives my my default target
&lt;code&gt;graphical.target &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Another search gave me the multi-user target to use if I wanted a multiuser command line environment.&lt;/p&gt;
&lt;p&gt;So to switch all I had to do was,
&lt;code&gt;systemctl set-default multi-user.target&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Et voila!&lt;/p&gt;
&lt;p&gt;If I ever wanted my graphical environment back as a default setting,
&lt;code&gt;systemctl set-default graphical.target&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;And Bob, as they say, is my uncle.&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;and apparently still quite a &lt;a href="https://encrypted.google.com/search?q=systemd&amp;#43;debate&amp;amp;hl=en&amp;amp;source=lnt&amp;amp;tbs=qdr:y&amp;amp;sa=X&amp;amp;ved=0ahUKEwiCwZfQlOTZAhUV448KHbLQBHIQpwUIHQ&amp;amp;biw=1440&amp;amp;bih=793" target="_blank" rel="noreferrer"&gt;source of controversy and debate&lt;/a&gt;&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;which I need to learn lots more about&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Creating a bootable Linux USB installer disk from an ISO on the Mac</title><link>https://janusworx.com/work/bootable-usb-from-iso-mac/</link><pubDate>Sun, 11 Mar 2018 16:36:59 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/bootable-usb-from-iso-mac/</guid><description>&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt="np_disk-image_166094_000000"
 src="https://janusworx.com/images/2018/03/np_disk-image_166094_000000.png"
 &gt;&lt;/figure&gt;
&lt;p&gt;I got myself &lt;a href="http://www.dell.com/in/business/p/poweredge-t30/pd" target="_blank" rel="noreferrer"&gt;a new pc&lt;/a&gt; to learn Linux and do all my crazy experimenting on.&lt;/p&gt;
&lt;p&gt;What’d I use as my primary OS? Why &lt;a href="https://www.centos.org/about/" target="_blank" rel="noreferrer"&gt;CentOS&lt;/a&gt;, ofcourse.
Two reasons …&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;These are long term, slow stable releases, just the way I like my software to be.&lt;/li&gt;
&lt;li&gt;My last exposure to Linux was Red Hat Linux v5 &amp;amp; 6 way back when&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;. CentOS looks familiar enough to ease my apprehensions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;First step on the way, was getting the OS installed on the machine.
Slight hiccup though. I had the ISO and no optical drive!&lt;/p&gt;
&lt;p&gt;I’d disconnected and given away the optical drive on my server, because I thought,&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; I didn’t need a device sucking power, needlessly.
And ofcourse my trusty old MacBook Air has none.&lt;/p&gt;
&lt;p&gt;So how do I do about installing?&lt;/p&gt;
&lt;p&gt;Well, I got the &lt;a href="http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Everything-1708.iso" target="_blank" rel="noreferrer"&gt;ISO&lt;/a&gt; down, via bittorrent and then “burnt” it to a USB drive, making myself a bootable USB installer.&lt;/p&gt;
&lt;p&gt;How? Well here goes&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Get the ISO&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;.&lt;/li&gt;
&lt;li&gt;Convert the read only ISO to a read/write image using hdiutil&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt; like so.
&lt;code&gt;sudo hdiutil convert -format UDRW -o 'call-it-what-you-want.img' 'path-to-iso-file.iso&lt;/code&gt;
It’d be simpler if you’re in the same directory as your iso file. Saves you making booboos with paths.&lt;/li&gt;
&lt;li&gt;You’ll end up with an img file (it might also get appended with a .dmg extension, so that you end up with CentOS.img.dmg. Doesn’t matter.)&lt;/li&gt;
&lt;li&gt;Partition your USB drive so that it’s empty.&lt;sup id="fnref:6"&gt;&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref"&gt;6&lt;/a&gt;&lt;/sup&gt;
&lt;code&gt;diskutil partitionDisk /dev/disk2 &amp;quot;Free Space&amp;quot; &amp;quot;unused&amp;quot; &amp;quot;100%&amp;quot; &lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Write the converted image file to your USB drive using dd.
&lt;code&gt;sudo dd if='path to your new img file' of=/dev/disk2 bs=1m&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Once dd is done, the USB installer’s ready.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can then go right ahead and use it to install CentOS.&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;1999 — 2000. Yes, I’m that old.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;Don’t laugh!&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;Instructions for reference purposes only. Be careful. &lt;a href="https://lonesysadmin.net/2011/10/19/cargo-cult-system-administration/" target="_blank" rel="noreferrer"&gt;Don’t be a cargo cult sysadmin&lt;/a&gt;. &lt;strong&gt;Don’t blame me, if you hose your system&lt;/strong&gt;.&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4"&gt;
&lt;p&gt;that you think you’d need. I got the everything ISO. If you’re comfortable doing everything over your fast broadband connection, a minimal ISO should suffice.&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:5"&gt;
&lt;p&gt;You’re obviously doing this in the terminal. Just thought I should tell you that :P&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:6"&gt;
&lt;p&gt;Your device might not be disk2. Find out what it is by using “diskutil list”&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>User specific Inbound and Outbound Routing of Email for Google Apps</title><link>https://janusworx.com/work/user-specific-inbound-and-outbound-routing-of-email-for-google-apps/</link><pubDate>Tue, 09 Jan 2018 16:32:51 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/user-specific-inbound-and-outbound-routing-of-email-for-google-apps/</guid><description>&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt="np_sign_1018269_000000"
 src="https://janusworx.com/images/2018/01/np_sign_1018269_000000.png"
 &gt;&lt;/figure&gt;
&lt;p&gt;Writing this up, for future dumb me.&lt;/p&gt;
&lt;p&gt;I wanted to be able to archive my Google Apps account (just me on my domain) to somewhere else on a sorta-kinda automatic basis.&lt;br&gt;
I also did not want to make domain wide changes, because I don’t want to affect any future users I might add to my Google Apps account.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What I want:&lt;/strong&gt;
Archive all my incoming and outgoing mail (on Google Apps) to another cloud account&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How I did this:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Incoming Mail&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This part is fairly easy to do.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Login to your control panel at &lt;a href="https://admin.google.com" target="_blank" rel="noreferrer"&gt;https://admin.google.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Go to users - click your user - and scroll down to email routing in Account sectiom&lt;/li&gt;
&lt;li&gt;Click add another destination, type in your &lt;em&gt;non Google&lt;/em&gt; archival email address and click save.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr style='margin-left: auto; margin-right: auto;margin-bottom: 40px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;' /&gt; 
![inbound-routing](/images/2018/01/inbound-routing.jpg) 
&lt;hr style='margin-left: auto; margin-right: auto;margin-bottom: 40px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;' /&gt; 
&lt;p&gt;&lt;em&gt;Outgoing Mail&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Figuring out how to do this, required a little more Google-fu&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Login to your control panel at &lt;a href="https://admin.google.com" target="_blank" rel="noreferrer"&gt;https://admin.google.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Go to apps - G Suite - Gmail - advanced settings.&lt;/li&gt;
&lt;li&gt;On the first page, general settings, look for routing in the routing section.&lt;/li&gt;
&lt;li&gt;Click Configure.&lt;/li&gt;
&lt;li&gt;Type in a name for your route so that you remember who or what, in case you do multiple routes&lt;/li&gt;
&lt;li&gt;Under messages to affect, choose Outbound&lt;/li&gt;
&lt;li&gt;Choose only to affect a single address in the Envelope filter section. (type in your address)&lt;/li&gt;
&lt;li&gt;Hustle down to step 3, leave it at Modify message and under “also deliver to”, click “Add more recipients”, click add and then type in the same &lt;em&gt;non Google&lt;/em&gt; archival email address.&lt;/li&gt;
&lt;li&gt;Hit Save, Add Setting, and Hit Save.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr style='margin-left: auto; margin-right: auto;margin-bottom: 40px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;' /&gt; 
&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt="Outbound-Routing-1"
 src="https://janusworx.com/images/2018/01/Outbound-Routing-1.jpg"
 &gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt="Outbound-Routing-2"
 src="https://janusworx.com/images/2018/01/Outbound-Routing-2.jpg"
 &gt;&lt;/figure&gt;
&lt;hr style='margin-left: auto; margin-right: auto;margin-bottom: 40px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;' /&gt; 
&lt;p&gt;And tada! Bob’s your uncle :)&lt;/p&gt;</description></item></channel></rss>