<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Devto on Janusworx</title><link>https://janusworx.com/tags/devto/</link><description>Recent content in Devto 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>Fri, 24 Sep 2021 05:45:00 +0530</lastBuildDate><atom:link href="https://janusworx.com/tags/devto/index.xml" rel="self" type="application/rss+xml"/><item><title>On Teddy Bears in Cars, Font Obsessions and Home Password’s Pwnd Password Kerfuffle</title><link>https://janusworx.com/personal/on-teddy-bears-in-cars-font-obsessions-and-home-passwords-pwnd-password-kerfuffle/</link><pubDate>Fri, 24 Sep 2021 05:45:00 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/personal/on-teddy-bears-in-cars-font-obsessions-and-home-passwords-pwnd-password-kerfuffle/</guid><description>&lt;p&gt;&lt;span style="font-size: 75%;"&gt;&lt;em&gt;This post was first sent to my newsletter on September 17th, 2021.&lt;br&gt;
&lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;You really ought to subscribe&lt;/a&gt; :)&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;

&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2021/teddy-bear-car.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;via &lt;a href="https://pixabay.com/photos/teddy-bear-graduate-cap-and-gown-5189506/" target="_blank" rel="noreferrer"&gt;Michelle Scott on Pixabay&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&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;Welcome folks, to the September work letter! :)&lt;br&gt;
As usual, click the headers to wander off to the orginal articles.&lt;/p&gt;
&lt;!-- TEASER_END --&gt; 

&lt;h2 class="relative group"&gt;A Bear? Where? Over There — &lt;a href="https://arstechnica.com/cars/2021/03/strapping-a-giant-teddy-bear-to-a-car-in-the-name-of-highway-safety/" target="_blank" rel="noreferrer"&gt;Strapping a giant teddy bear to a car in the name of highway safety&lt;/a&gt;
 &lt;div id="a-bear-where-over-there--strapping-a-giant-teddy-bear-to-a-car-in-the-name-of-highway-safety" 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="#a-bear-where-over-there--strapping-a-giant-teddy-bear-to-a-car-in-the-name-of-highway-safety" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;You’re adapting my what?&lt;/strong&gt;&lt;br&gt;
When activated, adaptive cruise control uses forward-looking radar to maintain a specific distance to a vehicle in the lane ahead, slowing down or speeding up (to a maximum of whatever speed cruise control was set to) as necessary. Lane-keeping systems use forward-looking cameras to detect the lane markings on a road to keep the vehicle between them, and when both are active together, the vehicle will do a pretty good facsimile of driving itself, albeit with extremely limited situational awareness.&lt;/p&gt;
&lt;p&gt;Which is where the human comes in. Under the SAE&amp;rsquo;s definitions for automated driving, in Level 2 the car controls braking, acceleration, and deceleration, but the human is responsible for providing situational awareness at all times. Of course, this raises the question of whether the driver is actually paying attention.&lt;/p&gt;
&lt;p&gt;[…] To test whether drivers were actually paying attention while using a Level 2 system, IIHS recruited participants and then had them drive for roughly an hour, either using the car&amp;rsquo;s Level 2 system or not. At three predetermined locations on the test route, a second car—&lt;em&gt;&lt;strong&gt;the one with the large pink bear attached to its trunk&lt;/strong&gt;&lt;/em&gt;—would overtake the participant&amp;rsquo;s vehicle. At the end of the study, the drivers were asked if they saw anything odd, and if so, how many times.&lt;/p&gt;
&lt;/blockquote&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;h2 class="relative group"&gt;&lt;a href="https://ctrlcctrlv.github.io/TT2020/docs/moreinfo.html" target="_blank" rel="noreferrer"&gt;TT2020 is an advanced, open source, hyperrealistic, multilingual typewriter font for a new decade!&lt;/a&gt;
 &lt;div id="tt2020-is-an-advanced-open-source-hyperrealistic-multilingual-typewriter-font-for-a-new-decade" 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="#tt2020-is-an-advanced-open-source-hyperrealistic-multilingual-typewriter-font-for-a-new-decade" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Crazy obsessions like this, are why even I got into writing software.&lt;br&gt;
From the &lt;a href="https://ctrlcctrlv.github.io/TT2020/docs/moreinfo.html" target="_blank" rel="noreferrer"&gt;problem page,&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;In the second image, there are three ‹N›’s. Yet, they all look exactly the same. A real typewriter can, quite rarely, have one of its letters damaged, or misaligned, such that that letter regularly makes an inferior strike to all the other letters. However, this degree of regularity is &lt;em&gt;impossible&lt;/em&gt;; could Underwood or Remington have acheived it, they would have leapt for joy.&lt;br&gt;
While working on the project, incredibly, another bad typewriter scene intruded upon my life. I don&amp;rsquo;t often sit around and watch movies, so I suppose there are only two possibilities:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;a. There are so many of these unrealistic typewritten documents in late-2010’s cinema that almost any movie with a typewritten document in it will be hopelessly unrealistic, or&lt;br&gt;
b. The universe, nay, God himself, was urging me on to complete this project in lieu of others I could finish!&lt;/p&gt;
&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;a href="https://ctrlcctrlv.github.io/TT2020/docs/download.html" target="_blank" rel="noreferrer"&gt;The Font is here.&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;h2 class="relative group"&gt;&lt;a href="https://www.troyhunt.com/home-assistant-pwned-passwords-and-security-misconceptions/" target="_blank" rel="noreferrer"&gt;Home Assistant decided to implement password security checks by integrating Pwned Password lookups at the Have I Been Pwned project and all hell broke loose. Here’s Troy Hunt’s measured look at the situation.&lt;/a&gt;
 &lt;div id="home-assistant-decided-to-implement-password-security-checks-by-integrating-pwned-password-lookups-at-the-have-i-been-pwned-project-and-all-hell-broke-loose-heres-troy-hunts-measured-look-at-the-situation" 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="#home-assistant-decided-to-implement-password-security-checks-by-integrating-pwned-password-lookups-at-the-have-i-been-pwned-project-and-all-hell-broke-loose-heres-troy-hunts-measured-look-at-the-situation" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;blockquote&gt;&lt;p&gt;I’ve written before about how IRL analogies are terrible and this one is no exception. You will not die if you use a weak password. There aren’t government regulations defining how the software is built. You can be any age to operate it. Home Assistant is free. And so on and so forth.&lt;br&gt;
Cars warn you about a number of unsafe decisions and so does Home Assistant, but that’s where the similarities end. Everything else can be adequately discussed by simply talking about the technology rather than trying to find things IRL to compare to.&lt;/p&gt;
&lt;p&gt;If it’s in Pwned Passwords, I&amp;rsquo;ve seen it in plain text. If I’ve seen it in plain text, hackers have seen it in plain text. It doesn’t matter how many letters and numbers and symbols you’ve got in your password, if it’s in Pwned Passwords then it’s floating around the web where plenty of other people have access to it. The guidance from NIST I quoted earlier said not to use “passwords obtained from previous breach corpuses” - there is no caveat that says “unless you think it&amp;rsquo;s a really good one”!&lt;/p&gt;
&lt;p&gt;Pascal has already indicated this will be configurable and as I said earlier, I agree. With the benefit of hindsight, I suspect he’d do things differently in the first place, even though the intention was good.&lt;br&gt;
I do agree with the comments that people should be free to be dicks and deal with the consequences. What I’d like to encourage people to do, however, is to take this as an opportunity to get a password manager and strengthen all passwords that require it.&lt;/p&gt;
&lt;/blockquote&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;Until the next letter folks!&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;</description></item><item><title>On Arpanet, Passwords and Moving Codebases</title><link>https://janusworx.com/personal/on-arpanet-passwords-and-moving-codebases/</link><pubDate>Fri, 27 Aug 2021 05:45:00 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/personal/on-arpanet-passwords-and-moving-codebases/</guid><description>&lt;p&gt;Welcome to August’s work letter :)&lt;br&gt;
As usual, click the headings to wander off to the original articles&lt;/p&gt;

&lt;h2 class="relative group"&gt;A couple of my own posts
 &lt;div id="a-couple-of-my-own-posts" 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="#a-couple-of-my-own-posts" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;I wrote about my thoughts on my &lt;a href="https://janusworx.com/blog/a-few-thoughts-on-the-kindle-oasis/" target="_blank" rel="noreferrer"&gt;Kindle Oasis&lt;/a&gt; …&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;I got it.&lt;br&gt;
I used it.&lt;br&gt;
And decided within a day, that I was not going back to a Paperwhite, ever.&lt;br&gt;
I realised that the Oasis, to me, is not a “premium” device.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;and &lt;a href="https://janusworx.com/blog/joining-two-images-using-imagemagick/" target="_blank" rel="noreferrer"&gt;joining images using ImageMagick&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;h2 class="relative group"&gt;&lt;a href="https://twobithistory.org/2021/02/07/arpanet.html" target="_blank" rel="noreferrer"&gt;Two exhaustive articles on the historical significance of the Arpanet and how the protocol worked&lt;/a&gt;
 &lt;div id="two-exhaustive-articles-on-the-historical-significance-of-the-arpanet-and-how-the-protocol-worked" 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="#two-exhaustive-articles-on-the-historical-significance-of-the-arpanet-and-how-the-protocol-worked" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twobithistory.org/2021/02/07/arpanet.html" target="_blank" rel="noreferrer"&gt;Article 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twobithistory.org/2021/03/08/arpanet-protocols.html" target="_blank" rel="noreferrer"&gt;Article 2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;&lt;p&gt;This is what was totally new about the ARPANET. The ICCC demonstration didn’t just involve a human communicating with a distant computer. It wasn’t just a demonstration of remote I/O. It was a demonstration of software remotely communicating with other software, something nobody had seen before.&lt;br&gt;
