<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Jake’s Substack]]></title><description><![CDATA[My personal writings about my life and my pursuit of starting my own tech business.]]></description><link>https://www.jakew.ca</link><image><url>https://substackcdn.com/image/fetch/$s_!k5tm!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf66df35-58be-4040-94bc-08d971e90917_1282x1284.jpeg</url><title>Jake’s Substack</title><link>https://www.jakew.ca</link></image><generator>Substack</generator><lastBuildDate>Wed, 13 May 2026 11:37:46 GMT</lastBuildDate><atom:link href="https://www.jakew.ca/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Jake Winters]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[jakewca@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[jakewca@substack.com]]></itunes:email><itunes:name><![CDATA[Jake Winters]]></itunes:name></itunes:owner><itunes:author><![CDATA[Jake Winters]]></itunes:author><googleplay:owner><![CDATA[jakewca@substack.com]]></googleplay:owner><googleplay:email><![CDATA[jakewca@substack.com]]></googleplay:email><googleplay:author><![CDATA[Jake Winters]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[First Actions]]></title><description><![CDATA[It's easy to talk the talk, but here's what happened when I tried to walk the walk.]]></description><link>https://www.jakew.ca/p/something-that-didnt-work</link><guid isPermaLink="false">https://www.jakew.ca/p/something-that-didnt-work</guid><dc:creator><![CDATA[Jake Winters]]></dc:creator><pubDate>Mon, 12 Dec 2022 21:05:44 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9b197e8a-cbdc-4e44-a21e-1185c0894254_2000x1621.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!53B3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F451debe1-ba9b-42b2-8f93-4e409fc37188_2000x1621.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!53B3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F451debe1-ba9b-42b2-8f93-4e409fc37188_2000x1621.jpeg 424w, https://substackcdn.com/image/fetch/$s_!53B3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F451debe1-ba9b-42b2-8f93-4e409fc37188_2000x1621.jpeg 848w, https://substackcdn.com/image/fetch/$s_!53B3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F451debe1-ba9b-42b2-8f93-4e409fc37188_2000x1621.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!53B3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F451debe1-ba9b-42b2-8f93-4e409fc37188_2000x1621.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!53B3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F451debe1-ba9b-42b2-8f93-4e409fc37188_2000x1621.jpeg" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/451debe1-ba9b-42b2-8f93-4e409fc37188_2000x1621.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;First Actions&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="First Actions" title="First Actions" srcset="https://substackcdn.com/image/fetch/$s_!53B3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F451debe1-ba9b-42b2-8f93-4e409fc37188_2000x1621.jpeg 424w, https://substackcdn.com/image/fetch/$s_!53B3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F451debe1-ba9b-42b2-8f93-4e409fc37188_2000x1621.jpeg 848w, https://substackcdn.com/image/fetch/$s_!53B3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F451debe1-ba9b-42b2-8f93-4e409fc37188_2000x1621.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!53B3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F451debe1-ba9b-42b2-8f93-4e409fc37188_2000x1621.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>It's easy to talk the talk, but here's what happened when I tried to walk the walk.</p><p>According to The Startup Owner&#8217;s Manual, the first step after coming up with some hypotheses is to test them. The first hypotheses to test are the Problem Hypotheses. The first step to testing a hypothesis to schedule a chat with someone who could be experiencing this problem.</p><p>The reason I chose the family law field is because my wife is a lawyer who does family law. I know from her that lawyers in this field are overworked and there's still more work to be done. I want to help her and other lawyers, and be able to build a business to help do so as a full time job.</p><p>I ran an initial interview on my wife but the results, I expect anyway, are quite biased. She did refer me to a mutual friend who might be able to be an unbiased source. So I just needed to schedule a chat with her. It would be an obvious easy win, right?</p><h3>First Inactions</h3><p>Well, next came the social anxiety.</p><p>I read up on how to &#8220;hack&#8221; the anxiety. Anxiety is a fire alarm&#8212;a call to action. To do what though? Is it perhaps because I don&#8217;t know what I&#8217;m doing? This is most likely. So I read up more and sought out more examples of problem discovery. They are few and far between.</p><p>It turns out I have very low self-worth. With the help of my therapist, we focused on my belief that to ask people for some of their time, even if it&#8217;s just to let them rant at me, even if my intention is to try to help them, is still just <em>me being a burden</em> to them. Either they say "no", because I&#8217;m worthless, or they say &#8220;yes&#8221; because I&#8217;ve guilted them into it.</p><p>So I did a lot of learning around worthiness and vulnerability. Reading about ways to tackle the shame when it does show up, so the sting of social rejection isn&#8217;t as painful. I try to truly believe that I am worthy of that time I&#8217;m asking for.</p><p>Early in November, I made a deadline. I decided to aim for scheduling the first interview by December 1st. Somewhere in between, I managed to spend three days crafting a brilliantly worded message with the simplest of asks.</p><blockquote><p>Hey [friend's first name],</p><p>It&#8217;s been too long since we&#8217;ve hung out.</p><p>It's a huge ask, I know, but I'd love your expert insight on some of the things that hinder lawyers practicing family law in New Brunswick. Would you happen to have time to grab lunch? Perhaps later this week or next week or next?</p></blockquote><p>I felt confident. For the first time since I decided to do customer interviews and problem discovery, I actually felt confident. I managed to send the message without impending dread.</p><p>Of course, that confidence wasn&#8217;t warranted. The next day I got a response. I don&#8217;t know how to take the response other than to assume it means &#8220;I don&#8217;t want to talk to you.&#8221;</p><p>I&#8217;m shattered. The only request I thought would be truly "easy" was exceptionally difficult to make and the only &#8220;sure thing&#8221; was not sure at all. This is super demoralizing.</p><p>This left me quite distressed, and considering my options. So, where do I go from here? Do I switch targets and try to find a different lawyer to interview? Or do I just give up on family law lawyers and pick an easier niche? A lot of friends have said that I should keep trying.</p><p>I think I will.</p><p>So this week, I made a list of all the lawyers I can find, ranked them by how likely they fit in the target market, how likely they are to say yes, and now I'm trying to figure out a better message to send to get them to chat. Perhaps I can make my intentions clear with a gift.</p>]]></content:encoded></item><item><title><![CDATA[The Story So Far]]></title><description><![CDATA[About five years ago, I decided I wanted to start a business.]]></description><link>https://www.jakew.ca/p/the-story-so-far</link><guid isPermaLink="false">https://www.jakew.ca/p/the-story-so-far</guid><dc:creator><![CDATA[Jake Winters]]></dc:creator><pubDate>Mon, 14 Nov 2022 00:22:07 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/95d7a0cd-d5a8-48e6-beb1-e45bf661cdcf_2000x1333.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gfma!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70ff22f-a2ab-45a9-973b-126d878201a2_2000x1333.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gfma!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70ff22f-a2ab-45a9-973b-126d878201a2_2000x1333.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gfma!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70ff22f-a2ab-45a9-973b-126d878201a2_2000x1333.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gfma!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70ff22f-a2ab-45a9-973b-126d878201a2_2000x1333.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gfma!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70ff22f-a2ab-45a9-973b-126d878201a2_2000x1333.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gfma!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70ff22f-a2ab-45a9-973b-126d878201a2_2000x1333.jpeg" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c70ff22f-a2ab-45a9-973b-126d878201a2_2000x1333.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The Story So Far&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Story So Far" title="The Story So Far" srcset="https://substackcdn.com/image/fetch/$s_!gfma!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70ff22f-a2ab-45a9-973b-126d878201a2_2000x1333.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gfma!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70ff22f-a2ab-45a9-973b-126d878201a2_2000x1333.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gfma!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70ff22f-a2ab-45a9-973b-126d878201a2_2000x1333.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gfma!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70ff22f-a2ab-45a9-973b-126d878201a2_2000x1333.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>About five years ago, I decided I wanted to start a business. I wasn&#8217;t sure what it would be. Ideas came up but I was never committed to them. Because I could not commit, no meaningful work was being done.</p><p>I eventually decided that I would like to help my wife. Well, I had decided a while back, but she has only recently warmed to the idea. She is a lawyer who often deals with family law related matters.</p><p>Up until today, the steps I have taken to start a business have been reading in an attempt to comprehend what exactly I need to do and what it is that I am making.</p><h3>What I know so far</h3><p>All of the business learning comes down to these facts:</p><ul><li><p>A business is a series of systems and processes that receive, change, create, and provide value from/to customers, employees, and partners. A map of this is called a business model.</p></li><li><p>In this context, value can mean many things: money, information, services, products, or property that helps the customer, employee, or partner make some meaningful progress towards a goal.</p></li><li><p>You are not a business. As such, you may work the jobs inside of the business but you also must work on the business to develop those systems and processes.</p></li><li><p>To work on those systems and processes, you have to have a process. The scientific method shines here:</p><ul><li><p>Write a hypothesis</p></li><li><p>Create an experiment</p></li><li><p>Perform the experiment</p></li><li><p>Analyze the response</p></li><li><p>Update your system or process based on what you learned.</p></li></ul></li><li><p>The best results for those experiments requires you to remove variables and biases. Customers do not exist in a lab, though, unless you sell scientific equipment. You have to avoid inserting your own bias into the experiment.</p></li></ul><h3>What I need to do still</h3><p>One of the books I am reading at the moment is The Startup Owner&#8217;s Manual. In it, Steve Blank proposes a breakdown of businesses into two stages, which each of those having a series of sub-stages and sub-sub-stages.</p><ul><li><p>Customer Development: Searching for a scalable business model involves</p><ul><li><p>Customer Discovery: Searching for a model (problem/solution fit)</p><ul><li><p>Stating your hypotheses</p></li><li><p>Testing the problem</p></li><li><p>Testing the solution</p></li></ul></li><li><p>Customer Validation: Making sure it is scalable (product/market fit)</p><ul><li><p>Initial Positioning</p></li><li><p>Selling to Earlyvangelists</p></li><li><p>Updating Positioning</p></li></ul></li></ul></li><li><p>Business Execution: Executing a business model involves both</p><ul><li><p>Customer Creation: Growing the company</p></li><li><p>Company Building: Maintaining the company</p></li></ul></li></ul><p>So, I can say that I will be searching for a business model over the next few months, or possibly longer. Further, after I find one I need to validate it.</p><p>The Startup Owner&#8217;s Manual makes a clear distinction between physical products and digital products (which it refers to as web/mobile products.) They take different routes for some steps. I&#8217;m not 100% this is always the case. It seems to me that, with a finite and probably quite small list of potential customers for a SaaS tool, I might be better off contacting them directly, more similar to a physical product.</p><p>Either way, I&#8217;m going to attempt to do Customer Discovery. I&#8217;m going to do it as close to the book as I can. My goal is to start doing customer interviews by the end of the month.</p><p>For the interview I have the following tasks:</p><ol><li><p>Write down all hypotheses</p></li><li><p>Figure out which hypothesis to disprove</p></li><li><p>Figure out what I need to learn in the interview to disprove it</p></li><li><p>Figure out who to interview</p></li><li><p>Schedule the interview</p></li><li><p>Prepare for the interview</p></li><li><p>Have the interview</p></li><li><p>Learn something from the interview</p></li></ol><p>Currently, I'm about 1/10th of the way done the first task. I live a pretty busy life. I can barely get time to clarify my thoughts. It doesn&#8217;t make any sense to be anything other than as efficient as possible.</p><p>This will be difficult.</p>]]></content:encoded></item><item><title><![CDATA[Time for Something New]]></title><description><![CDATA[I've had a blog on Medium for ages.]]></description><link>https://www.jakew.ca/p/time-for-something-new</link><guid isPermaLink="false">https://www.jakew.ca/p/time-for-something-new</guid><dc:creator><![CDATA[Jake Winters]]></dc:creator><pubDate>Sat, 12 Nov 2022 01:19:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!k5tm!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf66df35-58be-4040-94bc-08d971e90917_1282x1284.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I've had a blog on Medium for ages. And I still plan to keep it. It is meant for Software Development, but this blog is meant for something new.</p><p>For the past five years, I've been infatuated with the idea of starting a business. Over the next few years, I plan to do so and document the entire process on this blog. For those that are not familiar, "Build in Public" is the term for when an entrepreneur shares their process online, including their ups and their downs.</p><p>In the next article, I'm going to write up where I am at. It may get pretty long.</p>]]></content:encoded></item><item><title><![CDATA[Code Generation is Terrible; I Love It]]></title><description><![CDATA[Is the repeating generated code &#8220;DRY&#8221;?]]></description><link>https://www.jakew.ca/p/code-generation-is-terrible-i-love-it-27d2ba2ce68b</link><guid isPermaLink="false">https://www.jakew.ca/p/code-generation-is-terrible-i-love-it-27d2ba2ce68b</guid><dc:creator><![CDATA[Jake Winters]]></dc:creator><pubDate>Sun, 04 Jul 2021 14:31:12 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f1f8aba8-dd6c-4b9e-a56a-6c856fb00bd0_1024x680.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Is the repeating generated code&nbsp;&#8220;DRY&#8221;?</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hf5Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F295f2211-1950-4402-9af4-0eedc70cda53_1024x680.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hf5Z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F295f2211-1950-4402-9af4-0eedc70cda53_1024x680.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hf5Z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F295f2211-1950-4402-9af4-0eedc70cda53_1024x680.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hf5Z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F295f2211-1950-4402-9af4-0eedc70cda53_1024x680.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hf5Z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F295f2211-1950-4402-9af4-0eedc70cda53_1024x680.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hf5Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F295f2211-1950-4402-9af4-0eedc70cda53_1024x680.jpeg" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/295f2211-1950-4402-9af4-0eedc70cda53_1024x680.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!hf5Z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F295f2211-1950-4402-9af4-0eedc70cda53_1024x680.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hf5Z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F295f2211-1950-4402-9af4-0eedc70cda53_1024x680.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hf5Z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F295f2211-1950-4402-9af4-0eedc70cda53_1024x680.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hf5Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F295f2211-1950-4402-9af4-0eedc70cda53_1024x680.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@austriannationallibrary?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Austrian National Library</a> on&nbsp;<a href="https://unsplash.com/s/photos/factory-line?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>If you haven&#8217;t heard of &#8220;Don&#8217;t Repeat Yourself&#8221; or DRY, then I probably haven&#8217;t reviewed your code. Don&#8217;t write the same code twice. If you need to do the same thing in two places, it&#8217;s time to refactor and extract that code. This is a pretty simple concept but it&#8217;s also incomplete.</p><p>I have worked at companies that didn&#8217;t do this. What you end up with is copy/paste blocks in 10 places that all function slightly different. If one has a bug, you are unsure if the next copy/paste block has same bug. You spend your nights debugging why block Y isn&#8217;t working right just to find out it was actually block&nbsp;Z.</p><p>These days, if I see a request to merge and that merge changes the same line in multiple places, my stomach starts to turn. From time to time, it still happens. The culprit is usually either politics, management, or &#8220;the new guy&#8221;. Lately, the biggest culprit for duplicating code has been code generators, not&nbsp;people.</p><p>My introduction to code generators was in the late 2000s when I experimented with <a href="https://rubyonrails.org">Ruby on Rails</a>. Watching a tutorial &#8220;run this command&#8230;&#8221; and have a full &#8220;Hello, World&#8221; website up in minutes. This was appealing to me at a time when I was starting new projects every week but never finishing them.</p><p>The amazement was short lived, though, when I found out I made a single typo that propagated to 10 different places. Easy to solve: Restart from scratch, doing it right this time. If this had happened, and I had more than a seven-day attention span, the results would have been disaster&nbsp;out.</p><p>Another tool Ruby on Rails used was &#8220;ActiveRecord&#8221; which was my first understanding of dynamic metaprogramming as a&nbsp;concept.</p><p>For the uninitiated, metaprogramming is the concept of using a program as data for another program. Reflection is the subset of metaprogramming where a program uses itself as&nbsp;data.</p><p>The best example of the dynamic runtime reflection of Ruby on Rails is calling a method similar to &#8220;find_by_email&#8221; on an Active Record object. It would see the call to a function that didn&#8217;t exist and generate it <em>dynamically</em> based off the name and object,&nbsp;so:</p><ul><li><p>&#8216;find&#8217;: We want to find a (single) record of this&nbsp;type</p></li><li><p>&#8216;by&#8217;: We want to find it using a field&#8217;s&nbsp;value.</p></li><li><p>&#8216;email&#8217;: The field we want to use is&nbsp;&#8216;email&#8217;.</p></li></ul><p>So now, with enough information to make a guess at what the developer is trying to do, the active record can make it happen. Does this seem to be <strong>DRY</strong>? Absolutely! We&#8217;ve now eliminated the entire collection of similar &#8220;find&#8221; methods down to one function, nested somewhere in a parent&nbsp;object.</p><p>This worked well for Ruby on Rails. Many languages even started to copy it because it works and is super easy to use. This only takes two features of the language to&nbsp;work:</p><ol><li><p>Be able to know at run time when a call is being made to a method that doesn&#8217;t exist;&nbsp;and</p></li><li><p>Be able to know at run time what fields are available on an&nbsp;object.</p></li></ol><p>Few features are required, but a few more features are needed to make it <em>useful</em>. First, Ruby on Rails is a dynamically typed language. While not impossible, the question of &#8220;How do you check the type safety of a method that doesn&#8217;t exist?&#8221; comes to mind. Tools like inheritance are also helpful to distribute these dynamic functions to&nbsp;objects.</p><p>While I absolutely love this type of dynamic metaprogramming as a hobby, it does not do well in big productions. The two big reasons for this are its speed and its reliability. While it can be done well, it can easily be done wrong. This is true of <em>many</em> things in software development, but terrible dynamic metaprogramming doesn&#8217;t show up when you compile your code, it shows up when you <em>run </em>your code. If you&#8217;re lucky, it happens when <em>you</em> run it, and not when your code is running on a production server you might not even have access&nbsp;to.</p><p>Skip forward about 12 years. I&#8217;ve now graduated, I&#8217;m out working for some big computer company writing tiny container packages in Go when I start working on an existing package that uses an interesting tool: <a href="https://github.com/go-swagger/go-swagger">go-swagger</a>. The basics of it are pretty simple: given an API description, generate the rest of the code necessary such that you can just add in the implementation details.</p><p>go-swagger is another example of code generation. The output is executable Go code as the Ruby on Rails example above was Ruby code. The distinction is the input. While Ruby on Rails relied on long bash commands, go-swagger uses a YAML or JSON file for data. With this one minor change, you can now re-run the generation. Changes to the API are likely to happen so this is very&nbsp;helpful.</p><p>It wasn&#8217;t too long after working with go-swagger that a change to an API had to be made. Dozens of files were being changed because of one minor tweak. Is this DRY? Has code generation just removed the idea of &#8220;refactoring when you need to repeat your code&#8221; and exacerbated the problem using automation? And more importantly, why was this a good&nbsp;thing?</p><p>Coincidentally, around the time I was hunting for bugs in copy/pasted blocks A and Z, I read the seminal book &#8220;The Pragmatic Programmer&#8221; by Andy Hunt and Dave Thomas. This book is where &#8220;DRY&#8221; comes from. They actually publish the <a href="http://media.pragprog.com/titles/tpp20/dry.pdf">DRY chapter</a> of their new &#8216;20th Anniversary&#8217; edition as a sample and I&#8217;d definitely recommend reading both it and the&nbsp;book.</p><p>Unfortunately, I had missed a critical idea in the chapter about DRY. It&#8217;s subtle but it&#8217;s even in the definition of&nbsp;DRY.</p><blockquote><p>&#8220;Every piece of knowledge must have a single, unambiguous, authoritative representation within a system&#8221;&#8202;&#8212;&#8202;Andy Hunt and Dave Thomas; The Pragmatic Programmer</p></blockquote><p>Do you see it? It doesn&#8217;t actually mention <em>code</em>. It&#8217;s about <strong>knowledge</strong>. What does that mean? It means this isn&#8217;t about refactoring code. It&#8217;s about refactoring knowledge, which is a superset of your code. More specifically, &#8220;knowledge&#8221; in this case can refer to everything from the SQL you use, the API you&#8217;ve designed, the objects you&#8217;ve programmed and even the documentation you&nbsp;write.</p><p>So how does this apply to our go-swagger generation? Simply put, there is only one &#8220;authoritative representation&#8221; in the system, and it&#8217;s the API documentation. The API documentation should systematically influence the program&#8217;s design when possible.</p><p>Why doesn&#8217;t go-swagger just dynamically read the API description and produce a functioning API at runtime? Go is a very light-weight, performance oriented and statically typed programming language. While it would absolutely be possible of any language, it would not necessarily be useful when considering performance.</p><p>Go has evolved into a language of small, sharp tools. Its focus on small directory sized packages helps to make code reusable and easy to read. Packages are statically typed, and &#8220;nothing is hidden&#8221;. There&#8217;s no magical construct methods that happen to perform random tasks when you create objects. Constructors seemed so obvious that the thought of a language without them seemed almost archaic when I started to learn&nbsp;Go.</p><p>Code generation provides metaprogramming to a statically typed programming language in a performant way. go-swagger does this using a set of library packages for the parts that don&#8217;t change based on API, and a structured set of implementation functions and data models used for the parts that represent your API. This is a great approach as changes to the library packages don&#8217;t need to interrupt the implementation details.</p><p>For people fluent in Go, the idea of loading a monolithic package for slowly building dynamic functionality like Active Record does is completely asinine. Some ORMs do exist for Go, but you can&#8217;t go more than two comments in to a discussion before someone tells you to just use this or that SQL helper and be done with&nbsp;it.</p><p>So what about using go-swagger&#8217;s YAML to Go generation approach to SQL Database management? Well, it exists. There are a few different packages like <a href="https://github.com/lqs/sqlingo">sqlingo</a> or <a href="https://github.com/xo/xo">xo</a> that allow you to generate Go code from your Database scheme. But what if you wanted to use both this SQL platform and go-swagger together? That wouldn&#8217;t be DRY, as now you have <em>two separate</em> bodies of knowledge that can conflict: Your database and your API. I like to think of these as &#8220;outside-in&#8221; approaches, as outside parts of your program dictate or generate what&#8217;s going on&nbsp;inside.</p><p>Recently, I began working on a project that involved <a href="https://kubernetes.io">Kubernetes</a>, and some of the Kubernetes tools generate scaffolding and YAML files. The interesting thing I noticed about these tools was that this was the opposite of the go-swagger approach. They were producing YAML by scanning Go code. You can place &#8220;markers&#8221;&#8202;&#8212;&#8202;fancy comments&#8202;&#8212;&#8202;in your code, and the controller-gen tool reads the comments and related code and produces your&nbsp;YAML.</p><p>The controller-gen approach was helpful because it had one &#8220;authoritative representation&#8221; in the system and that was your code. This was an &#8220;inside-out&#8221; approach, as the code dictated what the YAML would look like, just by existing as&nbsp;code.</p><p>This led me to a thought experiment: What would this &#8220;inside-out&#8221; authoritative representation approach look like if it was done in its entirety? Well, it would start with some simple Go models mixed with tags, markers, and documentation. The documentation and the model would generate into an API description, and the model would generate into a SQL Database and a set of helper functions.</p><p>go-swagger does allow something similar to this. It allows you to have comments in your code that will generate your API description. This approach is very similar but it&#8217;s missing one critical piece. It can&#8217;t get all of the content from your code. It <em>does</em> require you to duplicate the knowledge about which API routes do&nbsp;what.</p><p>As for SQL? I haven&#8217;t yet found a tool that does this. I have found plenty of SQL Builders, I&#8217;ve found a few SQL to Go generates, but I haven&#8217;t found anything to build my SQL for&nbsp;me.</p><h4>Resources</h4><p><a href="https://rubyonrails.org">Ruby on&nbsp;Rails</a></p><p><a href="https://pragprog.com/titles/tpp20/the-pragmatic-programmer-20th-anniversary-edition/">The Pragmatic Programmer&#8202;</a>&#8212;&#8202;Andy Hunt and Dave Thomas (20th Anniversary Edition)</p><p><a href="http://media.pragprog.com/titles/tpp20/dry.pdf">DRY chapter</a> of The Pragmatic Programmer, &#8216;20th Anniversary&#8217; Edition</p><p><a href="https://golang.org">The Go Programming Language</a></p><p><a href="https://github.com/go-swagger/go-swagger">go-swagger</a></p><p><a href="https://kubernetes.io">Kubernetes</a></p><div><hr></div><p><a href="https://medium.com/geekculture/code-generation-is-terrible-i-love-it-27d2ba2ce68b">Code Generation is Terrible; I Love It</a> was originally published in <a href="https://medium.com/geekculture">Geek Culture</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded></item><item><title><![CDATA[Minding Your Tabs and Spaces]]></title><description><![CDATA[Technical debt comes in all sizes.]]></description><link>https://www.jakew.ca/p/minding-your-tabs-and-spaces-15a17f2d8e6b</link><guid isPermaLink="false">https://www.jakew.ca/p/minding-your-tabs-and-spaces-15a17f2d8e6b</guid><dc:creator><![CDATA[Jake Winters]]></dc:creator><pubDate>Mon, 24 May 2021 12:42:53 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f2d366e4-4b68-489c-9019-c689034ed28c_1024x683.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h4>Technical debt comes in all sizes. Some debt pays. Some debt&nbsp;costs.</h4><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hddL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c35feaa-71f8-4182-9212-6354ab1bfd2c_1024x683.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hddL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c35feaa-71f8-4182-9212-6354ab1bfd2c_1024x683.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hddL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c35feaa-71f8-4182-9212-6354ab1bfd2c_1024x683.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hddL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c35feaa-71f8-4182-9212-6354ab1bfd2c_1024x683.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hddL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c35feaa-71f8-4182-9212-6354ab1bfd2c_1024x683.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hddL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c35feaa-71f8-4182-9212-6354ab1bfd2c_1024x683.jpeg" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c35feaa-71f8-4182-9212-6354ab1bfd2c_1024x683.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!hddL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c35feaa-71f8-4182-9212-6354ab1bfd2c_1024x683.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hddL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c35feaa-71f8-4182-9212-6354ab1bfd2c_1024x683.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hddL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c35feaa-71f8-4182-9212-6354ab1bfd2c_1024x683.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hddL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c35feaa-71f8-4182-9212-6354ab1bfd2c_1024x683.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@neonbrand?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">NeONBRAND</a> on&nbsp;<a href="https://unsplash.com/s/photos/peaceful-gardening?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>One of my weaknesses is &#8220;gardening.&#8221; No, not the dirt and flowers kind&#8212;though I&#8217;m sure that&#8217;s fun for the same&nbsp;reason.</p><p>&#8220;Gardening&#8221; is the detailed work done after writing and testing code. It is similar to refactoring&#8212;reorganizing code to make it more efficient, reusable, or readable&#8212;but at smaller scales. Gardening helps ensure the code has consistent naming, syntax, and documentation and that the code is in compliance with the style&nbsp;guide.</p><p>Paying attention to the minutiae of the code is a requirement for programmers. One misplaced semicolon or one missing equal sign, and you could spend hours debugging.</p><p>This is not my weakness.</p><p>For me, tending to the code&#8217;s minutiae is fun. I enjoy it immensely. But, this is the problem. Knowing when &#8220;enough is enough&#8221; has always been my weakness. I can spend hours aligning brackets, renaming things, and writing excessive documentation.</p><p>This compulsion to detail has caused simple tasks to grow so big that I give&nbsp;up.</p><p>So, what to&nbsp;do?</p><p>If I don&#8217;t clean up my code, the code becomes an incomprehensible mess. Messy code is hard to understand. Code that can&#8217;t be understood is not able to be maintained. Unmaintainable code is discarded.</p><p>Not cleaning up code impacts development in ways that affect business. The effects range from simple bugs to preventing delivery, all of which are opposed to&nbsp;revenue.</p><p>If gardening is enjoyable for me, removing it from development reduces the reward. I&#8217;m less likely to do software development if I don&#8217;t enjoy at least some aspect of&nbsp;it.</p><p>But if I kept getting stuck in the details, the business results would be affected immensely.</p><p>I needed a&nbsp;system.</p><p>Here is what I came up with: defer the fun stuff. Not indefinitely, but to when my motivation and energy are&nbsp;lowest.</p><p>My energy, focus, and motivation are usually highest before lunch. It slowly weans until around 4 PM, and by the time my kids are in bed, all hope of getting anything productive done has disappeared.</p><p>I tackle the big tasks like designing and implementation before around 2 PM. The last few hours of work or after my kids have gone to bed, when I&#8217;m tired, with a brain as sharp as playdough, I go through the list so I can still contribute.</p><p>The hard part becomes deciding what to&nbsp;defer.</p><p>What do you do to keep yourself moving forward? What systems have you created? Reply and let me&nbsp;know!</p><p>Thanks for&nbsp;reading!</p>]]></content:encoded></item><item><title><![CDATA[I Discovered How to Read A Book; And Now I Can’t Read]]></title><description><![CDATA[A few years back, I had a moment of clarity.]]></description><link>https://www.jakew.ca/p/i-discovered-how-to-read-a-book-and-now-i-cant-read-685573e0765a</link><guid isPermaLink="false">https://www.jakew.ca/p/i-discovered-how-to-read-a-book-and-now-i-cant-read-685573e0765a</guid><dc:creator><![CDATA[Jake Winters]]></dc:creator><pubDate>Fri, 21 May 2021 23:23:58 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/34236856-1ec0-4cf3-bad4-466ed76bd6e7_800x533.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ltbl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60ec53fb-e98c-45ea-9002-93a6f3572375_800x533.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ltbl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60ec53fb-e98c-45ea-9002-93a6f3572375_800x533.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Ltbl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60ec53fb-e98c-45ea-9002-93a6f3572375_800x533.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Ltbl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60ec53fb-e98c-45ea-9002-93a6f3572375_800x533.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Ltbl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60ec53fb-e98c-45ea-9002-93a6f3572375_800x533.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ltbl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60ec53fb-e98c-45ea-9002-93a6f3572375_800x533.jpeg" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/60ec53fb-e98c-45ea-9002-93a6f3572375_800x533.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Ltbl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60ec53fb-e98c-45ea-9002-93a6f3572375_800x533.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Ltbl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60ec53fb-e98c-45ea-9002-93a6f3572375_800x533.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Ltbl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60ec53fb-e98c-45ea-9002-93a6f3572375_800x533.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Ltbl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60ec53fb-e98c-45ea-9002-93a6f3572375_800x533.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@karsten_wuerth?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Karsten W&#252;rth</a> on&nbsp;<a href="https://unsplash.com/s/photos/dark-cloud?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>A few years back, I had a moment of clarity. One of the things I learned was how to read fast. This was great for a time. I enjoyed the books I read and the time I spent reading. I read 33 books in a&nbsp;year.</p><p>About 18 months ago, I ruined it. This was due in part to two things: I read the book &#8220;How to Read a Book&#8221;, and I heard a quite from a YouTuber.</p><p>&#8220;How to Read a Book&#8221; was supposed to be amazing. It teaches you how to truly get into the thoughts of the author. It has some sage wisdom in it. It emphasizes that you truly haven&#8217;t read a book until you&#8217;ve tried and tested the physical things the book demands you&nbsp;do.</p><p>It&#8217;s right. But it isn&#8217;t fun. Over night, books that were a joy to read in a week became the unfinished dark clouds hanging over my&nbsp;head.</p><p>I want to read The Lean Startup. But I can&#8217;t start a startup right now, I have two kids under 4 and I work full&nbsp;time.</p><p>I want to read The Food Lab, but I don&#8217;t have time to experiment with food, my kids are&nbsp;hungry.</p><p>I want to read Captivate: The Science of Succeeding with People, but I don&#8217;t want to have to talk to&nbsp;people.</p><p>At this point, I was reading one book a&nbsp;month.</p><p>Dan Martel, an entrepreneur and underrated YouTuber, has a lot of great content in his channel. One of his many videos advocates &#8221;Just In Time Learning.&#8221; The concept is pretty simple. Agree to do something, and then figure out how to do&nbsp;it.</p><p>My brain has spun this around. Now, my brain believes that anything I&#8217;m reading must be related to one of my goals. If it&#8217;s not, then that book no longer contains actual valuable (to me) knowledge.</p><p>After that, I was reading half a book a&nbsp;month.</p><p>Recently, to make things even worse, I&#8217;ve discovered Zettelkasten which is also know as &#8220;how you&#8217;ve been taking notes wrong this whole time.&#8221; I hate how much sense it&nbsp;makes.</p><p>The concept is pretty simple, and I&#8217;ve honestly started systems similar to, but not exactly like it. The Zettelkasten system of extracting atomic Ideas and linking them together is great until you realize that it makes reading a book into&nbsp;work.</p><p>But reading is supposed to be fun. Entertaining, even.</p><p>Now, I can&#8217;t read. I haven&#8217;t finished a book in the last six&nbsp;months.</p><p>But if I don&#8217;t take notes properly, did I even read&nbsp;it?</p><p>And if I didn&#8217;t act on those concepts, did I actually read&nbsp;it?</p><p>And should I even read it if it won&#8217;t help me survive being a dad of two young kids during a pandemic?</p>]]></content:encoded></item><item><title><![CDATA[My Road to ADHD]]></title><description><![CDATA[It&#8217;s weird how it all worked out.]]></description><link>https://www.jakew.ca/p/my-road-to-adhd-71811e2d7b12</link><guid isPermaLink="false">https://www.jakew.ca/p/my-road-to-adhd-71811e2d7b12</guid><dc:creator><![CDATA[Jake Winters]]></dc:creator><pubDate>Sun, 11 Apr 2021 18:59:57 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/fbee8848-6301-48e3-b004-1cbbb9d6b733_1024x1280.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zAn2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc0e3c1b-60f5-4c4a-8102-796d3e26cc11_1024x1280.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zAn2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc0e3c1b-60f5-4c4a-8102-796d3e26cc11_1024x1280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zAn2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc0e3c1b-60f5-4c4a-8102-796d3e26cc11_1024x1280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zAn2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc0e3c1b-60f5-4c4a-8102-796d3e26cc11_1024x1280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zAn2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc0e3c1b-60f5-4c4a-8102-796d3e26cc11_1024x1280.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zAn2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc0e3c1b-60f5-4c4a-8102-796d3e26cc11_1024x1280.jpeg" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc0e3c1b-60f5-4c4a-8102-796d3e26cc11_1024x1280.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Phone giving directions down road.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Phone giving directions down road." title="Phone giving directions down road." srcset="https://substackcdn.com/image/fetch/$s_!zAn2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc0e3c1b-60f5-4c4a-8102-796d3e26cc11_1024x1280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zAn2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc0e3c1b-60f5-4c4a-8102-796d3e26cc11_1024x1280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zAn2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc0e3c1b-60f5-4c4a-8102-796d3e26cc11_1024x1280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zAn2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc0e3c1b-60f5-4c4a-8102-796d3e26cc11_1024x1280.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@tamas_tuzeskatai?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Tamas Tuzes-Katai</a> on&nbsp;<a href="https://unsplash.com/s/photos/map?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>It&#8217;s weird how it all worked&nbsp;out.</p><p>Back in 2015, I started seeing a psychologist because I was unhappy with the fact that I wanted to (and walked with the intent to) jump off a&nbsp;bridge.</p><p>I was unhappy. I was stressed out by doing a job that made me anxious. I hated it. I spent years struggling through university getting a Computer Science degree just to be wasting it. Well, it turns out the two-hour walk to the bridge helped &#8220;clear my mind,&#8221; and so I decided to seek&nbsp;help.</p><p>I had appointments nearly monthly with my psychologist for two years. The general insight was that I was unhappy about a few things, and I should just fix them. So I found a job I liked, then I found one without a commute. Then I bought a car. I didn&#8217;t feel I had much reason to complain. So why am I sad? At this point, it&#8217;s depression.</p><p>In June of 2018, I started taking antidepressants. This was game-changing for me. The world was now &#8220;in colour.&#8221; I began reading more than ever. I got an insight into my feelings. I became more self-aware.</p><p>Soon my reading became habitual, and I started to learn new things. I learned a few life philosophies from books that I still love and by which I try to&nbsp;live.</p><p><strong>Minimalism:</strong> I try to make do with as little as possible. Excessivness just causes anxiety. I&#8217;ve taken this to heart and try to live only with what is essential and makes me&nbsp;happy.</p><p><strong>Stoicism:</strong> Recognizing not only that I can be happy, but that I can be satisfied with the world as it is. Amora Fati. If you want to be truly happy, learn to love fate, not just what you want to happen, but what is happening.</p><p>Along with these new philosophies, I started to believe that I could do new things, too. Start ventures, get in shape,&nbsp;etc.</p><p>Due to side effects, I had to quit the antidepressants. Now, all of the amazing things I wanted to do seemed more difficult. As the king of forgotten projects, I&#8217;ve found this excruciatingly hard. In a bid to stay &#8220;productive&#8221; (read: effective), I started a software development podcast to learn how other developers get things&nbsp;done.</p><p>Only the software developers couldn&#8217;t give me answers. Each was winging it. I was spending a lot of time trying to force myself to get work done. These people are making lists on&nbsp;napkins.</p><p>Not only that, but while I was talking to them, people who were successful in a field I wished to be in, I couldn&#8217;t pay attention. This attentiveness was the start of me trying to figure out what the hell was wrong with&nbsp;me.</p><p>In my usual distracted fashion, I came across a productivity video on YouTube, but with a twist. It was a How to ADHD video on the shortcomings of people with ADHD and techniques and systems on how to correct these shortcomings.</p><p>And I had every shortcoming. And I was implementing every technique. There was a sudden click at this&nbsp;moment.</p><h4>I have&nbsp;ADHD.</h4><p>My next task was to confirm this was the case. So I went back to my psychologist. I asked her if she could test me, and she said she could. Twice over a month, we met, and she asked me questions. She had my mother and wife fill out some forms and then reviewed them&nbsp;all.</p><p>Many of the questions asked involved my academic performance and how I was growing up. I recalled for my psychologist the time I was in the quiet library with an extra-large coffee, attempting to study for Statistics but being physically pained by doing so. I also told her of how my wife could complete whole conversations without me noticing or send me to the basement to get two things and come back with none, or how I end up with a wall of anxiety between me and doing the&nbsp;dishes.</p><p>My psychologist gave me the&nbsp;results.</p><p>Inattentive ADHD confirmed.</p><p>In fact, it turns out that some antidepressants work to help ADHD. This is why the specific antidepressant made such a big difference.</p><p>So what&#8217;s next? Well, I plan to spend the next few months trying my hardest to overcome my ADHD without medication. I plan to try none-medications like diet (Keto), exercise (biking and weightlifting), supplements (Creatine) and vitamins (Fish oil, &#8220;ZIMB6&#8221;). That is if I can do these things without getting distracted or discouraged.</p><p>But to be honest, I&#8217;ve tried diet, I&#8217;ve attempted to exercise regularly. These things worked in the short term. Willing myself to do them is challenging and not sustainable. I&#8217;m hoping that, with medication, I can do&nbsp;it.</p>]]></content:encoded></item><item><title><![CDATA[Game-Changing Books]]></title><description><![CDATA[If you have a hard time learning new things, don&#8217;t give up.]]></description><link>https://www.jakew.ca/p/game-changing-books-137d9d82b39c</link><guid isPermaLink="false">https://www.jakew.ca/p/game-changing-books-137d9d82b39c</guid><dc:creator><![CDATA[Jake Winters]]></dc:creator><pubDate>Tue, 03 Sep 2019 15:00:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!k5tm!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf66df35-58be-4040-94bc-08d971e90917_1282x1284.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>If you have a hard time learning new things, don&#8217;t give up. Learn to learn. Learn to learn&nbsp;<em>better</em>.</p></blockquote><p>A small confession: I was a slow reader until I was 27. This issue was a massive issue for me in high school and just as slow in university. So what changed when I was 27? I realized that I wasn&#8217;t bad at reading. I was terrible at reading, on <em>paper</em>. I read an article* citing an exciting study about how people who have Dyslexia may read better while using a backlit&nbsp;screen.</p><p>This concept was the most obvious thing in the world once I had read it. I read it on my computer without an issue. I had been reading computer screens for quite a while, and I did not have any problems. I had been missing out on reading <em>books</em> because they were paper. But they have them on devices&nbsp;now.</p><p>A straightforward idea changed my world. What could I <em>read</em> that might help me to read even better? To learn better? To be&nbsp;better?</p><p>* I lost the article, unfortunately.</p><p>Neat link: <a href="https://geon.github.io/programming/2016/03/03/dsxyliea">A web page that simulates Dyslexia</a></p><h4>&#128218;Learn to Read&nbsp;Better</h4><p>One day while browsing <a href="https://reddit.com">Reddit</a>, I came across a <a href="https://www.reddit.com/r/productivity/comments/8ot1dw/people_who_have_it_figured_out_what_were_the_game/e05xet7">comment</a> about game-changing improvements. One of the references he made to was <a href="https://amzn.to/2zJh5qg">Remember Everything You Read: The Evelyn Wood 7-Day Speed Reading and Learning Program</a>. I&#8217;ll admit that all the concepts didn&#8217;t sink in at first. How do I remember everything I have read about a program that teaches me to <em>remember everything I&nbsp;read?</em></p><p>After reading this book, my Words Per Minute (WPM) of reading immediately climbed from around 130 WPM to 230 WPM. That&#8217;s an increase of 100 WPM, and I was still comprehending the same amount of content. Not&nbsp;bad.</p><p>My challenge goal for that year on <a href="https://www.goodreads.com/user/show/38629457-jake-winters">Goodreads</a> was ten books. I crushed it at 26. But is reading faster <em>really</em> the same as reading better? Well, technically, no.</p><p>While listening to <a href="https://tim.blog/2019/04/25/kevin-systrom/">The Tim Ferriss Show</a> podcast, guest Kevin Systrom mentions the book <a href="https://amzn.to/2LrBzsY">How to Read a Book</a> by Mortimer J. Adler and Charles Van Doren. Kevin Systrom mentions how reading from the first word to last is <em>not</em> the correct way to read a&nbsp;book.</p><p>I wish that book sooner. <em>How to Read a Book</em> breaks down the ability to read into four levels. The first, &#8220;Elementary Reading,&#8221; most people learn in school. The second, &#8220;Inspectional Reading,&#8221; what Kevin Systrom mentions on &#8220;The Tim Ferriss Show&#8221; podcast, is the level with which most university students or researchers are familiar. Steps include inspecting the table of contents and summaries.</p><p>This book was my introduction to &#8220;Analytical Reading.&#8221; The art of not only reading words but in understanding the content and even questioning and critiquing it.</p><blockquote><p>The most important thing to remember about any practical book is that it can never solve the practical problems with which it is concerned. [&#8230;] a practical problem can only be solved by action itself. [&#8230;] Nothing short of the doing solves the problem.&#8202;&#8212;&#8202;Mortimer J. Adler and Charles Van&nbsp;Doren</p></blockquote><p>One of the lines that stuck out to me is that practical problems require practical solutions. Obvious, right? Except I had spent a lot of time reading technical books and never actually doing the tasks in it. You&#8217;re not done <em>reading</em> a book until you&#8217;ve done the <em>actions</em> required to finish&nbsp;it.</p><h4>&#127891;Learn to Learn&nbsp;Better</h4><p>Okay. So you can read to read better. What else can you pick&nbsp;up?</p><p>For those of you who are Software Developers, you might know and appreciate <em><a href="https://amzn.to/2ZFX6mU">The Pragmatic Programmer: From Journeyman to Master</a></em>* I am a big fan of it, and it&#8217;s&nbsp;writers.</p><p>When I found out <a href="https://twitter.com/PragmaticAndy">Andrew Hunt</a> wrote an entire book on improving your ability to think and learn, I jumped at my chance to read it. <em><a href="https://amzn.to/2ZNspMC">Pragmatic Thinking and Learning: Refactor Your Wetware</a></em> by Andy Hunt is a bit out of date. In a good way. The concepts Andy brings forth are ahead of their&nbsp;time.</p><p><em>Pragmatic Thinking and Learning</em> was released in 2008, when iPhone was a year old. In it, Andy recommends running a Wiki on your palm pilot. He names this his &#8220;Exocortex&#8221; (Exo meaning External, and Cotext meaning Brain). Now, there are a plethora of apps to do this for free. <a href="http://Evernote.com">Evernote</a> (2008), <a href="https://www.onenote.com">OneNote</a> (2010**), <a href="https://bear.app">Bear</a> (2016), and <a href="https://www.notion.so/">Notion</a> (2017) would all eventually follow.</p><p>Andy goes into great detail, explaining not only the R- and L-Modes of the brain but also in how to use them. He introduces you to cognitive biases and helps expose &#8220;hardware bugs,&#8221; all while using very software-development oriented metaphors.</p><p>One thing that you&#8217;ll learn quickly from this is that your brain is, unfortunately, a part of your body. If you&#8217;re like me, you probably forget this often. Treating your body right is of great importance if you want to continue using what you just learned about learning. I&#8217;d recommend checking out <em><a href="https://pragprog.com/book/jkthp/the-healthy-programmer">The Healthy Programmer</a></em> for more tips on&nbsp;that.</p><p>* Congrats to <a href="https://twitter.com/PragDave">Dave Thomas</a> and <a href="https://twitter.com/PragmaticAndy">Andy Hunt</a> for their new <em><a href="https://pragprog.com/book/tpp20/the-pragmatic-programmer-20th-anniversary-edition">20th Anniversary Edition</a></em>, currently in&nbsp;Beta.</p><p>** Technically, OneNote was available on <em>Windows CE</em> devices, but who actually used those? Comment below if you remember those&nbsp;things.</p><h4>Conclusion</h4><p>Tool Sharpening is a common idiom. If you want to be a better developer, learn more about architecture and design patterns. If you want to be a better programmer, learn more about the programming language and your IDE. Taking a step back, what tools should you learn to <em>learn</em>&nbsp;better?</p><p>Being able to learn better is an important step that I feel a lot of people miss. Learning to read better was a game-changing step in my life that led to even more changes. Reading to learn better has allowed me to learn so much more than I would otherwise be able&nbsp;to.</p><p>What books have you read that changed your life, professionally or personally? What critical skills did you improve that you didn&#8217;t think could be improved? I want to hear from&nbsp;you.</p>]]></content:encoded></item><item><title><![CDATA[Desire Paths: For When Shortcuts Don’t Cut It [macOS]]]></title><description><![CDATA[Summary: You don&#8217;t need expensive keyboards to improve convenience.]]></description><link>https://www.jakew.ca/p/desire-paths-for-when-shortcuts-dont-cut-it-macos-67ade700e3b3</link><guid isPermaLink="false">https://www.jakew.ca/p/desire-paths-for-when-shortcuts-dont-cut-it-macos-67ade700e3b3</guid><dc:creator><![CDATA[Jake Winters]]></dc:creator><pubDate>Tue, 27 Aug 2019 13:00:04 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/991547c4-bcbe-4928-934b-5b13091181b4_780x693.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Summary: You don&#8217;t need expensive keyboards to improve convenience. Complete customizability is excellent, but we can get halfway there with simple soft-hacks. You can use system preferences and software tools to customize your keyboard to make your navigation more comfortable and help prevent&nbsp;errors.</p></blockquote><p>Whether you&#8217;re on a computer all day or just trying to do something quickly, you&#8217;ve probably realized that switching between the keyboard and mouse can take a moment. Added all together, these moments can eat up a chunk of time. This wasted time is terrible for productivity and gets even worse if you touch type and manage to miss home&nbsp;row.</p><p>This latency is a known limitation of most modern operating systems, and as such, there is a solution: keyboard shortcuts. Keyboard shortcuts present problems as well. Most of them are designed to work for general problems and are not optimized. If you&#8217;ve ever typed Command + Tab, Tab, Tab, Tab, Tab, you know what I&nbsp;mean.</p><p>Remembering keyboard shortcuts can be a daunting task. Like most things, the key to remembering them is using them. Generic ones like Copy and Paste are usually pretty easy to remember. Creating custom cheat sheets for each app you use can also be quite handy. Then there&#8217;s the option to customize them.</p><h4>When is a keyboard shortcut not a shortcut?</h4><p>Has this scenario ever happened to you? You&#8217;re switching between applications and closing them as you go. You think you have iTunes open (Did I connect my phone?!) so you go to close it using Command + Q, nice and simple. Except you just closed a window with 5+ tabs open.&nbsp;Oops.</p><p>All of a sudden, that &#8220;shortcut&#8221; isn&#8217;t much of a shortcut anymore. Luckily, there is a way to disable this for specific applications. If you go to System Preferences and click on Keyboard, you&#8217;ll see a Shortcuts tab. If you create a shortcut for the &#8220;Quit [Application Name]&#8221; menu item, any existing shortcut for that menu item is not triggerable. Note that you&#8217;re going to want to make sure this matches the menu item, not the name of the application. For example, when you open iTerm, it shows &#8220;Close iTerm2&#8221;, not &#8220;Close&nbsp;iTerm&#8221;.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5ckl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae81846f-f41d-4fc0-ac0f-761fd7dc1fe9_780x693.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5ckl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae81846f-f41d-4fc0-ac0f-761fd7dc1fe9_780x693.png 424w, https://substackcdn.com/image/fetch/$s_!5ckl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae81846f-f41d-4fc0-ac0f-761fd7dc1fe9_780x693.png 848w, https://substackcdn.com/image/fetch/$s_!5ckl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae81846f-f41d-4fc0-ac0f-761fd7dc1fe9_780x693.png 1272w, https://substackcdn.com/image/fetch/$s_!5ckl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae81846f-f41d-4fc0-ac0f-761fd7dc1fe9_780x693.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5ckl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae81846f-f41d-4fc0-ac0f-761fd7dc1fe9_780x693.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ae81846f-f41d-4fc0-ac0f-761fd7dc1fe9_780x693.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;System Preferences's Keyboard pane with shortcuts tab loaded. App Shortcuts has added iTerm and Safari shortcuts.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="System Preferences's Keyboard pane with shortcuts tab loaded. App Shortcuts has added iTerm and Safari shortcuts." title="System Preferences's Keyboard pane with shortcuts tab loaded. App Shortcuts has added iTerm and Safari shortcuts." srcset="https://substackcdn.com/image/fetch/$s_!5ckl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae81846f-f41d-4fc0-ac0f-761fd7dc1fe9_780x693.png 424w, https://substackcdn.com/image/fetch/$s_!5ckl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae81846f-f41d-4fc0-ac0f-761fd7dc1fe9_780x693.png 848w, https://substackcdn.com/image/fetch/$s_!5ckl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae81846f-f41d-4fc0-ac0f-761fd7dc1fe9_780x693.png 1272w, https://substackcdn.com/image/fetch/$s_!5ckl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae81846f-f41d-4fc0-ac0f-761fd7dc1fe9_780x693.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">My limited but exceptionally handy tab-savers.</figcaption></figure></div><p>In my case, I added this to Safari and iTerm. I can sit in my iTerm window and press Command + Q or Command + W and nothing&nbsp;happens.</p><h4>When is a keyboard not <em>just</em> a keyboard?</h4><p>A few years ago, when I was working at a contact centre, I decided to purchase a mechanical keyboard. Mechanical keyboards quickly grew into a hobby, and after about five keyboards I had found my endgame, the beautiful 40% Planck Keyboard from OLKB. When is a keyboard not just a keyboard? When it is a piece of&nbsp;art.</p><p>One of the main benefits of the Planck is that it runs on the QMK firmware which offers endless amounts of customizability including changing the key map. I wrote an article about it, including my keymap. The Planck is a fantastic keyboard, and I learned some of my favourite &#8220;desire paths&#8221; from&nbsp;it.</p><p>My only issue was that I needed to move from my desk to the meeting room. I frequently found that switching between the Planck and the built-in MacBook keyboard became confusing for my hands. However, there was no way to add this functionality to my MacBook keyboard. Or so I&nbsp;thought.</p><h4>When is a key <em>less</em> than a&nbsp;key?</h4><p>If you&#8217;re a terminal junky like me, you probably use the Control key a lot. As said before, keyboard shortcuts are a great way to avoid switching to the mouse, but in the simplified, often mouse-less environment of a terminal, they become even more critical.</p><p>I could write an article on <em>just</em> shortcuts for Bash/Zsh. (That&#8217;s not a bad idea. Look forward to that in the future.) The majority of bash shortcuts, along with many used for terminal programs like tmux and Vim use the Control key. The notable exception is the Escape key for Vim to enter &#8220;Normal&nbsp;Mode&#8221;.</p><blockquote><p>As a side note, Vim&#8217;s &#8220;Enter Normal Mode&#8221; shortcut is generally Escape, but Control + [ also exists which works&nbsp;faster.</p></blockquote><p>So, if the Control key is so important, how come it is such a stretch to reach? If you think you know why, please add a comment below. Terrible placement aside, there is a solution. And a pun, but you&#8217;ll get that in a moment. Deep inside of the System Preferences, Apple does let you adjust&nbsp;this.</p><p>You may have noticed while using terminal-based apps that the Home Row comes up often. The home row is the position where your hands should be at rest. Being able to put the most critical keys on this row is helpful, which is why Vim loves it so much. The Home Row contains one of the most useful keys for terminal use: the Return key, as well as one of the least useful: the Caps Lock&nbsp;key.</p><p>The Caps Lock key is useless in this day and age unless you find yourself in YouTube comments. It&#8217;s likely one of the few keys that&#8217;s actuated more often by accident than intention. I&#8217;m sure you can see where these two areas collide. Let&#8217;s convert that prime real-estate Caps Lock into something <em>actually&nbsp;useful</em>.</p><p>In System Preferences, open the Keyboard panel and click on the &#8220;Modifier Keys&#8230;&#8221; The modal that opens gives us some customizability. We can select to set the &#8220;Caps Lock&#8221; option to the value of &#8220;Control&#8221;. Here&#8217;s a gif, because it&#8217;s not 2005 anymore and static images don&#8217;t cut&nbsp;it.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aLgX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c6c3826-d82f-46e7-80af-7b30c2b329be_554x484.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aLgX!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c6c3826-d82f-46e7-80af-7b30c2b329be_554x484.gif 424w, https://substackcdn.com/image/fetch/$s_!aLgX!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c6c3826-d82f-46e7-80af-7b30c2b329be_554x484.gif 848w, https://substackcdn.com/image/fetch/$s_!aLgX!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c6c3826-d82f-46e7-80af-7b30c2b329be_554x484.gif 1272w, https://substackcdn.com/image/fetch/$s_!aLgX!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c6c3826-d82f-46e7-80af-7b30c2b329be_554x484.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aLgX!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c6c3826-d82f-46e7-80af-7b30c2b329be_554x484.gif" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c6c3826-d82f-46e7-80af-7b30c2b329be_554x484.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!aLgX!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c6c3826-d82f-46e7-80af-7b30c2b329be_554x484.gif 424w, https://substackcdn.com/image/fetch/$s_!aLgX!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c6c3826-d82f-46e7-80af-7b30c2b329be_554x484.gif 848w, https://substackcdn.com/image/fetch/$s_!aLgX!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c6c3826-d82f-46e7-80af-7b30c2b329be_554x484.gif 1272w, https://substackcdn.com/image/fetch/$s_!aLgX!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c6c3826-d82f-46e7-80af-7b30c2b329be_554x484.gif 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Okay. So we&#8217;ve upgraded some dead space. One other thing you may have noticed is that there was another option in there. You can set the pressing of the Caps Lock key to an &#8220;Escape&#8221; press. Setting the &#8220;Caps Lock&#8221; setting to the &#8220;Escape&#8221; value is very tempting. If you have one of Apple&#8217;s Touch Bar MacBook Pros, &#8220;Escape&#8221; may even be a better choice. I did this for a while, and I can recommend it as much as the &#8220;Control&#8221; option. Of course, we can do one&nbsp;better.</p><blockquote><p>Side note for Apple, if you&#8217;re reading this. I love the Touch Bar. It would do well <em>above</em> the function keys on a pro device&nbsp;though.</p></blockquote><h4>When is a key <em>more</em> than a&nbsp;key?</h4><p>It&#8217;s about time we introduce the real star of this article, Karabiner Elements. Self-described as &#8220;A powerful and stable keyboard customizer for macOS,&#8221; I decided to put it to the test. I enjoyed the outcome, and I think you will as&nbsp;well.</p><p>Karabiner Elements is very similar to the &#8220;Modifier Keys&#8230;&#8221; prompt in the same way a Formula 1 car is very similar to a bicycle. In its &#8220;Simple Modifications&#8221; tab, Karabiner allows you to switch <em>any</em> key to act as <em>any</em> key. Did I mention this was the &#8220;<em>Simple Modifications</em>&#8221; tab?</p><blockquote><p>&#8221;With great power there must also come&#8202;&#8212;&#8202;great responsibility!&#8221; RIP, Uncle&nbsp;Ben.</p></blockquote><p>While there are eight tabs total, the first three (Simple Modifications, Function Keys, and Complex Modifications) are the ones we will discuss. If you wanted to, you could easily repeat the same modification, converting the Caps Lock key to a Control key when&nbsp;pressed.</p><p>The &#8220;Function Keys&#8221; tab is quite helpful as it allows you to change what the functions labelled on the keyboard do. Perhaps you don&#8217;t like Launchpad and want to have a regular F4 without changing the rest of&nbsp;them?</p><p>The &#8220;Complex Modifications&#8221; tab is where things get <em>crazy</em>. What if a key could do different things based on the <em>context</em> of its use? Here are a few examples:</p><h4>Application Specific:</h4><p>Perhaps your IDE forces you to use Shift + F4 but you don&#8217;t use F4 for anything. You can have Karabiner force all F4 presses <em>inside of your IDE</em> to be Shift + F4 for&nbsp;you.</p><h4>Multi-Modifier Keys:</h4><p>If you&#8217;ve read my post on <a href="https://effectivedev.com/alfred-automation/">Alfred</a>, you may have noted that you can make advanced workflows start from a keyboard shortcut. If you&#8217;ve looked through the keyboard shortcuts in your apps, you&#8217;ll notice there aren&#8217;t a lot of options left that give you flexibility.</p><p>For example, if you cycle through the same five apps regularly, all day, your pinky finger may get tired from tabbing between apps. Let&#8217;s add our own: introducing the makeshift Hyper&nbsp;key!</p><p>The makeshift Hyper key is technically a combination of Control + Option + Command + Shift. Pressing Control + Option + Command + Shift + C to open Slack would be kind of annoying. Well, let&#8217;s change a key to be the Hyper key. In this case, let&#8217;s set the right Command key to be our Hyper key. After updating Alfred to open apps using keyboard shortcuts, I have set the following:</p><ul><li><p>Hyper + C to open my Slack&nbsp;<em>C</em>hat.</p></li><li><p>Hyper + K to open my <em>K</em>anban&nbsp;board.</p></li><li><p>Hyper + G to open my&nbsp;<em>G</em>itlab.</p></li><li><p>Hyper + M to open my Spark&nbsp;<em>M</em>ail.</p></li></ul><p>Realistically, your memory is the soft limit for&nbsp;this.</p><h4>Differentiate between modifier and lone key&nbsp;presses:</h4><p>This customization is elegant, and probably my favourite part of Karabiner. A key can be a key when pressed by itself, but another key when used as a modifier. For example, let&#8217;s set our ill-suited Caps Lock key to be Escape when pressed alone, but count as Control when pressed with another&nbsp;key.</p><p>So now pressing the Caps Lock key is equivocal to pressing the Escape key. However, pressing Caps Lock + P is equivocal to pressing Control + P. Just think of the Vim possibilities!</p><p>To do&nbsp;this:</p><ol><li><p>Open the &#8220;Complex Modifications&#8221; tab in Karabiner.</p></li><li><p>Click on &#8220;Add&nbsp;Rule&#8221;.</p></li><li><p>Click on &#8220;Import more rules from the Internet (open a web browser)&#8221;.</p></li><li><p>When the browser opens, search for &#8220;Change caps_lock key (rev&nbsp;4)&#8221;.</p></li><li><p>Click &#8220;Import&#8221; for the option listed. Once imported, it&#8217;ll show you all the available rules to&nbsp;select.</p></li><li><p>Find &#8220;Change caps_lock to control if pressed with other keys, to escape if pressed alone&#8221; and click &#8220;Enable&#8221; next to&nbsp;that.</p></li></ol><p>Done!</p><h4>Even More Craziness</h4><p>There are even more things you can do, as well. Here are some examples:</p><ul><li><p>Double-press a key to result in an&nbsp;event.</p></li><li><p>Press-and-hold a key to result in an&nbsp;event.</p></li><li><p>Use multiple non-modifier keys to result in an&nbsp;event.</p></li></ul><h4>The Ugly Side of Karabiner</h4><p>One thing I&#8217;ve found difficult about Karabiner is that it&#8217;s documentation for Complex Modifiers is hidden under the karabiner.json reference manual menu item. Once you have created a complex modifier JSON file, you need to import it. At the time of this article, there is no way to import JSON files directly. To import the file, you need to use the URL karabiner://karabiner/assets/complex\_modifications/import?url={URL} where the {URL} is the full path to the JSON file starting with file:///, URL-encoded.</p><p>For example, assuming the file is at /Users/username/Documents/Modifier.json, we change it to file:///Users/username/Documents/Modifier.json, and then encode it as file%3A%2F%2F%2FUsers%2Fusername%2FDocuments%2FModifier.json and prefix it with the rest of the URL as karabiner://karabiner/assets/complex\_modifications/import?url=file%3A%2F%2F%2FUsers%2Fusername%2FDocuments%2FModifier.json.</p><h4>Example karabiner.json file</h4><p>&lt;a href="https://medium.com/media/8ebf863e8b25b71d515eacb19089954b/href"&gt;https://medium.com/media/8ebf863e8b25b71d515eacb19089954b/href&lt;/a&gt;</p><h4>Wrapping It All&nbsp;Up</h4><p>These changes represent my own needs. So now we&nbsp;have:</p><ul><li><p>Removed keyboard shortcuts that cause more harm than&nbsp;good;</p></li><li><p>Single keyboard shortcuts to open apps and web&nbsp;pages;</p></li><li><p>Moved some of our most commonly used keys into better locations; and</p></li><li><p>Set up our environment to be able to do even&nbsp;more.</p></li></ul><p>I hope that this article has given you the confidence to create your shortcuts and help speed up your work. If you have created some shortcuts, let me know in the comments&nbsp;below!</p>]]></content:encoded></item><item><title><![CDATA[Alfred: Not Just For Batman]]></title><description><![CDATA[Summary: Alfred is a neat macOS app at first but crazy powerful once you understand it.]]></description><link>https://www.jakew.ca/p/alfred-not-just-for-batman-efa34814419a</link><guid isPermaLink="false">https://www.jakew.ca/p/alfred-not-just-for-batman-efa34814419a</guid><dc:creator><![CDATA[Jake Winters]]></dc:creator><pubDate>Tue, 20 Aug 2019 13:00:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/0864df07-ceec-4380-8507-701a750f311e_1024x632.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Summary: Alfred is a neat macOS app at first but crazy powerful once you understand it.</p></blockquote><p>Sometimes the hardest part about getting work done isn&#8217;t the challenging bits. It&#8217;s the boring parts. You know the ones. Writing up a pull request, or navigating to tickets, etc. Sometimes it&#8217;s hard to get rid of these things. If you can, that&#8217;s great. If you can&#8217;t, there&#8217;s&nbsp;<a href="https://www.alfredapp.com">Alfred</a>.</p><p>After using Shortcuts on iOS and discovering my new love of making workflows to automate my busy work, I decided to have a search for a comparable tool for macOS. Automator on macOS is an excellent start but lacks the ease of use of Shortcuts. For years I was convinced that Alfred was a moderately improved Spotlight search and therefore not worth the&nbsp;money.</p><h4>&#129333;First Servings</h4><p>After installing Alfred and starting to configure it, I knew that I was wrong. Where Spotlight does a decent job of searching files, Alfred is a tool for performing actions of many different types, one of which happens to be an ultra-fast search for files. Alfred is highly configurable and going through its exhausting preference panel helps tell you something about the number of actions available.</p><p>Here are some of my favourites. These are built-in by default, and I use them almost&nbsp;daily:</p><p><em>Clipboard History:</em> If you&#8217;ve ever had to deal with copy-and-pasting two things at once, this solves that problem elegantly. After typing in the keyword (default of clipboard, I switched mine to pb), or pressing the keyboard shortcut (Alt + Command + C), you get a list of the most recent things you&#8217;ve copied. Command + 3 pastes the <em>second</em> most recently copied. Alfred is even smart enough not to store passwords from 1Password or Keychain in the clipboard history.</p><p><em>Snippets:</em> The reason that Command + 3 returns your second copy is because of snippets. They&#8217;re the first result. If you&#8217;ve ever had to copy and paste a template before filling out the specific details, you know how annoying it is to do it again. Snippets are the solution to that. You can paste the template into a snippet and then use the keyword snip to search for it. An example of this would be using &#8220;Merge Request&#8221; templates. I can open Alfred Command + Space and then type snip merge and press enter. The field populates.</p><p><em>Web Search:</em> By default, Alfred has searches for many popular websites setup. You can easily search IMDb Avengers to find out more about the Avengers movie. Where this gets <em>really</em> good is that you can add your own custom searches. For example, I have my work Wiki setup using wiki issue login fails on error to search for any issues containing that text. You can make this even more powerful, but we&#8217;ll get into that&nbsp;below.</p><p>Want to add a new web search? Just go to the site you want to search, type in {query} and do a search. Replace the part of the URL on the results page that says %7Bquery%7D with {query} and then add the URL as a new entry to the table of searches. Here&#8217;s an example where I added in a Python search in about a&nbsp;minute:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HPgo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa89cf50b-2398-48a1-99f8-78e1a5f367e4_1024x632.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HPgo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa89cf50b-2398-48a1-99f8-78e1a5f367e4_1024x632.png 424w, https://substackcdn.com/image/fetch/$s_!HPgo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa89cf50b-2398-48a1-99f8-78e1a5f367e4_1024x632.png 848w, https://substackcdn.com/image/fetch/$s_!HPgo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa89cf50b-2398-48a1-99f8-78e1a5f367e4_1024x632.png 1272w, https://substackcdn.com/image/fetch/$s_!HPgo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa89cf50b-2398-48a1-99f8-78e1a5f367e4_1024x632.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HPgo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa89cf50b-2398-48a1-99f8-78e1a5f367e4_1024x632.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a89cf50b-2398-48a1-99f8-78e1a5f367e4_1024x632.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The query and title added in for a py keyword to search Python documentation.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The query and title added in for a py keyword to search Python documentation." title="The query and title added in for a py keyword to search Python documentation." srcset="https://substackcdn.com/image/fetch/$s_!HPgo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa89cf50b-2398-48a1-99f8-78e1a5f367e4_1024x632.png 424w, https://substackcdn.com/image/fetch/$s_!HPgo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa89cf50b-2398-48a1-99f8-78e1a5f367e4_1024x632.png 848w, https://substackcdn.com/image/fetch/$s_!HPgo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa89cf50b-2398-48a1-99f8-78e1a5f367e4_1024x632.png 1272w, https://substackcdn.com/image/fetch/$s_!HPgo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa89cf50b-2398-48a1-99f8-78e1a5f367e4_1024x632.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">The query and title added in for a py keyword to search Python documentation.</figcaption></figure></div><p>If you have or plan to add your own search, what will it be for? Comment at the bottom. I&#8217;d love to hear about&nbsp;it!</p><p><em>Web Bookmarks:</em> Similar to Web Search, Alfred can search for and open your bookmarks. Even better than that, it can open them in the browser in which the bookmark exists. If you deal with terrible intranet sites that should have been purged a decade ago, this is amazing. A quick search for (or if you have it set, a keyword followed by) &#254;e olde SVN opens an instance of Chrome when one is warranted. Unfortunately, the bookmark search only works in Safari and Chrome. You can have pages open using Firefox, but we&#8217;ll get into that below. (Is the suspense killing you&nbsp;yet?)</p><p><em>The Rest:</em> Calculator, Dictionary and Contacts are all improved over Spotlight. Alfred also includes actions for controlling iTunes, the entire macOS system and even the ability to run terminal (Terminal.app, iTerm <em>or</em> Hyper, theoretically more) commands directly, opening a new window with the result. Pretty neat, eh? Let&#8217;s get to the cool part though: Workflows.</p><p>If you have used Alfred before, what was your favourite feature? Was it one of the ones I listed or something I may have missed? Comment at the bottom. I want to hear from&nbsp;you!</p><h4>&#127959; Workflows</h4><p>Everything up to this point has been pretty neat. Workflows, though, take this app from nice-to-have to productivity-enhancing-drug. Workflows, as the name implies, are a way of performing one or more actions as easily as possible.</p><p>There are five parts: Triggers, Inputs, Actions, Utilities and Outputs. Triggers and Inputs start a workflow before handing off to Actions or Utilities (which may also trigger other Actions or Utilities), finally ending in an optional&nbsp;Output.</p><p>It seems simple enough. So why all of the fuss? All five of these parts offer a lot of different options.</p><p>&#128678; <em>Triggers</em> can be hotkeys, other Alfred features, or an external trigger (which generally means using AppleScript. Expect more on that in another article!). Think hitting Command + Alt + V or running a Bash command. These don&#8217;t even need to be <em>you</em> running the trigger, either. You can use tools like fswatch to run it whenever a file is&nbsp;updated.</p><p>&#9981;&#65039; <em>Inputs</em> are keyword-based actions that may have a query. Use these when you&#8217;re trying to use Alfred similar to Spotlight. &#8220;Keyword&#8221; works for simple actions like typing in keyword [query...]. For example, I have one set up so git jakew/dotfiles opens github.com/jakew/dotfiles, which makes getting to the project on Github super&nbsp;easy.</p><p>Another significant option for Inputs is a Script Filter. This one allows you to run a script and return the results directly in the Alfred window. It can run Python, PHP, Ruby, Perl, AppleScript or even just a Bash function. Returning JSON or XML in the proper format allows Alfred to show a custom list of results. For example, I have a Python wrapper that returns all of the tickets I own in my organization&#8217;s issue tracker. By typing issues, the list is populated and selecting an option opens the issue in my browser. (Unfortunately, my issue workflow uses proprietary software so I can&#8217;t release it. &#128555; Just know that it would have blown your&nbsp;mind.)</p><p>&#127939;&#8205;&#9792;&#65039; <em>Actions</em> are generally the <em>doing</em> part of the workflow. For example, they might open a specific app, file or URL, or run a system command. An Action can also run an AppleScript script for automation purposes. You can combine it with applications that use x-callback-urls as well (which is itself a topic for another article.)</p><p>&#129520; <em>Utilities</em> are the logic of the workflow. If query is this, then do that. Split arguments. Convert X to Y. Stuff like that. One extra utility available is &#8220;Debug,&#8221; which shows you the current values in your workflow&nbsp;objects.</p><p>&#128250; Lastly, <em>Outputs</em> are how you get the content or notification out of the workflow. It can be as simple as a macOS Notification or sound, or it can itself trigger a key combination. Outputs may also write text where your cursor is currently waiting, or put its result in your clipboard, ready for you to paste. To get even crazier: an output may also call an &#8220;External Trigger&#8221;! Remember when we mentioned those above? Yea, you can have workflows calling workflows. &#128561;</p><h4>&#10084;&#65039; Sharing is Caring; Sharing Automation is Doubly&nbsp;So.</h4><p>&#8220;Okay, you&#8217;ve convinced me,&#8221; you might be thinking, &#8220;but do I want to sit down and make all of these workflows?&#8221; The simple answer is: you don&#8217;t need to. A large community of people are already making a lot of them and are eager to share! You can join in on the <a href="https://alfredforum.com/">Alfred Forum</a> and even share the workflows you&#8217;ve&nbsp;made.</p><p>You can also get workflows from the <a href="https://www.alfredapp.com/blog/">Alfred Blog</a> or even in future articles on Effective Dev. Here is an example of one I&#8217;ve already&nbsp;made:</p><ul><li><p><em>Paste as Code Block</em>: When &#8220;pasted,&#8221; the contents of your clipboard paste with three grave-accents (```) surrounding them to create a code block. Pasting like this is helpful in Markdown on Github/Gitlab, and in&nbsp;Slack.</p></li></ul><p>If this article has convinced you to get Alfred or if you already have it, and you have made some workflows of your own that you&#8217;d like to share, I&#8217;d love to see them in the comments&nbsp;below.</p><h4>&#127937; Conclusion</h4><p>Alfred has been amazing for increasing my productivity. As long as I don&#8217;t spend my entire day making workflows instead of doing work. Alfred can get many things done, so you don&#8217;t have to. Its community is vibrant and offers a ton of resources that you should check out. Of course, your workflows are your own, so dig in and give it a&nbsp;try.</p>]]></content:encoded></item><item><title><![CDATA[How to Write Friends and Influence Readers]]></title><description><![CDATA[Using the famous self-help book as a tool to write realistic relationships and persuasion.]]></description><link>https://www.jakew.ca/p/how-to-write-friends-and-influence-readers-6f966dbe84ba</link><guid isPermaLink="false">https://www.jakew.ca/p/how-to-write-friends-and-influence-readers-6f966dbe84ba</guid><dc:creator><![CDATA[Jake Winters]]></dc:creator><pubDate>Thu, 28 Mar 2019 20:12:40 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/496f7d68-8700-4633-94f9-f1b42fdd9b6b_1024x655.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vBSo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ca62d65-d6d9-4cb0-84da-49958f7076f0_1024x655.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vBSo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ca62d65-d6d9-4cb0-84da-49958f7076f0_1024x655.png 424w, https://substackcdn.com/image/fetch/$s_!vBSo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ca62d65-d6d9-4cb0-84da-49958f7076f0_1024x655.png 848w, https://substackcdn.com/image/fetch/$s_!vBSo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ca62d65-d6d9-4cb0-84da-49958f7076f0_1024x655.png 1272w, https://substackcdn.com/image/fetch/$s_!vBSo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ca62d65-d6d9-4cb0-84da-49958f7076f0_1024x655.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vBSo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ca62d65-d6d9-4cb0-84da-49958f7076f0_1024x655.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3ca62d65-d6d9-4cb0-84da-49958f7076f0_1024x655.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!vBSo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ca62d65-d6d9-4cb0-84da-49958f7076f0_1024x655.png 424w, https://substackcdn.com/image/fetch/$s_!vBSo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ca62d65-d6d9-4cb0-84da-49958f7076f0_1024x655.png 848w, https://substackcdn.com/image/fetch/$s_!vBSo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ca62d65-d6d9-4cb0-84da-49958f7076f0_1024x655.png 1272w, https://substackcdn.com/image/fetch/$s_!vBSo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ca62d65-d6d9-4cb0-84da-49958f7076f0_1024x655.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/photos/XVoyX7l9ocY?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Jack Anstey</a> on&nbsp;<a href="https://unsplash.com/search/photos/train?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><h4>Using the famous self-help book as a tool to write realistic relationships and persuasion.</h4><p>Recently, I decided to read <em>How to</em> <em>Win Friends and Influence People</em> by Dale Carnegie. I did this, not out of interest in winning friends or influencing people but specifically because Charles Manson is reported to have read this book and used what he learned to influence people to kill for him while he was in prison. Although I didn&#8217;t find the content exactly ground breaking, it was nice to see a set of principles.</p><p>The thought occurred to me that the principles in this book are quite universal. You can use the same principles to tell who your friends are and who is just using you. You can also consider this a self-help book as these same principles can be used to tell if you are your own friend, or how to be a better friend to yourself.</p><p>The same train of thought also led me to this conclusion: As a writer, you can use the principles in this book to create realistic interactions between characters, or even show how the characters see themselves.</p><p>I&#8217;m not going to list the principles as I believe the book is worth a read. The book I will use as an example: <em>Harry Potter and the Philosopher&#8217;s Stone</em> by J. K. Rowling. As it&#8217;s one of the best selling books, I&#8217;m assuming many people reading this have read it. Just in case, I&#8217;ll try to avoid spoilers.</p><h4>Become Genuinely Interested in Other&nbsp;People</h4><p>I&#8217;ve found this one is great when you meet new people. Ask questions, but be genuine. I&#8217;ve personally used this one for years at dinners that involve sitting with random people. The clich&#233; question&#8212;What do you do?&#8212;is the staple. I&#8217;ve since moved on to my two favourites: &#8220;What are you passionate about?&#8221; and &#8220;What brings you joy?&#8221;. These are very direct and may not be suitable for a&nbsp;book.</p><p>From the Harry Potter perspective, Harry Potter and Ron Weasley seem exceptionally interested in each other: Harry has never met a wizard before his eleventh birthday, never even knew that world existed, and now he&#8217;s on a train to a wizard school for a year. Ron on the other hand grew up entirely in the wizard world and has heard much about Potter but still finds himself inclined to ask about things such as Harry&#8217;s scar and what Muggles are&nbsp;like.</p><p>Inversely, when Draco Malfoy first meets Harry, the questions he asks are rhetorical or satirical. He has no genuine interest in Harry or Ron and in fact, claims to already know Ron from what his father has told him about the Weasleys.</p><p>It&#8217;s no surprise that Albus Dumbledore exemplifies these principles. When he first meets Harry for a one on one conversation, he quickly puts Harry at ease with a simple smile. One of the first words he says to Harry is, in fact, Dale Carnegie&#8217;s &#8220;sweetest and most important word&#8221;: Harry&#8217;s&nbsp;name.</p><p>The inverse is true as well. Severus Snape for example, never seems to smile around Harry. Coincidentally, in their first interaction, he repeatedly calls Harry &#8220;Potter&#8221; to avoid his first name. J. K. Rowling uses this in the narration as well. You might have noticed that Draco Malfoy is only referred to as &#8220;Draco&#8221; once, by Rubeus Hagrid. Throughout the book, he is either &#8220;Malfoy&#8221; or &#8220;Draco Malfoy&#8221;. TK Explain&nbsp;why</p><p>Then of course there is the entire <em>He-who-must-not-be-named</em> aspect. No one except Dumbledore and Harry seem to use the name Voldemort. The name itself has a special ability to make people quiver and cringe, and so it is redacted from everyday&nbsp;speech.</p><h4>How to Win People&nbsp;Over</h4><p>Dumbledore is arguably one of the most influential people in the <em>Philosopher&#8217;s Stone</em>, and an analysis of his interactions with Harry reveals many of Carnegie&#8217;s principles in action. The first one on one conversation between Harry and Dumbledore occurs when Dumbledore catches Harry out of bed after curfew. While Professor McGonagal or Argus Filch would likely have admonished Harry, Dumbledore, recognizing that Harry knows full well he has done something wrong, sees no point in chastising him.</p><p>Dumbledore begins with a friendly smile. He is sympathetic, claiming that &#8220;hundreds&#8221; of people before him were just as curious. Dumbledore uses questions to lead Harry, asking him in a gentle and sympathetic way. He proceeds to <em>dramatize </em>in the conversation and appeal to nobler motives. He implies that Harry has learned enough by claiming he is prepared, meaning Harry won&#8217;t need to investigate further. The famous quote &#8220;It does not do to dwell on dreams and forget to live&#8221; is used here. It worked. &#8220;Dumbledore had convinced Harry[&#8230;]&#8221;.</p><p>One of my favourite examples is actually a counter-example. Hermione Granger, in her first real conversation with Harry and Ron, starts by trying to persuade them to not go out wandering the school at night. She fails from the start: Creeping up on them with an &#8220;I can&#8217;t believe you&#8217;re going to do this&#8221; message. She asks no questions that are not satirical or rhetorical. She doesn&#8217;t allow Harry or Ron to talk, and never attempts to see things from their perspective. She does, however, try to appeal to nobler causes, but this falls flat when she states that she cares only about winning the House Cup from Slytherin.</p><p>Even Draco Malfoy was more effective at influencing when he simply challenges Harry to a duel. Challenges are another way of influencing people according to Carnagie.</p><h4>Conclusion</h4><p>As someone who is usually quite oblivious to subtle social queues, I found the book <em>How to Win Friends and Influence People</em> fascinating and wondered whether Carnegie&#8217;s principles could be used to create compelling, realistic character interactions in my own writing. An analysis of the character encounters in <em>Harry Potter and the Philosopher&#8217;s Stone</em> through the lens of those principles suggests that this could be the&nbsp;case.</p>]]></content:encoded></item><item><title><![CDATA[How to Streamline your iPhone for Productivity over Distraction]]></title><description><![CDATA[I recently discovered a love of fountain pens.]]></description><link>https://www.jakew.ca/p/how-to-streamline-your-iphone-for-productivity-over-distraction-6cbc281d9e41</link><guid isPermaLink="false">https://www.jakew.ca/p/how-to-streamline-your-iphone-for-productivity-over-distraction-6cbc281d9e41</guid><dc:creator><![CDATA[Jake Winters]]></dc:creator><pubDate>Wed, 20 Mar 2019 16:26:49 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/dd3b7e9d-da50-4af7-b4f1-976e8936a072_1024x576.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!X6kl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b5b73b-5a97-4b8b-b5c0-739bec9ba9ac_1024x576.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X6kl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b5b73b-5a97-4b8b-b5c0-739bec9ba9ac_1024x576.jpeg 424w, https://substackcdn.com/image/fetch/$s_!X6kl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b5b73b-5a97-4b8b-b5c0-739bec9ba9ac_1024x576.jpeg 848w, https://substackcdn.com/image/fetch/$s_!X6kl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b5b73b-5a97-4b8b-b5c0-739bec9ba9ac_1024x576.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!X6kl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b5b73b-5a97-4b8b-b5c0-739bec9ba9ac_1024x576.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X6kl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b5b73b-5a97-4b8b-b5c0-739bec9ba9ac_1024x576.jpeg" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/34b5b73b-5a97-4b8b-b5c0-739bec9ba9ac_1024x576.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!X6kl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b5b73b-5a97-4b8b-b5c0-739bec9ba9ac_1024x576.jpeg 424w, https://substackcdn.com/image/fetch/$s_!X6kl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b5b73b-5a97-4b8b-b5c0-739bec9ba9ac_1024x576.jpeg 848w, https://substackcdn.com/image/fetch/$s_!X6kl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b5b73b-5a97-4b8b-b5c0-739bec9ba9ac_1024x576.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!X6kl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34b5b73b-5a97-4b8b-b5c0-739bec9ba9ac_1024x576.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/photos/n31x0hhnzOs?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Yura Fresh</a> on&nbsp;<a href="https://unsplash.com/search/photos/ios?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>I recently discovered a love of fountain pens. Soon after that I started a <a href="https://bulletjournal.com">Bullet Journal</a>. Bullet Journaling is using a fairly empty notebook and customizing the layout to fit your needs, while being flexible with the design. I loved Bullet Journaling as an idea but hated it as a thing. A Bullet Journal misses a few features that I really need to streamline my life: the ability to sync with my wife, an easy way to search for content, and a way for it to reach out to&nbsp;me.</p><p>My wife and I have busy lives. We both have careers and try to spend as much time as we can with our daughter. Having to do my daily review of the journal was difficult. I&#8217;d spend more time organizing than <em>doing </em>and I now had to haul around a book and pen. Finding a place to write was annoying. Copying from texts or emails into the book was frustrating.</p><p>I got to thinking, what do I love about the Bullet Journal and how can I apply it to existing&nbsp;systems?</p><p>The Bullet Journal&#8217;s claim to fame is that it is an analog solution. Why is that beneficial? Because we want fewer distractions so we can focus on work. The Bullet Journal isn&#8217;t going to tell me about the new season of that Netflix show I want to watch. It&#8217;s not going to tell me that someone liked a photo of that thing I went to the other night. It&#8217;s also not going to tell me that I&#8217;ve been too busy concentrating on work and I&#8217;m going to miss that important meeting. It&#8217;s not going to tell me to pick up eggs on my way home because my wife just used the last of them on some peanut butter&nbsp;cookies.</p><p>So I&#8217;ve now got my distraction free Bullet Journal and I&#8217;m ready to review it. Then I get a text from my long time friend saying he found a game he thought was great so I click the link he sent and I end up on Wikipedia looking into other games that that team made and where they left to go work afterward and before I know it I&#8217;m on the download page for Terra Battle and wondering how I made it this&nbsp;far.</p><p>For me at least, I can remove the organization from the distraction but the distraction still exists. Instead, I&#8217;ve started to focus on understanding how my brain works to remove distractions, and use those same ideas to make my distractions work <em>for</em>&nbsp;me.</p><h3>Eliminate Distractions</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Sdzz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb303af41-d208-486c-a2b5-1e1eabb43ec5_1024x612.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Sdzz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb303af41-d208-486c-a2b5-1e1eabb43ec5_1024x612.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Sdzz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb303af41-d208-486c-a2b5-1e1eabb43ec5_1024x612.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Sdzz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb303af41-d208-486c-a2b5-1e1eabb43ec5_1024x612.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Sdzz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb303af41-d208-486c-a2b5-1e1eabb43ec5_1024x612.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Sdzz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb303af41-d208-486c-a2b5-1e1eabb43ec5_1024x612.jpeg" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b303af41-d208-486c-a2b5-1e1eabb43ec5_1024x612.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Sdzz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb303af41-d208-486c-a2b5-1e1eabb43ec5_1024x612.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Sdzz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb303af41-d208-486c-a2b5-1e1eabb43ec5_1024x612.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Sdzz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb303af41-d208-486c-a2b5-1e1eabb43ec5_1024x612.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Sdzz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb303af41-d208-486c-a2b5-1e1eabb43ec5_1024x612.jpeg 1456w" sizes="100vw"></picture><div></div></div></a><figcaption class="image-caption">Someone liked that photo that you commented on while you were intoxicated six years&nbsp;ago.</figcaption></figure></div><p>The first step is to eliminate unwanted distractions. Push notifications are a great example. There are two parts to the notification: the banner or alert, and the badge icon (the red dot that apears on the app icon). These work well for different things. I turn off the banners for almost everything except Facebook Messager and Messages. This doesn&#8217;t mean I receive them (see the <em>Do Not Disturb</em> section below). To modify the notification settings for an app, simply open the <strong>Settings</strong> app, select the App to update and then either toggle off the &#8220;Allow Notifications&#8221; switch or customize the other settings.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H6cO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8702eb2-775e-443b-83fd-46ab81c0d4df_601x341.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H6cO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8702eb2-775e-443b-83fd-46ab81c0d4df_601x341.jpeg 424w, https://substackcdn.com/image/fetch/$s_!H6cO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8702eb2-775e-443b-83fd-46ab81c0d4df_601x341.jpeg 848w, https://substackcdn.com/image/fetch/$s_!H6cO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8702eb2-775e-443b-83fd-46ab81c0d4df_601x341.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!H6cO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8702eb2-775e-443b-83fd-46ab81c0d4df_601x341.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H6cO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8702eb2-775e-443b-83fd-46ab81c0d4df_601x341.jpeg" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c8702eb2-775e-443b-83fd-46ab81c0d4df_601x341.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!H6cO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8702eb2-775e-443b-83fd-46ab81c0d4df_601x341.jpeg 424w, https://substackcdn.com/image/fetch/$s_!H6cO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8702eb2-775e-443b-83fd-46ab81c0d4df_601x341.jpeg 848w, https://substackcdn.com/image/fetch/$s_!H6cO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8702eb2-775e-443b-83fd-46ab81c0d4df_601x341.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!H6cO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8702eb2-775e-443b-83fd-46ab81c0d4df_601x341.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Additionally, I have left the badge numbers on for any organization or work related apps. In my case this means Calendar, Mail, Things and Streaks. You can read more about each of these apps below. The reason these are left on is that I can see at a glance what I need to check up on. If you&#8217;re doing the Pomodoro technique for example, this is a quick checkup on your five minutes off. One exception is that <em>VIP emails</em> will send notifications.</p><h3>Do Not&nbsp;Disturb</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PiHC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F889418ee-69df-4d43-a7a4-891d24d6cc60_1024x878.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PiHC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F889418ee-69df-4d43-a7a4-891d24d6cc60_1024x878.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PiHC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F889418ee-69df-4d43-a7a4-891d24d6cc60_1024x878.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PiHC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F889418ee-69df-4d43-a7a4-891d24d6cc60_1024x878.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PiHC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F889418ee-69df-4d43-a7a4-891d24d6cc60_1024x878.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PiHC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F889418ee-69df-4d43-a7a4-891d24d6cc60_1024x878.jpeg" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/889418ee-69df-4d43-a7a4-891d24d6cc60_1024x878.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!PiHC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F889418ee-69df-4d43-a7a4-891d24d6cc60_1024x878.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PiHC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F889418ee-69df-4d43-a7a4-891d24d6cc60_1024x878.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PiHC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F889418ee-69df-4d43-a7a4-891d24d6cc60_1024x878.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PiHC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F889418ee-69df-4d43-a7a4-891d24d6cc60_1024x878.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Don&#8217;t call me, I&#8217;ll call&nbsp;you.</figcaption></figure></div><p>Another important way to avoid distractions is to enable Do Not Disturb. Keep in mind, if anyone calls you twice in three minutes, and that feature is enabled, they can still get through. You can also set specific hours. This is helpful when I&#8217;m working, but I have it set to be enabled from the time I go to bed, until after supper. This ensures I get an uninterrupted sleep, morning ritual, work day, and dinner with my family. This doesn&#8217;t mean that I don&#8217;t communicate with anyone; it means that if I do, it&#8217;s my choice to do&nbsp;so.</p><h3>Set up Control&nbsp;Centre</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!i7NH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4483eb6a-a9fd-4fab-9cba-2e052523eb71_1024x665.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!i7NH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4483eb6a-a9fd-4fab-9cba-2e052523eb71_1024x665.jpeg 424w, https://substackcdn.com/image/fetch/$s_!i7NH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4483eb6a-a9fd-4fab-9cba-2e052523eb71_1024x665.jpeg 848w, https://substackcdn.com/image/fetch/$s_!i7NH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4483eb6a-a9fd-4fab-9cba-2e052523eb71_1024x665.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!i7NH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4483eb6a-a9fd-4fab-9cba-2e052523eb71_1024x665.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!i7NH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4483eb6a-a9fd-4fab-9cba-2e052523eb71_1024x665.jpeg" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4483eb6a-a9fd-4fab-9cba-2e052523eb71_1024x665.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!i7NH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4483eb6a-a9fd-4fab-9cba-2e052523eb71_1024x665.jpeg 424w, https://substackcdn.com/image/fetch/$s_!i7NH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4483eb6a-a9fd-4fab-9cba-2e052523eb71_1024x665.jpeg 848w, https://substackcdn.com/image/fetch/$s_!i7NH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4483eb6a-a9fd-4fab-9cba-2e052523eb71_1024x665.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!i7NH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4483eb6a-a9fd-4fab-9cba-2e052523eb71_1024x665.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>If you have not discovered Control Centre yet, prepare to fall in love. Well, maybe not. It&#8217;s my quick stop. It can be used for access to time critical things such as HomeKit, AppleTV Remote, Camera, Calculator, and the various Clock app functions. If you use Notes, there&#8217;s a convenient &#8220;New Note&#8221; button. I have now hidden the apps these shortcuts reference so I do not have to see (and be distracted by) them on my home screen, but I can still access them easily if I make the conscious decision to do&nbsp;so.</p><h3>Organize Apps</h3><p>But why am I hiding apps? One thing I realized quickly is that even opening my phone for a specific reason can trigger a habit of opening apps I don&#8217;t need at that time. Then I&#8217;d spend a few minutes (if not more) before remembering what I was actually on my phone to&nbsp;do.</p><p>To avoid distraction, I put the most valuable apps on my home screen. This is a way I&#8217;ve learned to use habits to open apps I value like Books over apps I don&#8217;t, like Facebook. I keep a folder for other apps I have decided to keep, and order them alphabetically. I don&#8217;t put Reddit, Facebook, YouTube, or other time consuming apps on the first page of that folder. If I need a specific app, I open Spotlight and search for it intentionally.</p><h3>Restrictions on&nbsp;Apps</h3><p>Most of the time I spend on my phone is spent on apps. Some apps tend to be more addictive than others. Recently, I set up Screen Time, which can be accessed in the <strong>Settings</strong> app. After a week I was shown that I was spending hours on Apollo (my preferred Reddit app), and almost as much time on Facebook.</p><p>Part of Screen Time is a handy feature to restrict how much time can be spent on specific apps. I have my Reddit app limited to 30 minutes, and have allocated a further 30 minutes to all social media apps combined. There&#8217;s still one drawback: most apps have websites that are somewhat mobile friendly.</p><p>While I was in the restrictions section, I turned on the Content Restrictions. One drawback (that might apply to you) is that it restricts adult websites. I added all compulsive websites I visit, including: Reddit, Facebook, and even a few news websites I find myself wasting time&nbsp;on.</p><p>Once set up, I had my wife create a code to lock it down. I had her write it down and put it in an envelope. I keep the envelope somewhere safe, just in case. If I don&#8217;t do this, I&#8217;ll soon be in the habit of entering the code to bypass the restriction.</p><h3>How I Use My&nbsp;Apps</h3><p>Annie Dillard once said &#8220;How we spend our days is, of course, how we spend our lives.&#8221; A quick substitution will land you at &#8220;How you use your apps, is how you use your phone.&#8221; Now that we&#8217;ve limited the phone to what we want&#8202;&#8212;&#8202;a distraction free tool that emphasizes what we value&#8202;&#8212;&#8202;it&#8217;s important to consider the individual apps themselves.</p><p>The apps mentioned are what I use. Your results may vary, but I definitely recommend taking the time to think about <em>why</em> you have downloaded or are using each app and how it reflects your values. A quick example: I value knowledge. This is why Books, Medium and Safari Books are at the front of my list. It is better for me to habitually open those than apps like Facebook or&nbsp;Reddit.</p><p>I value organization. This is why my dock has Calendar, Streaks, and Things for quick access. These apps tell me what&#8217;s going on today or&nbsp;soon.</p><p>Calendar has my list of events which is shared through a few separate Calendars with my wife. This helps us keep track of events between us. If I have an event come up, I immediately add it to my calendar and my wife can do the same. This ensures that my wife and I don&#8217;t double book each other. I also take advantage of the calendar for calendar blocking.</p><p>Things is by far the best app I&#8217;ve found for implementing Getting Things Done. The Inbox is great (see Shortcuts below), the deadline and reminders are helpful, but the real power for me comes from the repeating reminders. I get a notification every Tuesday morning to put the garbage out as I&#8217;m getting up. I get a notification and task on the last Sunday of the month to do a full tub clean of my washing machine. I get a notification and task in October to call and arrange my winter tire service. If you&#8217;ve ever waited until it snows, you know procrastinating on winter tires is dangerous. The best part is that I don&#8217;t even need to think about it, meaning I can spend my time actually getting down to&nbsp;work.</p><p>One thing I found popular in the Bullet Journal community is habit trackers. I found an app called Streaks which allows me to track habits but also sends notifications when I should be doing specific&nbsp;tasks.</p><p>I still have my Email, Messages and Facebook Messenger on my phone. But even inside of those apps, I have further refined. If I haven&#8217;t read or gotten any value from the last three newsletters from a subscription, I unsubscribe. I&#8217;ve been pulled into group chats for different things and events, all of which are&nbsp;&#8220;muted&#8221;.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1Cw1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4114fa-d3ab-4609-bcbc-dc2dc1274b0b_312x390.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1Cw1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4114fa-d3ab-4609-bcbc-dc2dc1274b0b_312x390.png 424w, https://substackcdn.com/image/fetch/$s_!1Cw1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4114fa-d3ab-4609-bcbc-dc2dc1274b0b_312x390.png 848w, https://substackcdn.com/image/fetch/$s_!1Cw1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4114fa-d3ab-4609-bcbc-dc2dc1274b0b_312x390.png 1272w, https://substackcdn.com/image/fetch/$s_!1Cw1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4114fa-d3ab-4609-bcbc-dc2dc1274b0b_312x390.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1Cw1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4114fa-d3ab-4609-bcbc-dc2dc1274b0b_312x390.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f4114fa-d3ab-4609-bcbc-dc2dc1274b0b_312x390.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!1Cw1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4114fa-d3ab-4609-bcbc-dc2dc1274b0b_312x390.png 424w, https://substackcdn.com/image/fetch/$s_!1Cw1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4114fa-d3ab-4609-bcbc-dc2dc1274b0b_312x390.png 848w, https://substackcdn.com/image/fetch/$s_!1Cw1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4114fa-d3ab-4609-bcbc-dc2dc1274b0b_312x390.png 1272w, https://substackcdn.com/image/fetch/$s_!1Cw1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f4114fa-d3ab-4609-bcbc-dc2dc1274b0b_312x390.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>The most important app for me is the Clock app. I have specific alarms set for specific events so I don&#8217;t need to worry about time while doing deep work. I use the Apple Watch app for these so I don&#8217;t disturb others. Some examples:</p><ul><li><p>My alarm goes off at 500AM. I get out of bed. Okay, this one is pretty obvious. I go work&nbsp;out.</p></li><li><p>My alarm rings at 5:30AM. Time to&nbsp;write.</p></li><li><p>My alarm rings at 7:00AM. Time to shower and get&nbsp;ready.</p></li><li><p>It rings again at 7:40AM, when I need to leave to beat the&nbsp;traffic.</p></li><li><p>My daily scrum is at 9:30AM. I have an alarm for weekdays at 9:27AM. Enough time to grab a coffee and get to the&nbsp;meeting.</p></li><li><p>Then it rings again at 4:00PM. time to go&nbsp;home.</p></li><li><p>Then again at 8:00PM when it&#8217;s time to get ready for&nbsp;bed.</p></li></ul><p>This seems like a lot of alarms, but they only happen on days I need them and this set up prevents me from having to spend half my time watching the&nbsp;clock.</p><h3>Today Widgets and Siri Shortcuts</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!B2xX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39a0a066-b0b1-49b6-8c3a-559aeeaabd30_586x1272.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!B2xX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39a0a066-b0b1-49b6-8c3a-559aeeaabd30_586x1272.png 424w, https://substackcdn.com/image/fetch/$s_!B2xX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39a0a066-b0b1-49b6-8c3a-559aeeaabd30_586x1272.png 848w, https://substackcdn.com/image/fetch/$s_!B2xX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39a0a066-b0b1-49b6-8c3a-559aeeaabd30_586x1272.png 1272w, https://substackcdn.com/image/fetch/$s_!B2xX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39a0a066-b0b1-49b6-8c3a-559aeeaabd30_586x1272.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!B2xX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39a0a066-b0b1-49b6-8c3a-559aeeaabd30_586x1272.png" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/39a0a066-b0b1-49b6-8c3a-559aeeaabd30_586x1272.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!B2xX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39a0a066-b0b1-49b6-8c3a-559aeeaabd30_586x1272.png 424w, https://substackcdn.com/image/fetch/$s_!B2xX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39a0a066-b0b1-49b6-8c3a-559aeeaabd30_586x1272.png 848w, https://substackcdn.com/image/fetch/$s_!B2xX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39a0a066-b0b1-49b6-8c3a-559aeeaabd30_586x1272.png 1272w, https://substackcdn.com/image/fetch/$s_!B2xX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39a0a066-b0b1-49b6-8c3a-559aeeaabd30_586x1272.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>I highly recommend setting up your Today screen. I use it for a few different things, such as hiding even more apps (my Podcast and Music widgets are my go to spot when I start the car). The Today screen is also helpful for an at-a-glance view of what to do. It lists my next calendar event (Calendar), my next task to finish today (Things), how much I&#8217;ve walked (Pedometer&#8202;&#8212;&#8202;being active is another value), what the weather is like outside, and a battery status for both me (via AutoSleep) and my&nbsp;devices.</p><p>Also on my Today screen, I list a few Siri Shortcuts. These are my secret weapon. Specifically: quick &#8220;Add to Inbox&#8221; and &#8220;Clip Board to Inbox&#8221; buttons for Things, an &#8220;Add Appointment&#8221; button to automatially add an appointment in the calendar I share with my wife, and a &#8220;New Entry&#8221; button in the Day One journal app for entering daily gratitudes. This means when I do need to add things, I can do it quickly and get back to work. Then, later on when I have free time, I can go and clean up Things, Day One,&nbsp;etc.</p><p>A tradition in my family is that I message my mother how many days until we get to see each other. The countdown is currently at 4, down from 120. I have a Shortcut that calculates this and messages it to her. It is really handy and a great way to start a conversation.</p><p>In summary, watch how you use your phone or it will end up using you. Finding alternatives to your phone, like a Bullet Journal, is a simple way to avoid existing problems but it may not help much in the long run. Watch how you habitually use your phone and change it so you use it to habitually align to your&nbsp;values.</p>]]></content:encoded></item><item><title><![CDATA[Did you seriously buy another keyboard? or; The Planck]]></title><description><![CDATA[As I mentioned in my previous story: Let&#8217;s Split&#8230; A Love Story in Two Parts, I had pre-ordered the Planck Rev 6 on Massdrop. This fell through, and I was delighted to hear that OLKB.com would be selling the Planck Rev 6 directly.]]></description><link>https://www.jakew.ca/p/did-you-seriously-buy-another-keyboard-or-the-planck-c7d5887bd9dd</link><guid isPermaLink="false">https://www.jakew.ca/p/did-you-seriously-buy-another-keyboard-or-the-planck-c7d5887bd9dd</guid><dc:creator><![CDATA[Jake Winters]]></dc:creator><pubDate>Sat, 27 Oct 2018 15:35:42 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ca175d22-0d0f-40dd-8474-c6437adaf75d_668x236.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As I mentioned in my previous story: Let&#8217;s Split&#8230; A Love Story in Two Parts, I had pre-ordered the Planck Rev 6 on <a href="https://massdrop.com">Massdrop</a>. This fell through, and I was delighted to hear that <a href="https://olkb.com/planck/pcb">OLKB.com would be selling the Planck Rev 6</a> directly. This meant I was free to find my own switches, my own case, my own keycaps,&nbsp;etc.</p><h3>The Conception</h3><p>I had decided pretty quickly that I wanted a purple case. Unfortunatly, the options for purple Planck cases were limited. (They just added a Purple Preonic on Massdrop a month after I found one for the Planck.) I ended up ordering the <a href="https://woodkeys.click/product/apx/">APX case from Woodkeys.click</a>. It was then stated to be shipping around the same time as the Planck Rev 6 PCB in early July. I also noted a <a href="https://zealpc.net/collections/group-buy-pre-orders/products/zealio">ZealPC group buy for Zealios</a> and ordered myself 50 of their 78g switches. For keycaps, I was humming and hawing and never actually settled. What would look good with my purple&nbsp;case?</p><h3>The Delays</h3><p>Mid July came and went. Jack from OLKB.com was able to keep us fairly up to date on Reddit with his weekly updates. Him and his &#8220;shop&#8221; ran into several difficulties that pushed them back by a few months. As frustrating as this was, Jack was very helpful. I often waited up just to hear from him on Monday&nbsp;nights.</p><p>Woodkeys, however, only sent an update out at the beginning of August, claiming they would start production around August 20th. Okay. Fair enough, delays happen. August 20th came around and I messaged them for an update. The response was that they hoped to have news in the next&nbsp;week.</p><p>Delays happen, I get that. The difference here are how those delays are being handled. The last update I got was on September 28th after messaging them on Discord. Now it&#8217;s moved to end of October/early November.</p><h3>The Plan</h3><p>While I waited for my keyboard, I had started doing a lot of remapping on my KBD75. Most of the modifications had been around reducing hand movement or increasing functionality. As the Planck was to have so few keys, increasing the functionality per key is quite important. As the theory of not having to move fingers far was part of the Planck&#8217;s genetics, I decided to focus on this as well.&nbsp;Behold:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!th79!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ddde69d-b06e-4197-b4f7-80d46d0d650f_668x236.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!th79!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ddde69d-b06e-4197-b4f7-80d46d0d650f_668x236.jpeg 424w, https://substackcdn.com/image/fetch/$s_!th79!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ddde69d-b06e-4197-b4f7-80d46d0d650f_668x236.jpeg 848w, https://substackcdn.com/image/fetch/$s_!th79!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ddde69d-b06e-4197-b4f7-80d46d0d650f_668x236.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!th79!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ddde69d-b06e-4197-b4f7-80d46d0d650f_668x236.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!th79!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ddde69d-b06e-4197-b4f7-80d46d0d650f_668x236.jpeg" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ddde69d-b06e-4197-b4f7-80d46d0d650f_668x236.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!th79!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ddde69d-b06e-4197-b4f7-80d46d0d650f_668x236.jpeg 424w, https://substackcdn.com/image/fetch/$s_!th79!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ddde69d-b06e-4197-b4f7-80d46d0d650f_668x236.jpeg 848w, https://substackcdn.com/image/fetch/$s_!th79!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ddde69d-b06e-4197-b4f7-80d46d0d650f_668x236.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!th79!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ddde69d-b06e-4197-b4f7-80d46d0d650f_668x236.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Since this, I&#8217;ve made a few minor updates like adding | and \ keys.&nbsp;Whoop!</figcaption></figure></div><p>As is common with Plancks, I am using the QWERTY row as numbers and symbols on the raise and lower layers respectively. This works out wonderfully. Several common brackets used in programming have found their home&#8212;no pun intended&#8212;on the home row, albeit on the lower&nbsp;layer.</p><p>Where the arrow keys were, I now have media controls. I moved the arrow keys to the function layer where they are located the same as VIM&#8217;s HJKL. I also added in next and previous tab buttons here, and F1 to F10 where 1 to 0 are, but continuing with F11 and wrapping around with&nbsp;F12.</p><p>The four main thumb buttons: Lower, Function, Shift and Raise are capable of actions when tapped and activate layers (or shift) when held. In this case, they are delete, space, return and forward delete. This makes it quite easy to correct mistakes or submit commands without doing too much extra work. They are hard to get used to,&nbsp;though.</p><p>Additionally, the Caps Lock button and the Control button are both Press for Esc and hold for Control. The default return key has been converted into Press for Enter, hold for&nbsp;Shift.</p><h3>The Solution</h3><p>Around the start of September, Massdrop had a sale of B-sides for Planck Rev5 cases. They fit the Rev 6 and were shipping at the beginning of October, so I decided to get a black one while I wait for my APX case. It required a low profile top plate which was not available most places. I found a <a href="https://keycapsss.com/keyboard-parts/4/planck-compatible-carbon-top-plate-for-lo-pro-case-ortholinear-keyboard?c=6">Carbon Fibre one on KeyCapsss</a> that actually matched my wedding&nbsp;band.</p><p>Then, in early October, <a href="https://olkb.com/parts/big-bang-keyset">OLKB.com added a set of keycaps to their site: The Big Bang</a>, an MDA profile set. They were fairly inexpensive and I had a shipment on the way already. I decided to add them to my existing&nbsp;order.</p><h3>The Delivery</h3><p>The Zealios actually came in back in June. They were pretty quick. The Top Plate was the next piece to arrive, landing in early October, followed swiftly by the Massdrop case and finally, the Planck Rev 6 PCB and the Big Bang keycap set. Bad knolling photo for emphasis:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RRYp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c8b3e1-0be6-4cac-9a5d-6747850dee1a_1024x2369.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RRYp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c8b3e1-0be6-4cac-9a5d-6747850dee1a_1024x2369.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RRYp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c8b3e1-0be6-4cac-9a5d-6747850dee1a_1024x2369.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RRYp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c8b3e1-0be6-4cac-9a5d-6747850dee1a_1024x2369.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RRYp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c8b3e1-0be6-4cac-9a5d-6747850dee1a_1024x2369.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RRYp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c8b3e1-0be6-4cac-9a5d-6747850dee1a_1024x2369.jpeg" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d6c8b3e1-0be6-4cac-9a5d-6747850dee1a_1024x2369.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!RRYp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c8b3e1-0be6-4cac-9a5d-6747850dee1a_1024x2369.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RRYp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c8b3e1-0be6-4cac-9a5d-6747850dee1a_1024x2369.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RRYp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c8b3e1-0be6-4cac-9a5d-6747850dee1a_1024x2369.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RRYp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c8b3e1-0be6-4cac-9a5d-6747850dee1a_1024x2369.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>As you might have guessed, this did not stay this way for long. I quickly assemebled the keyboard and started typing away. Overall, the assembly was fairly easy. The only real difficulty I faced was that the pins on the Zealios tended to bend when being put into the&nbsp;sockets.</p><h3>The Result</h3><p>I like it. The keymap is taking some time to get used to. Things I like: I really don&#8217;t ever have to move my hands. I didn&#8217;t realize how much I hate the DSA keycaps on my KBD75 until I started using MDA. I expected the ortholinear to take time getting used to but the DSA seemed to be the real downfall of my&nbsp;KBD75.</p><p>The things I don&#8217;t like: About 10 times writing this article, I made a new line instead of holding my thumb shift button. Additionally, my D key seems to miss every once in a while. I&#8217;m still waiting for the damn APX&nbsp;case.</p><h3>The Update</h3><p>Another thing I found I wasn&#8217;t fond of was the switches. I was in contact with a friend who had some BOX Navy switches that he claimed were too loud for in his office. I knew he liked my much quieter Zealios so I offered him a trade. Having hot swappable switches has paid off. I really like the feel of the BOX Navy switches although I think they might be too stiff. Time will&nbsp;tell!</p><h3>Being Productive</h3><p>If you&#8217;ve found this interesting<br>You may also want to check out my tips for <a href="https://effectivedev.com/keyboard-hacks/?utm_source=medium&amp;utm_medium=web&amp;utm_campaign=keyboard-hacks&amp;utm_term=planck">being productive with your keyboard.</a></p>]]></content:encoded></item></channel></rss>