So what I’m trying to drive home here is that there is an important distinction between statement A, “the ARPANET connected people in different locations via computers for the first time,” and statement B, “the ARPANET connected computer systems to each other for the first time.” That might seem like splitting hairs, but statement A elides some illuminating history in a way that statement B does not.&lt;/p&gt;
&lt;p&gt;In a section with the belabored title, “Technical Aspects of the Effort Which Were Successful and Aspects of the Effort Which Did Not Materialize as Originally Envisaged,” the authors wrote:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;*Possibly the most difficult task undertaken in the development of the ARPANET was the attempt—which proved successful—*&lt;em&gt;&lt;strong&gt;to make a number of independent host computer systems of varying manufacture, and varying operating systems within a single manufactured type, communicate with each other despite their diverse characteristics.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;There you have it from no less a source than the federal government of the United States.&lt;/p&gt;
&lt;/blockquote&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;h2 class="relative group"&gt;&lt;a href="https://blog.1password.com/a-smarter-password-generator/" target="_blank" rel="noreferrer"&gt;The 1Password blog with a high level overview of their &lt;em&gt;Smart&lt;/em&gt; Password Generator&lt;/a&gt;
 &lt;div id="the-1password-blog-with-a-high-level-overview-of-their" 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="#the-1password-blog-with-a-high-level-overview-of-their" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;blockquote&gt;&lt;p&gt;Long, random passwords just aren’t convenient. If you need to enter 45 randomly-generated characters on another device often enough, you’ll inevitably change that password to something like password123 because it’s easy to type and remember. It’s also - you got it - not strong.&lt;/p&gt;
&lt;p&gt;While a lengthy, unintelligible password may appear stronger than a smart one, it’s mainly illusion. Pronounceable syllables make a smart password look human generated and, therefore, weaker. But a human-generated password could never be chosen uniformly and, therefore, can’t be accurately assessed for entropy.&lt;/p&gt;
&lt;p&gt;We’ve made a compromise of sorts. We’ve sacrificed a few bits of (theoretical) entropy, that don’t affect real-world security, to gain a whole lot of convenience, compatibility, and accessibility — and those certainly are real world, which is what really matters.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 class="relative group"&gt;&lt;a href="https://sedimental.org/tech_refresh.html" target="_blank" rel="noreferrer"&gt;Mahmoud Hashemi talks about Changing the Tires on a Moving Codebase&lt;/a&gt;
 &lt;div id="mahmoud-hashemi-talks-about-changing-the-tires-on-a-moving-codebase" 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="#mahmoud-hashemi-talks-about-changing-the-tires-on-a-moving-codebase" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;blockquote&gt;&lt;p&gt;We realized that CI is more sensitive than most users for most of the site. So we focused in on testing the highest impact code. What’s high-impact? 1) the code that fails most visibly and 2) the code that’s hardest to retry. You can build an inventory of high-impact code in under a week by looking at traffic stats, batch job schedules, and asking your support staff.&lt;/p&gt;
&lt;p&gt;And it really is important to develop close ties with your support team. Embedded in our strategy above was that CI is much more sensitive than a real user. While perfection is tempting, it’s not unrealistic to ask a bit of patience from an enterprise user, provided your support team is prepared. Sync with them weekly so surprise is minimized. If they’re feeling ambitious, you can teach them some Sentry basics, too.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;My main lessons from Mahmoud’s post …&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Everyone has a plan ’till they get punched in the mouth. — Mike Tyson&lt;/li&gt;
&lt;li&gt;Prioritise work, on what actually matters. Perfection can wait.&lt;/li&gt;
&lt;li&gt;People and their feedback comes first. Matters a lot more than data driven decisions. After all, software is &lt;em&gt;used by&lt;/em&gt; and &lt;em&gt;for&lt;/em&gt; people.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Until the next letter, folks … :)&lt;/p&gt;
&lt;p&gt;P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" &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;</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>Draft No. 4</title><link>https://janusworx.com/personal/draft-no-4/</link><pubDate>Mon, 16 Aug 2021 09:06:41 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/personal/draft-no-4/</guid><description>&lt;p&gt;Just finished John McPhee’s, Draft No. 4.&lt;/p&gt;
&lt;p&gt;I could pithily summarise it as …&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Practice a lot of things.&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Work at finding your thing.&lt;/li&gt;
&lt;li&gt;Practice you thing (lots! deeply! a fuckton.)&lt;/li&gt;
&lt;li&gt;Work within established rules.&lt;/li&gt;
&lt;li&gt;Bend the rules to fit your thing.&lt;/li&gt;
&lt;li&gt;Break the rules once you know your thing deeply!&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- TEASER_END --&gt;
&lt;p&gt;McPhee writes about the craft of writing.&lt;br&gt;
But the advice could apply broadly to any creative endeavour.&lt;/p&gt;
&lt;p&gt;This series of essays and lessons and backstory was also hugely confirming to me.&lt;br&gt;
Because, while I may not have McPhee’s grace and economy, most of his advice is something I have always understood and done intuitively.&lt;br&gt;
Like he’d say something and then illustrate it.&lt;br&gt;
Like he struggles, even now, the way I do, every time I sit down to write.&lt;br&gt;
That these things take time. (and that we can be ok with it)&lt;br&gt;
That my prose is grasping at the way he writes. Sturdy, workman-like, no muss, no fuss.&lt;br&gt;
The journey is hard work for most people, the gifted are few.&lt;/p&gt;
&lt;p&gt;I’d would have called it the definitive book, the first book to read, on the craft of writing, if I had not already read, Caro’s, Working.&lt;/p&gt;
&lt;p&gt;This is what I’d written about Working …&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;if you haven’t read the Power Broker, you should&lt;br&gt;
if you haven’t read the Lyndon volumes, you should&lt;br&gt;
this book is Caro’s account of the work, that went into those works.&lt;br&gt;
the ceaseless toil, the thankless years, the people and their stories&lt;br&gt;
Caro is Caro, master of the craft.&lt;br&gt;
There are only a few explicit lessons here.&lt;br&gt;
but plenty if you care enough to read between the lines&lt;br&gt;
plenty if you make this an annual read, like i will&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;McPhee treads the same ideas on a different path, and I loved both journeys (I love Caro, only a &lt;em&gt;little&lt;/em&gt; more).&lt;br&gt;
So now, I have two books that I’d recommend as books to read on the craft.&lt;/p&gt;
&lt;p&gt;Highlights from the book follow (all emphases, mine),&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;em&gt;After putting the two cards together, and then constructing around them the rest of the book, all I had to do was write it, and that took more than a year.&lt;/em&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;&lt;em&gt;It is meant to be about as visible as someone’s bones. And I hope this structure illustrates what I take to be a basic criterion for all structures: they should not be imposed upon the material. They should arise from within it. That perfect circle was a help to me, but it could be a liability for anyone trying to impose such a thing on just any set of facts. A structure is not a cookie cutter.&lt;/em&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;&lt;em&gt;Certain Baroque poets, among others, wrote shaped verse, in which lines were composed so that the typography resembled the topic—blossoms, birds, butterflies. That also is not what I mean by structure. A piece of writing has to start somewhere, go somewhere, and sit down when it gets there. You do that by building what you hope is an unarguable structure. Beginning, middle, end. Aristotle, Page 1.&lt;/em&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;&lt;em&gt;Each of those structures, from the nineteen-sixties and nineteen-seventies, was worked out after copying with a typewriter all notes from notebooks and transcribing the contents of microcassettes. I used an Underwood 5, which had once been a state-of-the-art office typewriter but by 1970 had been outclassed by the I.B.M. Selectric. With the cassettes, I used a Sanyo TRC5200 Memo-Scriber, which was activated with foot pedals, like a sewing machine or a pump organ.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The note-typing could take many weeks, but it collected everything in one legible place, and it ran all the raw material in some concentration through the mind.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The notes from one to the next frequently had little in common. They jumped from topic to topic, and only in places were sequentially narrative. So I always rolled the platen and left blank space after each item to accommodate the scissors that were fundamental to my advanced methodology.&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;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;After reading and rereading the typed notes and then developing the structure and then coding the notes accordingly in the margins and then photocopying the whole of it, I would go at the copied set with the scissors, cutting each sheet into slivers of varying size. If the structure had, say, thirty parts, the slivers would end up in thirty piles that would be put into thirty manila folders. One after another, in the course of writing, I would spill out the sets of slivers, arrange them ladderlike on a card table, and refer to them as I manipulated the Underwood.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;If this sounds mechanical, its effect was absolutely the reverse. If the contents of the seventh folder were before me, the contents of twenty-nine other folders were out of sight. Every organizational aspect was behind me. The procedure eliminated nearly all distraction and concentrated just the material I had to deal with in a given day or week. It painted me into a corner, yes, but in doing so it freed me to write&lt;/em&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;&lt;em&gt;People often ask how I know when I’m done—not just when I’ve come to the end, but in all the drafts and revisions and substitutions of one word for another how do I know there is no more to do? When am I done? I just know. I’m lucky that way. What I know is that I can’t do any better; someone else might do better, but that’s all I can do; so I call it done.&lt;/em&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;&lt;em&gt;It is so easy to misjudge yourself and get stuck in the wrong genre. You avoid that, early on, by writing in every genre. If you are telling yourself you’re a poet, write poems. Write a lot of poems. If fewer than one work out, throw them all away; you’re not a poet. Maybe you’re a novelist. You won’t know until you have written several novels.&lt;/em&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;&lt;em&gt;Ben Jonson summarized the process when he said,&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;“Though a man be more prone and able for one kind of writing than another, yet he must exercise all.”&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;em&gt;Gender aside, I take that to be a message to young writers. Art is where you find it. Good writing is where you find it.&lt;/em&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;&lt;em&gt;After all those one-on-one sessions discussing back-door plays and the role of the left-handed comma in the architectonics of basketball—while The New Yorker magazine hurtled toward its deadlines—I finally said in wonderment, “How can you afford to use so much time and go into so many things in such detail with just one writer when this whole enterprise is yours to keep together?”&lt;/em&gt;&lt;br&gt;
*He said, *&lt;em&gt;&lt;strong&gt;“It takes as long as it takes.”&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;As a writing teacher, I have repeated that statement to two generations of students. If they are writers, they will never forget it.&lt;/em&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;&lt;em&gt;Shawn also recognized that no two writers are the same, like snowflakes and fingerprints. No one will ever write in just the way that you do, or in just the way that anyone else does. Because of this fact, there is no real competition between writers. What appears to be competition is actually nothing more than jealousy and gossip. Writing is a matter strictly of developing oneself. You compete only with yourself. You develop yourself by writing. An editor’s goal is to help writers make the most of the patterns that are unique about them.&lt;/em&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;&lt;em&gt;Students have always asked what I do to prepare for interviews. Candidly, not much. At minimum, though, I think you should do enough preparation to be polite. You would not have wanted to ask Stephen Harper what he did for a living. Before, during, and after an interview, or a series of interviews, do as much reading as the situation impels you to do. In the course of writing, you really find out what you don’t know, and you read in an attempt to get it right. Nonetheless, you get it wrong, especially if you are an innumerate English major and you are writing about science.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;But science, for me, is the exception that probes the rule. I have never published anything on a science that has not been vetted by the scientists involved.&lt;/em&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;&lt;em&gt;Once captured, words have to be dealt with. You have to trim them and straighten them to make them transliterate from the fuzziness of speech to the clarity of print. Speech and print are not the same, and a slavish presentation of recorded speech may not be as representative of a speaker as dialogue that has been trimmed and straightened.&lt;/em&gt;&lt;br&gt;
*Please understand: *&lt;em&gt;&lt;strong&gt;You trim and straighten—take the “um”s, “uh”s, and “uh but um”s out, the false starts—but you do not make it up.&lt;/strong&gt;&lt;/em&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;&lt;em&gt;It isn’t all like that—only the first draft. First drafts are slow and develop clumsily because every sentence affects not only those before it but also those that follow. The first draft of my book on California geology took two gloomy years; the second, third, and fourth drafts took about six months altogether.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;That four-to-one ratio in writing time—first draft versus the other drafts combined—has for me been consistent in projects of any length, even if the first draft takes only a few days or weeks. There are psychological differences from phase to phase, and the first is the phase of the pit and the pendulum. After that, it seems as if a different person is taking over. Dread largely disappears. Problems become less threatening, more interesting. Experience is more helpful, as if an amateur is being replaced by a professional. Days go by quickly and not a few could be called pleasant, I’ll admit.&lt;/em&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;&lt;em&gt;“Dear Jenny: The way to do a piece of writing is three or four times over, never once.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;For me, the hardest part comes first, getting something—anything—out in front of me. Sometimes in a nervous frenzy I just fling words as if I were flinging mud at a wall. Blurt out, heave out, babble out something—anything—as a first draft. With that, you have achieved a sort of nucleus.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Then, as you work it over and alter it, you begin to shape sentences that score higher with the ear and eye. Edit it again—top to bottom. The chances are that about now you’ll be seeing something that you are sort of eager for others to see.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;And all that takes time. What I have left out is the interstitial time.&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;You finish that first awful blurting, and then you put the thing aside. You get in your car and drive home. On the way, your mind is still knitting at the words. You think of a better way to say something, a good phrase to correct a certain problem. Without the drafted version—if it did not exist—you obviously would not be thinking of things that would improve it. In short, you may be actually writing only two or three hours a day, but your mind, in one way or another, is working on it twenty-four hours a day—yes, while you sleep—but only if some sort of draft or earlier version already exists. Until it exists, writing has not really begun.”&lt;/em&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;&lt;em&gt;Martha calls me up nine times a day to tell me that writing is impossible, that she’s not cut out to do it, that she’ll never finish what she is working on, et cetera, et cetera, and so forth and so on, and I, who am probably disintegrating a third of the way through an impossible first draft, am supposed to turn into the Rock of Gibraltar. The talking rock: “Just stay at it; perseverance will change things.” “You’re so unhappy you sound authentic to me.” “You can’t make a fix unless you know what is broken.”&lt;/em&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;&lt;em&gt;She said, “My style is always that of what I am reading at the time—or overwhelmingly self-conscious and strained.”&lt;/em&gt;&lt;br&gt;
&lt;em&gt;I said, “How unfortunate that would be if you were fifty-four. At twenty-three, it is not only natural; it is important. The developing writer reacts to excellence as it is discovered—wherever and whenever—and of course does some imitating (unavoidably) in the process of drawing from the admired fabric things to make one’s own. Rapidly, the components of imitation fade. What remains is a new element in your own voice, which is not in any way an imitation. Your manner as a writer takes form in this way, a fragment at a time. A style that lacks strain and self-consciousness is what you seem to aspire to, or you wouldn’t be bringing the matter up. Therefore, your goal is in the right place.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;So practice taking shots at it. A relaxed, unself-conscious style is not something that one person is born with and another not. Writers do not spring full-blown from the ear of Zeus.”&lt;/em&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;&lt;em&gt;Jenny said, “I can’t seem to finish anything.”&lt;/em&gt;&lt;br&gt;
&lt;em&gt;I said, “Neither can I.” Then I went back to my own writing, my own inability to get going until five in the afternoon, my animal sense of being hunted, my resemblance to the sand of Gibraltar.&lt;/em&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;&lt;em&gt;It is toward the end of the second draft, if I’m lucky, when the feeling comes over me that I have something I want to show to other people, something that seems to be working and is not going to go away.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;After reading the second draft aloud, and going through the piece for the third time (removing the tin horns and radio static that I heard while reading), I enclose words and phrases in pencilled boxes for Draft No. 4.&lt;/em&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;&lt;em&gt;If I enjoy anything in this process it is Draft No. 4. I go searching for replacements for the words in the boxes. The final adjustments may be small-scale, but they are large to me, and I love addressing them. You could call this the copy-editing phase if real copy editors were not out there in the future prepared to examine the piece.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;You draw a box not only around any word that does not seem quite right but also around words that fulfill their assignment but seem to present an opportunity. While the word inside the box may be perfectly O.K., there is likely to be an even better word for this situation, a word right smack on the button, and why don’t you try to find such a word?&lt;/em&gt;&lt;br&gt;
&lt;em&gt;If none occurs, don’t linger; keep reading and drawing boxes, and later revisit them one by one. If there’s a box around “sensitive” because it seems pretentious in the context, try “susceptible.” Why “susceptible”? Because you looked up “sensitive” in the dictionary and it said “highly susceptible.”&lt;/em&gt;&lt;br&gt;
&lt;em&gt;With dictionaries, I spend a great deal more time looking up words I know than words I have never heard of—at least ninety-nine to one. The dictionary definitions of words you are trying to replace are far more likely to help you out than a scattershot wad from a thesaurus. If you use the dictionary after the thesaurus, the thesaurus will not hurt you.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;So draw a box around “wad.” Webster: “The cotton or silk obtained from the Syrian swallowwort, formerly cultivated in Egypt and imported to Europe.” Oh. But read on: “A little mass, tuft, or bundle … a small, compact heap.” Stet that one.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;I call this “the search for the mot juste,” because when I was in the eighth grade Miss Bartholomew told us that Gustave Flaubert walked around in his garden for days on end searching in his head for &lt;strong&gt;&lt;strong&gt;le mot juste.&lt;/strong&gt;&lt;/strong&gt; Who could forget that? Flaubert seemed heroic. Certain kids considered him weird.&lt;/em&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;&lt;em&gt;In the search for words, thesauruses are useful things, but they don’t talk about the words they list. They are also dangerous. They can lead you to choose a polysyllabic and fuzzy word when a simple and clear one is better.&lt;/em&gt;&lt;br&gt;
*The value of a thesaurus is not to make a writer seem to have a vast vocabulary of recondite words. The value of a thesaurus is in the assistance it can give you in finding the best possible word for the mission that the word is supposed to fulfill. Writing teachers and journalism courses have been known to compare them to crutches and to imply that no writer of any character or competence would use them. At best, thesauruses are mere rest stops in the search for the *&lt;em&gt;&lt;strong&gt;mot juste.&lt;/strong&gt;&lt;/em&gt; &lt;em&gt;Your destination is the dictionary.&lt;/em&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;&lt;em&gt;Suppose you sense an opportunity beyond the word “intention.” You read the dictionary’s thesaurian list of synonyms: “intention, intent, purpose, design, aim, end, object, objective, goal.” But the dictionary doesn’t let it go at that. It goes on to tell you the differences all the way down the line—how each listed word differs from all the others. Some dictionaries keep themselves trim by just listing synonyms and not going on to make distinctions. You want the first kind, in which you are not just getting a list of words; you are being told the differences in their hues, as if you were looking at the stripes in an awning, each of a subtly different green. Look up “vertical.” It tells you—believe it or not—that “vertical,” “perpendicular,” and “plumb” differ each from the two others. Ditto “plastic, pliable, pliant, ductile, malleable, adaptable.” Ditto “fidelity, allegiance, fealty, loyalty, devotion, piety.”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I grew up in canoes on northern lakes and forest rivers. Thirty years later, I was trying to choose a word or words that would explain why anyone in a modern nation would choose to go a long distance by canoe. I was damned if I was going to call it a sport, but nothing else occurred. I looked up “sport.” There were seventeen lines of definition: “1. That which diverts, and makes mirth; pastime; diversion. 2. A diversion of the field.” I stopped there.&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;His professed criteria were to take it easy, see some wildlife, and travel light with his bark canoes—nothing more—and one could not help but lean his way. I had known of people who took collapsible cots, down pillows, chain saws, outboard motors, cases of beer, and battery-powered portable refrigerators on canoe trips—even into deep wilderness. You set your own standards. Travel by canoe is not a necessity, and will nevermore be the most efficient way to get from one region to another, or even from one lake to another—anywhere. A canoe trip has become simply a rite of oneness with certain terrain, &lt;strong&gt;&lt;strong&gt;a diversion of the field,&lt;/strong&gt;&lt;/strong&gt; an act performed not because it is necessary but because there is value in the act itself.…&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&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;em&gt;&lt;strong&gt;Writing is selection.&lt;/strong&gt;&lt;/em&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;&lt;em&gt;Just to start a piece of writing you have to choose one word and only one from more than a million in the language. Now keep going. What is your next word? Your next sentence, paragraph, section, chapter? Your next ball of fact. You select what goes in and you decide what stays out.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;At base you have only one criterion: If something interests you, it goes in—if not, it stays out. That’s a crude way to assess things, but it’s all you’ve got. Forget market research. Never market-research your writing. Write on subjects in which you have enough interest on your own to see you through all the stops, starts, hesitations, and other impediments along the way.&lt;/em&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;&lt;em&gt;Ideally, a piece of writing should grow to whatever length is sustained by its selected material—that much and no more.&lt;/em&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;&lt;em&gt;Green 4 does not mean lop off four lines at the bottom, I tell them. The idea is to remove words in such a manner that no one would notice that anything has been removed.&lt;/em&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;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Just like I do here!&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>On Cheap Programmable Quantum Computers, Hardware Homomorphic Encryption Support, and Ethical Use of Technology</title><link>https://janusworx.com/personal/on-cheap-programmable-quantum-computers-hardware-homomorphic-encryption-support-and-ethical-use-of-technology/</link><pubDate>Fri, 30 Jul 2021 05:45:00 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/personal/on-cheap-programmable-quantum-computers-hardware-homomorphic-encryption-support-and-ethical-use-of-technology/</guid><description>&lt;p&gt;&lt;small&gt;&lt;em&gt;This post was first sent to my newsletter on July 23rd, 2021.&lt;br&gt;
[You really ought to subscribe][1] :)&lt;/em&gt;&lt;/small&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;New month, new work letter. &lt;br&gt;
Before I begin though, please hit reply to these letters and let me know what you think, whether you like them or not and if there is anything you’d want me to write / hunt &amp;amp; research about!&lt;br&gt;
Like I wrote in &lt;a href="https://janusworx.com/blog/on-moveable-feasts-and-memory/" target="_blank" rel="noreferrer"&gt;the introduction to April’s letter&lt;/a&gt;, both the letter and the website have &lt;em&gt;zero&lt;/em&gt; tracking.&lt;br&gt;
So I have no way of knowing, whether you like stuff or not, whether it resonates or not, whether I am preaching to throngs or shouting into the void, &lt;em&gt;unless you tell me!&lt;/em&gt;&lt;br&gt;
Let’s dig into it. As usual, click the headers, to wander off to the orginal articles :)&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;!-- TEASER_END --&gt;

&lt;h2 class="relative group"&gt;&lt;a href="https://arstechnica.com/science/2021/03/programmable-optical-quantum-computer-arrives-late-steals-the-show/" target="_blank" rel="noreferrer"&gt;Programmable optical quantum computer arrives late, steals the show&lt;/a&gt;
 &lt;div id="programmable-optical-quantum-computer-arrives-late-steals-the-show" 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="#programmable-optical-quantum-computer-arrives-late-steals-the-show" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;blockquote&gt;&lt;p&gt;Excuse me a moment—I am going to be bombastic, over excited, and possibly annoying. The race is run, and we have a winner in the future of quantum computing. IBM, Google, and everyone else can turn in their quantum computing cards and take up knitting.&lt;/p&gt;
&lt;p&gt;One key to quantum computing (or any computation, really) is the ability to change a qubit’s state depending on the state of another qubit. This turned out to be doable but cumbersome in optical quantum computing. Typically, a two-(or more) qubit operation is a nonlinear operation, and optical nonlinear processes are very inefficient. Linear two-qubit operations are possible, but they are probabilistic, so you need to repeat your calculation many times to be sure you know which answer is correct. A second critical feature is programmability. It is not desirable to have to create a new computer for every computation you wish to perform. Here, optical quantum computers really seemed to fall down. An optical quantum computer could be easy to set up and measure, or it could be programmable—but not both.&lt;/p&gt;
&lt;p&gt;So, what has changed to suddenly make optical quantum computers viable? One is the appearance of detectors that can resolve the number of photons they receive. A second key development was integrated optical circuits. performance has gotten much, much better. Integrated optics are now commonly used in the telecommunications industry, with the scale and reliability that that implies.&lt;br&gt;
The researchers, from a startup called Xanadu and the National Institute of Standards, have pulled together these technology developments to produce a single integrated optical chip that generates eight qubits. The internal setting of the interferometer is the knob that the programmer uses to control the computation. In practice, the knob just changes the temperature of individual waveguide segments. But the programmer doesn&amp;rsquo;t have to worry about these details. Instead, they have an application programming interface (Strawberry Fields Python Library) that takes very normal-looking Python code. This code is then translated by a control system that maintains the correct temperature differentials on the chip,&lt;/p&gt;
&lt;/blockquote&gt;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/v7iAqcFCTQQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;blockquote&gt;&lt;p&gt;What is more, the scaling does not present huge amounts of increased complexity. In superconducting qubits, each qubit is a current loop in a magnetic field. Each qubit generates a field that talks to all the other qubits all the time. Engineers have to take a great deal of trouble to decouple and couple qubits from each other at the right moment. The larger the system, the trickier that task becomes. Ion qubit computers face an analogous problem in their trap modes. There isn’t really an analogous problem in optical systems, and that is their key advantage.&lt;/p&gt;
&lt;/blockquote&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;h2 class="relative group"&gt;&lt;a href="https://www.anandtech.com/show/16533/intel-microsoft-darpa-to-build-silicon-for-fully-homomorphic-encryption-this-is-important" target="_blank" rel="noreferrer"&gt;Intel to Build Silicon for Fully Homomorphic Encryption&lt;/a&gt;
 &lt;div id="intel-to-build-silicon-for-fully-homomorphic-encryption" 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="#intel-to-build-silicon-for-fully-homomorphic-encryption" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;blockquote&gt;&lt;p&gt;When considering data privacy and protections, there is no data more important than personal data, whether that’s medical, financial, or even social. The discussions around access to our data, or even our metadata, becomes about who knows what, and if my personal data is safe. Today’s announcement between Intel, Microsoft, and DARPA, is a program designed around keeping information safe and encrypted, but still using that data to build better models or provide better statistical analysis without disclosing the actual data. It’s called Fully Homomorphic Encryption, but it is so computationally intense that the concept is almost useless in practice.&lt;/p&gt;
&lt;p&gt;So whether that means combining hospital medical records over a state, or customizing a personal service using personal metadata gathered on a user’s smartphone, FHE at that scale is no longer a viable solution. Enter the DARPA DPRIVE program.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;DARPA: Defense Advanced Research Projects Agency&lt;br&gt;
DPRIVE: Data Protection in Virtual Environments&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;Intel has announced that as part of the DPRIVE program, it has signed an agreement with DARPA to develop custom IP leading to silicon to enable faster FHE in the cloud, specifically with Microsoft on both Azure and JEDI cloud, initially with the US government. As part of this multi-year project, expertise from Intel Labs, Intel’s Design Engineering, and Intel’s Data Platforms Group will come together to create a dedicated ASIC to reduce the computational overhead of FHE over existing CPU-based methods. The press release states that the target is to reduce processing time by &lt;em&gt;five orders of magnitude&lt;/em&gt; from current methods, reducing compute times from days to minutes.&lt;/p&gt;
&lt;/blockquote&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;h2 class="relative group"&gt;&lt;a href="https://seths.blog/2021/03/the-sixth-layer/" target="_blank" rel="noreferrer"&gt;Seth Godin on the ethical use of our newly gained technological capabilities&lt;/a&gt;
 &lt;div id="seth-godin-on-the-ethical-use-of-our-newly-gained-technological-capabilities" 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="#seth-godin-on-the-ethical-use-of-our-newly-gained-technological-capabilities" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;blockquote&gt;&lt;p&gt;No wonder we’re a bit dizzy. We just multiplied our minds by many orders of magnitude. It’s easy to confuse someone else’s memory (or manipulation) with our hard-earned ability to remember things that actually happened to us.&lt;/p&gt;
&lt;p&gt;And we’re now realizing that we have the power (and perhaps the obligation) to use shared knowledge to make better, more thoughtful decisions. And to intentionally edit out the manipulations and falsehoods that are designed to spread, not to improve our lives.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;Until next time …&lt;br&gt;
Don’t forget to write! :)&lt;/p&gt;
&lt;hr&gt;</description></item><item><title>Learning Backend WebDev, Log #11 - Got a Django Certificate! Some Reflections</title><link>https://janusworx.com/work/learning-backend-webdev-log-11-django-cert-some-reflections/</link><pubDate>Wed, 30 Jun 2021 18:42:52 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/learning-backend-webdev-log-11-django-cert-some-reflections/</guid><description>&lt;p&gt;Been a few days since I wrote about Django.&lt;br&gt;
Last week was a roller coaster personally, so I took things slow.&lt;br&gt;
And then got back to a rhythm this week.&lt;/p&gt;
&lt;!-- TEASER_END --&gt; 
&lt;p&gt;The daily work’s paid off and I managed to hit a milestone.&lt;br&gt;
I got done with my Django course, today! :)&lt;br&gt;
Hurrah!&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/edx-django-cert.png" &gt;&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt="Picture of my certificate, passing the Django Course"
 src="https://janusworx.com/images/2021/edx-django-cert.png"
 &gt;&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://credentials.edx.org/credentials/c2b43bbea674427ea6b764993ce00b6d/" target="_blank" rel="noreferrer"&gt;Cert online.&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;h2 class="relative group"&gt;Some Reflections (in no particular order)
 &lt;div id="some-reflections-in-no-particular-order" 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="#some-reflections-in-no-particular-order" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I should keep better logs and notes about how I go about doing work. I kept deleting my sqlite database, trying to fix model errors, forgetting that I’d moved to Postgres.&lt;/li&gt;
&lt;li&gt;This whole Django journey has built up on the last one. While I stood up a Django project the last time, I didn’t understand or grasp what I was doing.&lt;/li&gt;
&lt;li&gt;This time around, I’ve understood the &lt;em&gt;why&lt;/em&gt; and I’ve gotten a better mental model of how it all hangs together. What the request response cycle is. What needs to happen then. How it’s mostly all &lt;a href="https://en.wikipedia.org/wiki/Create,_read,_update_and_delete" target="_blank" rel="noreferrer"&gt;CRUD.&lt;/a&gt; How Django enables me to tie all these pieces together using models and views and forms and templates and a million and one little things to ease my life.&lt;/li&gt;
&lt;li&gt;I’m now confident enough to go try standing up a Django project on my own and then muddle through, to build something I want.&lt;/li&gt;
&lt;li&gt;I started the year, flailing about in the world of programming, because &lt;em&gt;everything&lt;/em&gt; interested me. I’m thankful I took the time, to figure out what interested me and where I wanted to apply my focus to. Once I zeroed in on doing web development with Python, I’ve made much better progress learning.&lt;/li&gt;
&lt;li&gt;While I understand that I need to &lt;em&gt;write&lt;/em&gt; a lot more code, I want to finish building up a firm foundation first. To that end I want to &lt;a href="https://www.pg4e.com/" target="_blank" rel="noreferrer"&gt;learn Postgres&lt;/a&gt;, finish up &lt;a href="https://www.edx.org/course/cs50s-web-programming-with-python-and-javascript" target="_blank" rel="noreferrer"&gt;CS50W&lt;/a&gt;, crash learn &lt;a href="https://www.udemy.com/course/datastructurescncpp/" target="_blank" rel="noreferrer"&gt;Data Structures &amp;amp; Algorithms&lt;/a&gt; (for my Indian interviews. Nearly every Indian company I’ve interviewed with, has made me do this and I’ve flunked miserably every time. I hope to miserably pass muster at least, going forward) and a &lt;a href="https://www.edx.org/course/c-programming-language-foundations" target="_blank" rel="noreferrer"&gt;wee bit of C.&lt;/a&gt; Also JavaScript. Lots to learn. I need to do this bit by bit daily, just like I did this part so far.&lt;/li&gt;
&lt;li&gt;I understand what folks say, when they talk about programming. I understand their opinions better. Makes me realise that I’ve gotten the basics down pat enough.&lt;br&gt;
To wit, Dr. Chuck was opining on destructors in classes in Javascript, and why there weren’t there in the early days and why they might be desirable now. And all the while, I was nodding my head in agreement, having understood every word, going uh-huh, uh-huh. Why? Yes! It’d be a darned good idea. I could do custom cleanup when my classes get torn down. (And this, from someone who has not written more than two pages of JavaScript yet 😂)&lt;/li&gt;
&lt;li&gt;I kept waiting all this while, for it get easier, to reach some abstract level by means of some deep insight, hoping once I’d master &lt;em&gt;that&lt;/em&gt;, I could then just fly along, spewing stuff, left right and centre, creating amazing works of code.&lt;br&gt;
What I found instead, is a bunch of primitives that folk all over the world, take and put together in different ways, using various methods of combining them.&lt;/li&gt;
&lt;li&gt;I realised that most of programming is just convention, based on a few truths. Which means that there is no grand unifying theory that ties all this in a neat bow. It’s just a lot of dedicated folk putting in the toil to create said works of code and polishing them to make it look beautiful. It’s mostly hard work. Not Genius.&lt;br&gt;
Actual breakthroughs and genuine insights that change everything are few and far between.&lt;/li&gt;
&lt;li&gt;And this makes me strangely happy. If it’s just hard work … well that I can do :) Why didn’t someone just point this out to me earlier? Knowledge work is just work? Putting in the hours and work and toil? Sure! Sign me up!&lt;/li&gt;
&lt;li&gt;I figure, it’s turtles all the way down. The work consists of studying something complex, breaking it down, understanding it, practicing it, making it your own and creating a portfolio to show it off. Basically the same journey as a carpenter. Apprenticeship -&amp;gt; Journeyman -&amp;gt; Craftsman.&lt;/li&gt;
&lt;li&gt;Finally, I’ve spent so much time telling folk, that becoming a &lt;a href="https://janusworx.com/books-through-the-years/" target="_blank" rel="noreferrer"&gt;good reader&lt;/a&gt;, took me &lt;em&gt;years.&lt;/em&gt; And as usual I’ve been domain blind. I did not see, it’s the same thing with becoming a good programmer. Toil and patience.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I’m on a break for the whole of next week, and will be back after, to begin the rest of the journey, refreshed.&lt;br&gt;
Here’s to upwards and onwards!&lt;/p&gt;</description></item><item><title>Learning Backend WebDev, Log #10 - A Very Long, and a Really Good Day</title><link>https://janusworx.com/work/learning-backend-webdev-log-10-a-very-long-and-a-really-good-day/</link><pubDate>Sat, 19 Jun 2021 17:55:52 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/learning-backend-webdev-log-10-a-very-long-and-a-really-good-day/</guid><description>&lt;p&gt;I did. I really did have a good work day!&lt;br&gt;
I had one of those, whatchacallit, &lt;a href="https://www.ted.com/talks/mihaly_csikszentmihalyi_flow_the_secret_to_happiness" target="_blank" rel="noreferrer"&gt;&lt;em&gt;flow states.&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!-- TEASER_END --&gt;

&lt;h2 class="relative group"&gt;What I learnt in Django land
 &lt;div id="what-i-learnt-in-django-land" 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="#what-i-learnt-in-django-land" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I learnt nothing!&lt;/li&gt;
&lt;li&gt;Well I learnt nothing new. I spent the whole day and what little I time I had yesterday, trying to crack the assignment for module three of the course.&lt;/li&gt;
&lt;li&gt;I struggled and struggled and then, struggled a bit more.&lt;/li&gt;
&lt;li&gt;The more I write Django, the more intuitive it feels, like I can never make out, what’s provided by Python and what has been built for me by Django. It all feels like one seamless whole.&lt;/li&gt;
&lt;li&gt;The blow up Django cycle continued today, to an extreme, it felt like. But it felt good and iterative, like I had a sandbox to play in, as I wished.&lt;/li&gt;
&lt;li&gt;There’d be a decimal error and I’d fix it and then there’d be some sort of bounds error because I’d built too little capacity to hold stuff in my models and I’d go fix it and then I’d figure that this method returns a tuple, so I need to catch it in two variables and throw one away, just so I could have at the data I was interested in, and I learnt how to rebuild my models and migrations and reset my database and I spent two exasperating hours on a consistent Django blowup that just should not have been possible. And then I realised, I was assigning the same data to two models (same variable.) Long story short, I learned a lot.&lt;/li&gt;
&lt;li&gt;Working over the past two days reminded me of this &lt;a href="https://wizardzines.com/comics/track-your-progress/" target="_blank" rel="noreferrer"&gt;Julia Evans&lt;/a&gt; page, that I serendipitously came across a while ago.&lt;/li&gt;
&lt;/ul&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;
![Julia Evans comic explaining the importance of tracking progress][jeiln]
&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;h2 class="relative group"&gt;Focus Follow Up aka Flow what?
 &lt;div id="focus-follow-up-aka-flow-what" 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="#focus-follow-up-aka-flow-what" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;This probably, was the first time, I had a state of flow while programming (I used to have them all the time at work as well lots of times, when I am writing).&lt;/li&gt;
&lt;li&gt;This probably means I am comfortable with the level I am at, and I should stretch a bit more.&lt;/li&gt;
&lt;li&gt;Did eleven, 30 minute sessions with no aborts. I lost track of time, quite a bit.&lt;/li&gt;
&lt;li&gt;Am done with three out of the four modules of this course, I’m on.&lt;/li&gt;
&lt;li&gt;After yesterday, today’s progress really feels good.&lt;/li&gt;
&lt;li&gt;While I’ll take my wins where I can find them, I should be cognizant of the fact that it was the uncomfortable practice of the week that brought me here.&lt;/li&gt;
&lt;li&gt;And so, I want to get more comfortable with feeling uncomfortable.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here’s to finishing strong!&lt;/p&gt;</description></item><item><title>Learning Backend WebDev, Log #8 - Many, Many Relationships</title><link>https://janusworx.com/work/learning-backend-webdev-log-8-many-many-relationships/</link><pubDate>Thu, 17 Jun 2021 16:42:17 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/learning-backend-webdev-log-8-many-many-relationships/</guid><description>&lt;p&gt;Another day of doing only Django.&lt;br&gt;
Not that I’m complaining. Finishing up this Django course is my priority.&lt;br&gt;
Followed by PostgreSQL and Data Structures and Algorithms.&lt;br&gt;
I just have to do them step by step, one after another.&lt;/p&gt;
&lt;!-- TEASER_END --&gt;

&lt;h2 class="relative group"&gt;What I learnt in Django land
 &lt;div id="what-i-learnt-in-django-land" 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="#what-i-learnt-in-django-land" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I like calling it Django land. Reminds me of Tarantino’s Django and Candyland.&lt;/li&gt;
&lt;li&gt;I learnt all about many to many database relationships and how they’re done with models in Django.&lt;/li&gt;
&lt;li&gt;They’re a logical extension of one to many relationships.&lt;/li&gt;
&lt;li&gt;It’s like one of those who know who games. I know Carol. Carol knows Amelia. And so Carol is my through table, my join table, my junction table. I can request things of Amelia through Carol. That in a nutshell is what it is like.&lt;/li&gt;
&lt;li&gt;I realise that all these complicated terms I feared are actually succinct names for simple, yet long winded processes or things.&lt;/li&gt;
&lt;li&gt;I’m going to practice all this tomorrow morning.&lt;/li&gt;
&lt;li&gt;Heuristic, whenever I see repeated strings vertically, I ought to be thinking databases for efficient storage.&lt;/li&gt;
&lt;li&gt;Heuristic, whenever I see multiple things relating to multiple other things, I ought to be thinking many to many models/relationships (many books to a genre, many genres to a book, an author with multiple books, a book with multiple authors)&lt;/li&gt;
&lt;li&gt;Use integers for primary keys. Integers are &lt;em&gt;fast.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;I now love the folk who designed and built Django. The more I learn about its innards, the more I realise there is no Django magic. Just back breaking hard work and lots of thought put into building this beautiful edifice over the years. Makes me appreciate learning Django, even more.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class="relative group"&gt;Focus Follow Up aka How did I do with focus today?
 &lt;div id="focus-follow-up-aka-how-did-i-do-with-focus-today" 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="#focus-follow-up-aka-how-did-i-do-with-focus-today" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Did seven, 30 minute sessions of Django and one aborted session&lt;/li&gt;
&lt;li&gt;Had a lot of housework today and still managed to wrangle 3 and half hours of deep work.&lt;/li&gt;
&lt;li&gt;Writing notes, seems to be helping. I get my quizzes right the first time around.&lt;/li&gt;
&lt;li&gt;Deliberate practice and focus are not easy, that’s for sure. I keep looking at the clock. And then I keep moaning about how time passes too slowly when I am struggling with stuff.&lt;/li&gt;
&lt;li&gt;Also noticed that whenever I start working on something tough, my mind gets really uncomfortable and wants to do everything else, but focus on the problem and do the work. I want to suddenly call people I haven’t spoken to in ages, check my mail, my messages, peek at the fediverse 😂 I resist. And tell myself, I just have to hold on for 20 more minutes 😂&lt;/li&gt;
&lt;li&gt;I serendipitously came across &lt;a href="https://twitter.com/CompSciFact/status/1405267698695639041?s=20" target="_blank" rel="noreferrer"&gt;this tweet,&lt;/a&gt; just a few minutes ago, which tells me I am not alone :)
&lt;ul&gt;
&lt;li&gt;Writing code is often a constant struggle against distraction.&lt;br&gt;
— Joy of Clojure&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;This focus is now bleeding into other areas of my life. I am slowing down and doing other stuff, slowly, intentionally.&lt;/li&gt;
&lt;li&gt;My mind feels like it is slowly expanding as if it was in a vise. It feels a bit more relaxed, a bit more freer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://seths.blog/2021/01/born-to-run-things/" target="_blank" rel="noreferrer"&gt;Here’s to showin’ up!&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Learning Backend WebDev, Log #7 - Owning All the Rows</title><link>https://janusworx.com/work/learning-backend-webdev-log-7-owning-all-the-rows/</link><pubDate>Wed, 16 Jun 2021 17:59:23 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/learning-backend-webdev-log-7-owning-all-the-rows/</guid><description>&lt;p&gt;Let’s get on with today’s log!&lt;br&gt;
I studied only Django today.&lt;br&gt;
Was plagued with rains and power cuts and family stuff.&lt;br&gt;
Managed to work well and patiently though.&lt;/p&gt;
&lt;!-- TEASER_END --&gt;

&lt;h2 class="relative group"&gt;What I learnt in Django land.
 &lt;div id="what-i-learnt-in-django-land" 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="#what-i-learnt-in-django-land" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Owned Rows, that opened my eyes into another dimension to begin with.&lt;/li&gt;
&lt;li&gt;While I knew that Django supports multiple users, it struck home today, that &lt;em&gt;I&lt;/em&gt; was the one to write all the code that supported all those users. All the exercises so far, were just build a view, show some data.&lt;/li&gt;
&lt;li&gt;And now I realise, Oh! I cannot let Tom edit Jerry’s cheese details, nor can Spike get into Tom’s house. I need to be the one that guards against all that. Owned rows are one way I can do this. They will let logged in users edit or delete rows that belong to them only. Not the others.&lt;/li&gt;
&lt;li&gt;I subclassed stuff, which let me drill OOP concepts like inheritance a bit more.&lt;/li&gt;
&lt;li&gt;Finally, I learnt about DRY in action where I let the parent classes do all the heavy lifting, while I wrote a tiny class that let me tweak stuff &lt;em&gt;just&lt;/em&gt; the way I liked it.&lt;/li&gt;
&lt;li&gt;Finally, finally, I learnt the amount of work Django saves me and just how much power is there under the hood.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class="relative group"&gt;Focus Follow Up aka How did I fare today and how do I feel now at the end of the day?
 &lt;div id="focus-follow-up-aka-how-did-i-fare-today-and-how-do-i-feel-now-at-the-end-of-the-day" 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="#focus-follow-up-aka-how-did-i-fare-today-and-how-do-i-feel-now-at-the-end-of-the-day" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Did eight, 30 minute sessions of learning Django.&lt;/li&gt;
&lt;li&gt;Had three aborted sessions, when I got ridiculously distracted.&lt;/li&gt;
&lt;li&gt;If you want to know, why I abort and start over, &lt;a href="https://janusworx.com/blog/learning-backend-webdev-log-6-focus-followup/" target="_blank" rel="noreferrer"&gt;I kinda go over this, in this post.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;So worked about the same time (or less) as I did yesterday. I feel like I learnt a bit more, than I did yesterday.&lt;/li&gt;
&lt;li&gt;I’ve begun writing scratch notes as I look at the videos. This makes it more slowgoing, but I internalise stuff a more. I think. I’ll see if this helps.&lt;/li&gt;
&lt;li&gt;Energy wise, this is still sustainable. I feel good still at the end of the day. Not drained and exhausted.&lt;/li&gt;
&lt;li&gt;Also I &lt;em&gt;think&lt;/em&gt; I’m getting the grasp of this. I keep pausing the videos and then trying to predict stuff. I find myself being right, more and more frequently. Today was the first time I yelled at Dr. Chuck for typing in the model name wrong 😂&lt;/li&gt;
&lt;li&gt;I only wish I had begun much, much, much earlier in life, when all these things were beginning and then grown with the Django project. I wish I was not as intimidated about programming being the domain of ‘smart’ people, when I was young. I wish I had more patience, as I traverse what seems like a never ending road of learning with no end in sight, with new things to learn, every half a mile. I wish I could get over this big mountain of basic fundamentals with a snap of my fingers. But I can’t. So I’ll do the next best thing. Show up. And do the work.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Learning Backend WebDev, Log #6 - Focus Followup</title><link>https://janusworx.com/work/learning-backend-webdev-log-6-focus-followup/</link><pubDate>Tue, 15 Jun 2021 19:18:48 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/learning-backend-webdev-log-6-focus-followup/</guid><description>&lt;p&gt;Today, I did not quite care how much progress I made.&lt;br&gt;
Instead I focussed on getting my focus periods in, like I &lt;a href="https://janusworx.com/blog/learning-backend-webdev-log-5-figured-out-how-to-focus/" target="_blank" rel="noreferrer"&gt;described yesterday.&lt;/a&gt;&lt;/p&gt;
&lt;!-- TEASER_END --&gt;
&lt;p&gt;It’s about an hour earlier than when I usually call it a day.&lt;br&gt;
And yet, now that I am checking, I have ‘worked’ fewer actual hours than usual.&lt;br&gt;
And I have gotten a bit of exercise and housework done too!&lt;br&gt;
(This does not usually happen on a normal study day)&lt;/p&gt;

&lt;h3 class="relative group"&gt;What I did
 &lt;div id="what-i-did" 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="#what-i-did" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Set a timer for 30 minutes.&lt;/li&gt;
&lt;li&gt;Got to work. Butt in seat.&lt;/li&gt;
&lt;li&gt;If I got distracted, I’d reset the timer to 30 minutes and start again. The aborted session would not count.&lt;/li&gt;
&lt;li&gt;Tried to be patient with myself. Realised that doing things over, was not really a negative, if it meant that in the long run I’d be able to focus better.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 class="relative group"&gt;How I fared
 &lt;div id="how-i-fared" 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="#how-i-fared" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;I did six, 30 minute sessions of Django.&lt;/li&gt;
&lt;li&gt;I did three, 30 minute sessions of Postgres.&lt;/li&gt;
&lt;li&gt;Don’t think I could have lasted this long, if it was just Django.&lt;/li&gt;
&lt;li&gt;Had to scratch and start over six times.&lt;/li&gt;
&lt;li&gt;Ended up doing close to 4 and a half hours of focussed &lt;a href="https://www.calnewport.com/books/deep-work/" target="_blank" rel="noreferrer"&gt;&lt;em&gt;Deep Work.&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 class="relative group"&gt;What I learnt
 &lt;div id="what-i-learnt" 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="#what-i-learnt" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Learnt about tables in Postgres and did basic commands with a single table&lt;/li&gt;
&lt;li&gt;Learnt about forms in Django and how they are built and all the niceties Django provides.&lt;/li&gt;
&lt;li&gt;Worked through some exercises in Django, where I built forms and then hooked it up to models using Views.&lt;/li&gt;
&lt;li&gt;Then learnt just how much time and effort Django saves me by using generic ClassViews.&lt;/li&gt;
&lt;li&gt;Also got into a rhythm of doing stuff, blowing Django up, looking at the error, figuring it out and then going on the next blowup.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 class="relative group"&gt;What I feel
 &lt;div id="what-i-feel" 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="#what-i-feel" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Did a whole day today, after yesterday’s run&lt;/li&gt;
&lt;li&gt;Tired, but not exhausted.&lt;/li&gt;
&lt;li&gt;Still feel energetic enough to write this blog post&lt;/li&gt;
&lt;li&gt;Actually love this time, when I can sit peacefully and write. All I need now, to complete this setting is a glass of &lt;a href="https://www.business-standard.com/article/beyond-business/the-goan-version-107052601024_1.html" target="_blank" rel="noreferrer"&gt;cheap Goan port.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;I don’t feel rushed.&lt;/li&gt;
&lt;li&gt;At four and a half hours, it might feel like I spent less time, but I got much more done than I do in a eight hour day. I realise that the tiny rest periods in between are doing me good. The first few breaks, I kept checking all my feeds. By afternoon, I had settled down to either doing small chores or just enjoying the solitude as I did gentle physical stretches&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If I can do 30 minute stretches at will this week, I’ll increase them to 45 minutes next week.&lt;br&gt;
Here’s to hoping, this is a sustainable way to focus and learn lots daily.&lt;/p&gt;</description></item><item><title>Learning Backend WebDev, Log #5 - Figured Out How to Focus</title><link>https://janusworx.com/work/learning-backend-webdev-log-5-figured-out-how-to-focus/</link><pubDate>Mon, 14 Jun 2021 20:17:26 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/learning-backend-webdev-log-5-figured-out-how-to-focus/</guid><description>&lt;p&gt;Hopefully, for the next couple of months at least.&lt;/p&gt;
&lt;!-- TEASER_END --&gt;
&lt;p&gt;As amazing as &lt;a href="http://www.dr-chuck.com/" target="_blank" rel="noreferrer"&gt;Dr. Chuck&lt;/a&gt; and &lt;a href="https://brianyu.me/" target="_blank" rel="noreferrer"&gt;Brian Yu&lt;/a&gt; and &lt;a href="https://lerner.co.il/" target="_blank" rel="noreferrer"&gt;Reuven Lerner&lt;/a&gt; are, I find myself falling asleep as I learn web development.&lt;br&gt;
I look at the videos, I seem to understand things, and then I zone out.&lt;br&gt;
A while later, 30 minutes have passed, three videos are over and I am wondering, just what the heck Dr. Chuck is on about.&lt;/p&gt;
&lt;p&gt;I find myself struggling like this over and over.&lt;br&gt;
I have days of intense focus. But those are draining.&lt;br&gt;
I then need a couple of days to recover, for every day, that I can study like that.&lt;br&gt;
I realised that I need something sustainable.&lt;/p&gt;
&lt;p&gt;So I decided to do a few things differently today onwards&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I studied more than one thing.&lt;br&gt;
While my focus remains learning Django, I realised that I cannot make that the entire day’s focus.&lt;br&gt;
My mind can no longer process information like this.&lt;br&gt;
While I want to focus on one thing and get it out of the way as soon as possible, to get on with the next thing, my mind refuses to cooperate.&lt;br&gt;
So I studied Django for the most part, but also interspersed it with writing and exercising Python code (which I am sorely in need of) and learning some PostgreSQL.&lt;/li&gt;
&lt;li&gt;I started interval focus training.&lt;br&gt;
I realised that the phone is doing me no favours, but I do need to check it.&lt;br&gt;
So I started working in 15 minute bursts since Friday.&lt;br&gt;
15 minutes of no interruptions, followed by a minute or two of stretching my legs and responding to messages (no email, no social media.)&lt;br&gt;
Today I did 30 minute sessions, which I’ll continue the whole of this week.&lt;br&gt;
I hope to build up my focus muscle to where I can work in 90 minute stretches. And if I get in 3-4 such stretches on a daily basis, I’ll consider that a day well spent.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;And as I write this at the end of the day, to my mind, I have made more progress, than I usually make in two days without being exhausted at the end of it all.&lt;br&gt;
I’ve no idea how long this will work for me.&lt;br&gt;
But I’ll report back on how this is going next week.&lt;br&gt;
And probably write again, on when the well has dried up and I’ll need to change tactics.&lt;/p&gt;
&lt;p&gt;Until next time …&lt;/p&gt;</description></item><item><title>Learning Backend WebDev, Log #4 - Beginning to Learn PostgreSQL</title><link>https://janusworx.com/work/learning-backend-webdev-log-4-beginning-to-learn-postgresql/</link><pubDate>Thu, 10 Jun 2021 16:15:18 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/learning-backend-webdev-log-4-beginning-to-learn-postgresql/</guid><description>&lt;p&gt;Like I mentioned the other day, Django is driving me batty!&lt;/p&gt;
&lt;!-- TEASER_END --&gt;
&lt;p&gt;Ok, I cannot completely blame Django.&lt;br&gt;
A dental procedure has left me in quite a bit of pain and unable to focus.&lt;/p&gt;
&lt;p&gt;So I was wondering what else I could do, instead of Django and decided I’d learn &lt;a href="https://www.postgresql.org/about/" target="_blank" rel="noreferrer"&gt;PostgreSQL&lt;/a&gt;.&lt;br&gt;
I was tickled pink when I read that Postgres is actually Post Ingres.&lt;br&gt;
I am old enough to remember Ingres databases that ran on computers I supported as a junior hardware engineer in the late 90s. I was warned not to &lt;em&gt;ever&lt;/em&gt; touch the database machine unless I was supervised :P&lt;br&gt;
I also attended seminars for another ‘Post Ingres’ database called NonstopSQL in the early oughts when I worked with Compaq as a support engineer for their laptops. Engineers would have open sessions. But what did a boy servicing laptops have to do with Tandem machines? How did they let me attend? That I will never know. Just that I found them fascinating :)&lt;/p&gt;
&lt;p&gt;Now it all comes full circle when I actually need to learn about databases.&lt;br&gt;
And what better database to learn than Postgres? :)&lt;/p&gt;
&lt;p&gt;All those random videos about Postgres &lt;a href="https://janusworx.com/blog/learning-backend-webdev-log-2/" target="_blank" rel="noreferrer"&gt;the other day&lt;/a&gt;, led me to the University of Michigan’s, &lt;a href="https://www.coursera.org/specializations/postgresql-for-everybody" target="_blank" rel="noreferrer"&gt;PostgreSQL for Everybody Specialization&lt;/a&gt;.&lt;br&gt;
Dr Chuck Severance is an engaging instructor, so I promptly signed up.&lt;/p&gt;
&lt;p&gt;I’ll log the journey and what I learn, here in the days to come.&lt;/p&gt;
&lt;p&gt;So long, for now!&lt;/p&gt;</description></item><item><title>Learning Backend WebDev, Log #3 - Cross Site Request Forgery</title><link>https://janusworx.com/work/learning-backend-webdev-log-3-cross-site-request-forgery/</link><pubDate>Tue, 08 Jun 2021 16:56:11 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/learning-backend-webdev-log-3-cross-site-request-forgery/</guid><description>&lt;p&gt;Wasn’t quite well today, so took it slow.&lt;/p&gt;
&lt;!-- TEASER_END --&gt;

&lt;h3 class="relative group"&gt;The Problem
 &lt;div id="the-problem" 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="#the-problem" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;The only thing I managed to learn was what a &lt;a href="https://en.wikipedia.org/wiki/Cross-site_request_forgery" target="_blank" rel="noreferrer"&gt;Cross Site Request Forgery&lt;/a&gt;(CSRF) is, and how Django helps protect against it.&lt;br&gt;
The Wikipedia page describes it in painstaking detail, and if you want it described a bit more simply, then &lt;a href="https://www.squarefree.com/securitytips/web-developers.html#CSRF" target="_blank" rel="noreferrer"&gt;Jesse Ruderman&lt;/a&gt; does an admirable job.&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=vRBihr41JTo" target="_blank" rel="noreferrer"&gt;Computerphile does an even better job.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I am using this analogy in my head.&lt;/p&gt;
&lt;p&gt;I go and stay over at &lt;a href="https://youtu.be/bDdh9IBnnBA" target="_blank" rel="noreferrer"&gt;my friend, Jack’s&lt;/a&gt; apartment so often, that he leaves the key under the cactus outside the door.&lt;br&gt;
Now this kind of thing is common knowledge. If someone is out on errands, expecting family home, the key is hidden in plain sight. (under the cactus or the doormat or something like that)&lt;br&gt;
So someone else (a thief, not me. I’m family) can always look at these common places and gain entry and rob us blind.&lt;br&gt;
(Not that Jack has anything of value, except for old BoneyM records)&lt;/p&gt;
&lt;p&gt;So what is Jack to do? What needs be done?&lt;br&gt;
Jack gets it into his mind to do something … crazy everytime and tell only me about it.&lt;br&gt;
He’ll barricade the door with some sort of strong rope and hide the scissors someplace.&lt;br&gt;
Or he’ll roll the heavy table outside to block the door (and the stairwell) knowing that I know how to unlock the castors and move the godaweful table.&lt;br&gt;
Or he’ll put a facade of a door that looks like a safe, knowing I’ll peel it off later.&lt;br&gt;
(Why can’t he just give me another key instead of making me do all this work? God only knows. He’s a nutcase!)&lt;br&gt;
The point being, he does something different every time to add an additional layer of security.&lt;/p&gt;
&lt;p&gt;So a CSRF token is something similar. While your keys and session data might be stored on your computer and might be accessed by something foreign, it is not possible for said foreign entity to steal your CSRF token, because it is short lived and changes frequently (the token that is, not the foreign kook trying to hack their way into your server.)&lt;br&gt;
This keeps malicious sites from doing … um … malicious things on your server.&lt;/p&gt;

&lt;h3 class="relative group"&gt;The Resolution
 &lt;div id="the-resolution" 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="#the-resolution" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Django, like Python, is batteries included.&lt;br&gt;
So its &lt;a href="https://docs.djangoproject.com/en/3.2/topics/http/middleware/" target="_blank" rel="noreferrer"&gt;Middleware&lt;/a&gt; includes CSRF protection.&lt;br&gt;
In its various forms, to use in various places, it boils down to writing/including something like &lt;code&gt;csrf_token&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If I want to use it in a form, the default method is to just include &lt;code&gt;&amp;lt;form method=&amp;quot;post&amp;quot;&amp;gt;{% csrf_token %}&lt;/code&gt; in any template that routes / forwards to another URL internally. (what do I do if I want to post to a URL externally? I don’t know yet. I’ll look stuff up later, if such stuff is even common. In my head, the threat model is for all my routes and urls and models on my server)&lt;/li&gt;
&lt;li&gt;If I want to use it in an AJAX post, I have to remember to pass the CSRF token in as POST data with every POST request.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And of course, being the awesome folk they are, the Django folk have documented this really well and &lt;a href="https://docs.djangoproject.com/en/3.2/ref/csrf/#how-it-works" target="_blank" rel="noreferrer"&gt;you can always see the work behind all the magic.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That was it for today. More later!&lt;/p&gt;</description></item><item><title>Learning Backend WebDev, Log #2</title><link>https://janusworx.com/work/learning-backend-webdev-log-2/</link><pubDate>Mon, 07 Jun 2021 19:55:43 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/learning-backend-webdev-log-2/</guid><description>&lt;p&gt;I miss writing about what I learn.&lt;br&gt;
So I am going to try and begin again.&lt;/p&gt;
&lt;!-- TEASER_END --&gt; 
&lt;p&gt;I was too focussed on trying to learn all the stuff as quickly as possible, so I can go job hunt.&lt;br&gt;
But I realise, I need to strike some sort of balance between learning slow enough, so that I can learn and document and enjoy vs going full tilt to finish up the blocks that I need.&lt;/p&gt;
&lt;p&gt;One good thing that I’ve figured out for myself though is that I would love to use Python to do web stuff.&lt;br&gt;
Ergo, I’d like to be a Python backend developer.&lt;br&gt;
To that end, I am learning Python and Django and HTML and CSS and Postgres and I want to learn Flask and FastAPI and some low level network engine like Twisted.&lt;br&gt;
Writing this, I realise there is no end to what I want to learn.&lt;br&gt;
And once again, I need to strike a balance between what I’d want and love to learn vs what is actually needed to land a job that pays the bills, at least to begin with.&lt;br&gt;
I’ve been on a learning rampage the past month, and I have learnt lots, but something niggles me.&lt;br&gt;
My mind hates it when it cannot quite make out the shape of the thing it’s learning.&lt;br&gt;
When I don’t have a mental model of it in my head.&lt;/p&gt;
&lt;p&gt;So this post is kind of clearing out my head, to see where I am at.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python, I consider myself a slow writer, but now I understand gosh darn nearly everything I lay my eyes on. I can &lt;em&gt;read&lt;/em&gt; Python.&lt;br&gt;
I need to practice writing a lot more to gain fluency. But I am &lt;em&gt;comfortable&lt;/em&gt; with the language. Like I mentioned above, I have the shape of Python in my head. I know what it feels like, how to intuit things, and what the entire Python continent looks like and the areas that I’m comfortable with.&lt;/li&gt;
&lt;li&gt;HTML &amp;amp; CSS, I’ve learnt enough to be dangerous. Once again, I know what’s involved, and the areas that I need to work on.&lt;/li&gt;
&lt;li&gt;JavaScript, is something I need to work on. If I want to become a web developer, then this is a skill I need to have. I’ve learnt the basics. But I need to figure out what this world looks like.&lt;/li&gt;
&lt;li&gt;Django, is what I am trying to learn currently and it’s driving me bananas. It has &lt;em&gt;so many&lt;/em&gt; moving parts. This feels like learning Python basics all over again. Hopefully the CS50W course that I’m doing will help me gain perspective.&lt;/li&gt;
&lt;li&gt;PostgreSQL, is the final piece of what will make me think that I have the basics in place. I’ve just begun learning this today, as a break from Django. I’ll go mad otherwise. Let’s see how this pans out.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All the rest can wait.&lt;br&gt;
So anything I learn about any of these things in the days going forward, I’ll write about how it felt and what I understood, over here.&lt;/p&gt;
&lt;p&gt;Wish me luck!&lt;/p&gt;</description></item><item><title>Learning Backend WebDev, Log #1</title><link>https://janusworx.com/work/learning-backend-webdev-log-1/</link><pubDate>Mon, 07 Jun 2021 19:33:46 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/learning-backend-webdev-log-1/</guid><description>&lt;p&gt;test&lt;/p&gt;</description></item></channel></rss>