<![CDATA[Ash Furrow's Blog]]>https://ashfurrow.comGatsbyJSSun, 02 Mar 2025 18:50:05 GMT<![CDATA[Tarmak]]>https://ashfurrow.com/blog/tarmak/https://ashfurrow.com/blog/tarmak/Sun, 02 Mar 2025 00:00:00 GMT<p>My <a href="/blog/keyboard-rabbit-hole/">keyboard rabbit hole</a> has inevitably brought me to the world of alternate keyboard layouts. While I briefly used Dvorak in university, I was using too many different computers to make it really stick for me.</p><p>I had on heard of <a href="https://colemak.com/" target="_blank" rel="nofollow noopener noreferrer">Colemak</a> from <a href="https://www.youtube.com/watch?v=7UXsD7nSfDY" target="_blank" rel="nofollow noopener noreferrer">Christian Selig’s keyboard video</a> less than a year ago. It sounded great – a much better design than Dvorak that used QWERTY as a base. A lot of the keys don’t actually change, and only two change which hand you use. I kept hearing how comfortable and fun it was to use Colemak, but I wasn’t too keen to give up a lifetime of QWERTY muscle memory while having to type at my job.</p><p>That changed when a coworker of mine made the switch to Colemak using <a href="https://dreymar.colemak.org/tarmak-steps.html" target="_blank" rel="nofollow noopener noreferrer">Tarmak</a>. Tarmak starts at QWERTY and makes thoughtful, small changes over time to gradually move toward full Colemak. Typing speed goes down, but not as dramatically as a cold-turkey switch.</p><p>Well. Alright fine. Let’s go.</p><p>It’s been a month and things are going really well.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/bbe5b0c99ba47deab6c489977e5434d8/a1a4b/speed.png" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:29.000000000000004%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA1ElEQVQY04VQ2VLDMBDzf8RpTOIcPtIEprRQKJm0//9NYlZhGSgPPGhs7aFdrfHNM+JwgatmlOWI3W7PV3HP/4OZ0orYv6PzL3+EBLbMv7jivk5jRhqEDN0Z1iY4N1PEWhHKqB+emC9sYp7vV48ISN2W22JGE60/ccspXdG3r+Q5fGAfV4TuDN8cyce4wNcHClTVxH8aLox3/rQJymSxPecbnHtkgaCpDxwW+jeMYSGXjTkorchhIdrmyLgMMHoHEdK7fFuzai2jKCK52pX6n6fQW38C9Z2tEzxqUwwAAAAASUVORK5CYII=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Graph of my typing speed" title="Graph of my typing speed" src="/static/bbe5b0c99ba47deab6c489977e5434d8/c1b63/speed.png" srcSet="/static/bbe5b0c99ba47deab6c489977e5434d8/5a46d/speed.png 300w,/static/bbe5b0c99ba47deab6c489977e5434d8/0a47e/speed.png 600w,/static/bbe5b0c99ba47deab6c489977e5434d8/c1b63/speed.png 1200w,/static/bbe5b0c99ba47deab6c489977e5434d8/d61c2/speed.png 1800w,/static/bbe5b0c99ba47deab6c489977e5434d8/a1a4b/speed.png 2054w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>Every time I’ve made a change to the layout, my typing speed has deceased to about the same level (unless you are my boss, in which case my typing speed was unchanged and I am as productive as ever). But with each change, it’s taken me longer to get to the point where I feel ready to make the next change. Throw in a week where I was travelling for work and couldn’t practice as much, and things are going slowly.</p><p>I am on the last step, which is where my coworker rushed things and regretted it. I benefit from his experience of rushing at the end, knowing that rushing would defeat the purpose of making small changes.</p><p>I’ve decided to take an extra week before moving on. I only make the layout changes on Friday so I can practice over the weekend, so I’ll look forward to making that final change in just five days!</p><p>One under-rated benefit of using Tarmak is that I’ve gotten to appreciate the thoughtfulness of Colemak on a deeper level. While I have been frustrated during this transitionary period, I can feel the fun and comfort of using Colemak that I had heard so much about.</p><p>The steps I’ve taken are <a href="https://configure.zsa.io/my_layout/view/bVg75" target="_blank" rel="nofollow noopener noreferrer">here</a> if you’re interested. I’m migrating to the Colemak-DH variant specifically, and would recommend it particularly if you’re using a columnar-staggered keyboard.</p><![CDATA[Personal Timeline]]>https://ashfurrow.com/blog/personal-timeline/https://ashfurrow.com/blog/personal-timeline/Tue, 18 Feb 2025 00:00:00 GMT<p>This week at work, I’m participating in a group event where we share personal timelines of ourselves, to get to know each other better. I thought I’d share my timeline in case anyone was interested.</p><div entries="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]"></div><![CDATA[Keyboard Rabbit Hole]]>https://ashfurrow.com/blog/keyboard-rabbit-hole/https://ashfurrow.com/blog/keyboard-rabbit-hole/Sun, 17 Nov 2024 00:00:00 GMT<p><em>Content warning: this post contains medical discussions.</em></p><p>Quickly after I began my career as a full-time software developer, I developed pain in my left wrist. At first, it was only occasional. But it became consistent. Then it started showing up in my right wrist.</p><p>I wish that I had done something about my wrist pain sooner. And I wish that I had sought professional help sooner, too. Don’t worry, though, because the story <a href="https://ashfurrow.com/blog/learning-to-walk/" target="_blank" rel="nofollow noopener noreferrer">has a happy ending</a>. It turns out that my posture was the root of my pain. Through exercise, stretching, and physiotherapy, I improved my posture and mostly relieved my pain.</p><p>Mostly.</p><p>Today, the pain is something I manage. It still flares up, but I now have the tools I need to deal with it. One of those tools has been ergonomics. I’ve tried wrist splints, better chairs, sit-stand desks, and… ergonomic keyboards.</p><p>With keyboards, people often ask about typing speed. And I simply do not care about speed. People online often ask if an ergonomic keyboard will help them type faster, and I doubt it. Maybe! But who cares. My goal is avoiding RSI injuries. For what it’s worth, I currently type at around 80wpm. That is fast enough for me.</p><p>The biggest takeaway from my experience is: <strong>you should not meet the keyboard, the keyboard should meet you.</strong> If you have to reach for the keyboard, move it closer to you. Everything in the blog post applies this principle in one way or another.</p><p>This blog post is about the rabbit hole that I’ve been falling down in spurts and starts for over a decade. Let’s start from the beginning.</p><h1 id="my-journey-so-far" style="position:relative"><a href="#my-journey-so-far" aria-label="my journey so far permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>My Journey So Far</h1><p>In 2015, I bought my first “split keyboard”, a <a href="https://kinesis-ergo.com/shop/freestyle2-mac/" target="_blank" rel="nofollow noopener noreferrer">Kinesis Freestyle 2</a> with the “VIP” tenting kit. This is a great keyboard and it remains my go-to recommendation for any programmer who wants a better keyboard. It’s basically a “ten key-less” keyboard, with an “inverted T” arrow cluster.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/67b9f9dad6859b7cdc470a664ebe75da/768c6/kinesis.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAEDBP/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAFSHEDSR//EABkQAAMBAQEAAAAAAAAAAAAAAAECAwASE//aAAgBAQABBQLtpb3c4zJJi3VIE5JOo//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABwQAAICAgMAAAAAAAAAAAAAAAARAQIDEiEicf/aAAgBAQAGPwJVvMHbKPiR7P0hC3P/xAAcEAEAAwACAwAAAAAAAAAAAAABABEhMUFxgdH/2gAIAQEAAT8hAVLms+TWIeSVQA9y+O0AXmFMoYnqf//aAAwDAQACAAMAAAAQBz//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/ED//xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAgBAgEBPxCq/8QAHRABAQACAQUAAAAAAAAAAAAAAREAIVExQWGBkf/aAAgBAQABPxCtkWJ187wlAEkKJ6MfyKiZdeMeKTrGE53ad3nCpC2bz7n/2Q==&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Kinesis Freestyle 2 at my desk at Artsy" title="Kinesis Freestyle 2 at my desk at Artsy" src="/static/67b9f9dad6859b7cdc470a664ebe75da/e5166/kinesis.jpg" srcSet="/static/67b9f9dad6859b7cdc470a664ebe75da/f93b5/kinesis.jpg 300w,/static/67b9f9dad6859b7cdc470a664ebe75da/b4294/kinesis.jpg 600w,/static/67b9f9dad6859b7cdc470a664ebe75da/e5166/kinesis.jpg 1200w,/static/67b9f9dad6859b7cdc470a664ebe75da/d9c39/kinesis.jpg 1800w,/static/67b9f9dad6859b7cdc470a664ebe75da/df51d/kinesis.jpg 2400w,/static/67b9f9dad6859b7cdc470a664ebe75da/768c6/kinesis.jpg 3264w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>The keyboard is split into two halves. It “tents”, which means the two halves are raised in the middle. Both of these are important for ergonomics because it gives you more degrees of control to “bring the keyboard to you.” It also has integrated palm rests, which some people prefer (I did at the time). It comes in both Mac and Windows variants, and they’ve added mechanical switch variants since then too (mine was a membrane keyboard). One downside is that the two halves are connected by a wire that you can’t change; the halves can only be 9 inches apart.</p><p>But those are small tradeoffs for what you get: an natural posture while typing. Split keyboard solve the most common ergonomic problems while typing:</p><ul><li><strong>Slouching.</strong> People tend to pull their shoulders into a rounded, forward position to try to meet the keyboard. A split keyboard like this lets you position the two halves so that your chest stays open.</li><li><strong>Ulnar deviation.</strong> To use both hands at a normal keyboard, you need to kind of bend your wrists out. A split keyboard lets your hands rest naturally while typing.</li><li><strong>Wrist pronation.</strong> To use a normal keyboard that sits flat on a desk, you need to kind of twist your forearms to flatten your hands. A tented keyboard lets your forearms rest naturally while typing.</li></ul><p>There are other issues, too, but these are the common issues. And a split keyboard can help with all of them.</p><p>A keyboard should meet you where you are; you should not meet your keyboard.</p><p><strong>Getting a split keyboard is the single best thing you can purchase to improve your ergonomics as a programmer.</strong> Ideally, you are stretching, exercising, and taking movement breaks at work. But if you want to make a change to your workspace <em>setup</em>, then getting a split keyboard is the first thing you need to purchase. Everything I discuss in this, from this point forward, offers diminishing returns.</p><p>But diminishing returns are still returns.</p><p>Back to my journey. At the beginning of the pandemic, I ordered an <a href="https://ergodox-ez.com/" target="_blank" rel="nofollow noopener noreferrer">ErgoDox EZ</a> from ZSA. The ErgoDox EZ is <em>also</em> a split keyboard that <em>also</em> supports tenting, but it has a few distinct features over the Kinesis Freestyle 2. It’s a mechanical keyboard with swappable keyswitches. The wire connecting the two halves is a standard TRRS audio cable and can be swapped out for any length of cable you need. The keyboard can be fully programmed, either with firmware code directly or ZSA’s fantastic configurator. The ErgoDox EZ also has “thumb clusters” so your thumbs can do more than just hit the spacebar.</p><p>But most striking is that it isn’t “row staggered” in the way most keyboards are. Instead, it is <em>column</em> staggered. In principle, this means more up-and-down finger movement and less side-to-side finger movement. Less movement is better (“bring the keyboard to you”).</p><p>I had been looking at it for a while and a coworker had one, so I pulled the trigger. This was my second mechanical keyboard, and I loved it.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/047ff5a4f974c606fb3967a02d1289aa/d2602/ergodox_cat.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAQBAwX/xAAVAQEBAAAAAAAAAAAAAAAAAAACAf/aAAwDAQACEAMQAAABVax7zXiBj//EABsQAAICAwEAAAAAAAAAAAAAAAERAgMABBIT/9oACAEBAAEFAqpky5dktg9NZ6l1ox//xAAWEQEBAQAAAAAAAAAAAAAAAAAAEiH/2gAIAQMBAT8BxT//xAAWEQEBAQAAAAAAAAAAAAAAAAAAEiH/2gAIAQIBAT8B1L//xAAbEAACAwADAAAAAAAAAAAAAAAAAQIRIRAiQf/aAAgBAQAGPwKKXhctHXGs7I//xAAbEAADAQADAQAAAAAAAAAAAAAAAREhMUFRYf/aAAgBAQABPyHjgPtL3wxDL0JnthRW/wCQe3Wn/9oADAMBAAIAAwAAABA37//EABYRAQEBAAAAAAAAAAAAAAAAAAEAMf/aAAgBAwEBPxAQZKHL/8QAGBEBAQADAAAAAAAAAAAAAAAAAQARMUH/2gAIAQIBAT8QRO4z7f/EABsQAQACAwEBAAAAAAAAAAAAAAEAESExYUGB/9oACAEBAAE/EHqAFF2Xsnj8BWAmtQAXGgpp7AdnRCsmYWP2Vx5qfU7U/9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="ErgoDox EZ with my cat in between the two halves, as is customary" title="ErgoDox EZ with my cat in between the two halves, as is customary" src="/static/047ff5a4f974c606fb3967a02d1289aa/e5166/ergodox_cat.jpg" srcSet="/static/047ff5a4f974c606fb3967a02d1289aa/f93b5/ergodox_cat.jpg 300w,/static/047ff5a4f974c606fb3967a02d1289aa/b4294/ergodox_cat.jpg 600w,/static/047ff5a4f974c606fb3967a02d1289aa/e5166/ergodox_cat.jpg 1200w,/static/047ff5a4f974c606fb3967a02d1289aa/d9c39/ergodox_cat.jpg 1800w,/static/047ff5a4f974c606fb3967a02d1289aa/df51d/ergodox_cat.jpg 2400w,/static/047ff5a4f974c606fb3967a02d1289aa/d2602/ergodox_cat.jpg 4032w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>The ErgoDox EZ taught me all my mistakes. All the lazy things I was doing, the fingers I was over-using and under-using. I had always been able to type without looking, but the ErgoDox was the first time I practiced touch typing with proper form. It took a few months of practice to totally get used to, but I got it at the beginning of the pandemic so I had some time to kill.</p><p>I used the ErgoDox EZ for over four years. I didn’t spend too much time customizing it. All the keys were blank, with no legends. Honestly, I didn’t use a lot of the keys at all. (<a href="https://people.zsa.io/ash-furrow/" target="_blank" rel="nofollow noopener noreferrer">I talk about my ErgoDox EZ setup in more detail in this interview.</a>) When I joined Float, I got a home-office stipend that I decided to use on <a href="https://drop.com/buy/drop-biip-mt3-extended-custom-keycap-set" target="_blank" rel="nofollow noopener noreferrer">new keycaps</a> for the ErgoDox EZ, which was the beginning of me further customizing my keyboard layout.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/a3421b607f359fb78b4c877545fea14f/d2602/ergodex_colours.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIDAQT/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAZZytmqTD//EABsQAAMAAgMAAAAAAAAAAAAAAAABAgMEERIT/9oACAEBAAEFAnqrveukOKRGWpPXLA65P//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABkQAQEBAQEBAAAAAAAAAAAAAAEAIREiMf/aAAgBAQAGPwJBy863wnh3tiW3/8QAGxABAAICAwAAAAAAAAAAAAAAAQARMUEhcZH/2gAIAQEAAT8hDZxtgAW7IrXswkEtnUylXliq+TP/2gAMAwEAAgADAAAAEGvv/8QAFhEAAwAAAAAAAAAAAAAAAAAAARAR/9oACAEDAQE/EDF//8QAFxEBAAMAAAAAAAAAAAAAAAAAAAERIf/aAAgBAgEBPxCLa//EABsQAQADAQEBAQAAAAAAAAAAAAEAESExoUGR/9oACAEBAAE/EFiNpcsfoB3vcmPK0SXLFd/D2bTJH1PWWmhcC32JaE61P//Z&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="ErogDox EZ with colourful keycaps" title="ErogDox EZ with colourful keycaps" src="/static/a3421b607f359fb78b4c877545fea14f/e5166/ergodex_colours.jpg" srcSet="/static/a3421b607f359fb78b4c877545fea14f/f93b5/ergodex_colours.jpg 300w,/static/a3421b607f359fb78b4c877545fea14f/b4294/ergodex_colours.jpg 600w,/static/a3421b607f359fb78b4c877545fea14f/e5166/ergodex_colours.jpg 1200w,/static/a3421b607f359fb78b4c877545fea14f/d9c39/ergodex_colours.jpg 1800w,/static/a3421b607f359fb78b4c877545fea14f/df51d/ergodex_colours.jpg 2400w,/static/a3421b607f359fb78b4c877545fea14f/d2602/ergodex_colours.jpg 4032w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p><em>Dang</em> that looks so good!</p><p>With legends on my keys and colour coding, I had landmarks that I could use to remember the layout more easily. So I expanded my layout. I added print-screen keys, paste-without-formatting keys, and all kinds of one-off keys that made my life a little easier. It was great!</p><p>What could go wrong?</p><p>The problem I had with the ErgoDox EZ was, ironically, ergnomics. The keyboard tented, but that made the keyboard sit taller on my desk; I had to raise my hands to meet the keyboard. I did use palm rests to help, but that led to another problem.</p><p>I take written meeting notes by hand, which means that I use my desk for more than just a keyboard and mouse. Every meeting I would start by pushing my two keyboard halves <em>and</em> their wrist rests <em>and</em> my Magic Trackpad away from me to make room for my notebook. Then at the end of the meeting, I would pull all five pieces back and try to arrange them just-so. A minor frustraiton, but one that persisted for years.</p><p>I eventually got lazy and started using my keyboard pushed back, in ways that were uncomfortable. I tried leaving the notebook between the two halves, but that separated them too much. I was back to meeting my keyboard instead of having my keyboard meet me.</p><p>Hmm.</p><p>Luckily, ZSA came out with a new keyboard last year: <a href="https://www.zsa.io/voyager" target="_blank" rel="nofollow noopener noreferrer">the Voyager</a>. This presented a potential solution to my frustration, but would come at the cost of time, money, and becoming an even weirder keyboard person.</p><p>I opened my heart to the possibility.</p><p>I started playing around with my ErgoDox EZ layout to simulate the Voyager. I added <a href="https://precondition.github.io/home-row-mods" target="_blank" rel="nofollow noopener noreferrer">home row mods</a>. I printed out to-scale outlines of both keyboards to compare. I thought really hard about what I wanted, and then <a href="/blog/new-keyboard/">I took the plunge</a>.</p><div><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/5b24e994098851e1e92726748c999f66/2d0c4/comparison.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:95%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAATABQDASIAAhEBAxEB/8QAGQABAQADAQAAAAAAAAAAAAAAAAQBAgMF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAGztLtllMrhYR4g1P/EABwQAAEEAwEAAAAAAAAAAAAAAAIAAQMRBCEiM//aAAgBAQABBQIKXKPRRvq6cy6xScgUvp//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAcEAACAQUBAAAAAAAAAAAAAAAAARECECExQVH/2gAIAQEABj8CcmjAz0Y5fbVH/8QAHBAAAwABBQAAAAAAAAAAAAAAAAERIRAxQVGx/9oACAEBAAE/IVa0TEn4EwwRTPMlKdaeFSddtHae5//aAAwDAQACAAMAAAAQ39D8/8QAFhEAAwAAAAAAAAAAAAAAAAAAAAEQ/9oACAEDAQE/EKz/xAAWEQADAAAAAAAAAAAAAAAAAAAAARD/2gAIAQIBAT8QqP/EABsQAQACAwEBAAAAAAAAAAAAAAEAESFBcWEx/9oACAEBAAE/EA6EoLLjoZORPIAMSoKsMkSRzwyjK5ryKoZQXkVr7Gr7O5//2Q==&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Photo of one half of the Voyager on a to-scale print-out of the ErgoDox EZ" title="Photo of one half of the Voyager on a to-scale print-out of the ErgoDox EZ" src="/static/5b24e994098851e1e92726748c999f66/e5166/comparison.jpg" srcSet="/static/5b24e994098851e1e92726748c999f66/f93b5/comparison.jpg 300w,/static/5b24e994098851e1e92726748c999f66/b4294/comparison.jpg 600w,/static/5b24e994098851e1e92726748c999f66/e5166/comparison.jpg 1200w,/static/5b24e994098851e1e92726748c999f66/d9c39/comparison.jpg 1800w,/static/5b24e994098851e1e92726748c999f66/df51d/comparison.jpg 2400w,/static/5b24e994098851e1e92726748c999f66/2d0c4/comparison.jpg 2894w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p></div><p>This turned out to be a bigger change that I had anticipated.</p><h1 id="the-voyager-keyboard" style="position:relative"><a href="#the-voyager-keyboard" aria-label="the voyager keyboard permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>The Voyager Keyboard</h1><p>The Voyager is lower profile. It physically lays flatter on the desk, which solves a minor complain I had about the ErgoDox EZ being too tall. The Voyager tents <em>a little</em>, but can also be connected to tripod sockets for maximum tenting flexibility (I am doing a foreshadow here). Lower profile switches travel half the distance as MX switches, and the keycaps are shorter too.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/3df51ef2e1410036500d3b7f82788686/d2602/voyager.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAEDAgT/xAAWAQEBAQAAAAAAAAAAAAAAAAABAAL/2gAMAwEAAhADEAAAAVXmmWhGH//EABsQAQACAgMAAAAAAAAAAAAAAAIAAxESBBQi/9oACAEBAAEFAhRtOuM2U+hyMl7uVpE//8QAFhEBAQEAAAAAAAAAAAAAAAAAABEh/9oACAEDAQE/Aax//8QAFhEBAQEAAAAAAAAAAAAAAAAAABEh/9oACAECAQE/AY1//8QAGhAAAgMBAQAAAAAAAAAAAAAAAAECETFBIv/aAAgBAQAGPwK5PeCZ5kKKXDWUf//EABoQAQEBAAMBAAAAAAAAAAAAAAERACFBYVH/2gAIAQEAAT8heOOag0yKJ9cq4z3NIEiuQIkeOEnrf//aAAwDAQACAAMAAAAQ0D//xAAXEQADAQAAAAAAAAAAAAAAAAAAASFh/9oACAEDAQE/EIYtH//EABYRAQEBAAAAAAAAAAAAAAAAAAEAMf/aAAgBAgEBPxCKHL//xAAdEAEAAgMAAwEAAAAAAAAAAAABESEAQVFhcYHR/9oACAEBAAE/EA526BVsvWQKemhex4xC65eH8yOsStmuZvBogI+YiEibN+8//9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Photo of the Voyager on my desk" title="Photo of the Voyager on my desk" src="/static/3df51ef2e1410036500d3b7f82788686/e5166/voyager.jpg" srcSet="/static/3df51ef2e1410036500d3b7f82788686/f93b5/voyager.jpg 300w,/static/3df51ef2e1410036500d3b7f82788686/b4294/voyager.jpg 600w,/static/3df51ef2e1410036500d3b7f82788686/e5166/voyager.jpg 1200w,/static/3df51ef2e1410036500d3b7f82788686/d9c39/voyager.jpg 1800w,/static/3df51ef2e1410036500d3b7f82788686/df51d/voyager.jpg 2400w,/static/3df51ef2e1410036500d3b7f82788686/d2602/voyager.jpg 4032w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>The whole keyboard is very cute and I dig it.</p><p>This keyboard has a lot fewer keys that the ErgoDox EZ. That’s by design; a great way to minimize finger movement is to use fewer keys. As you have fewer keys, the use of those keys has to get more complex. Remember how the ErgoDox EZ is programmable? The Voyager is too. that programming has some advanced features; as your keyboard gets fewer and fewer keys, you need to use more and more of those advanced features.</p><p>The build quality, fit, and finish of the Voyager keyboard are amazing. A huge step up from the ErgoDox EZ, which was already solid. The configuration software is the same, and the customer support from ZSA has been proactive and amazing.</p><p>I had always used “clicky” switches on my ErgoDox EZ (Cherry MX Blues) because I liked the sound that my other mechanical keyboard had made. Apparently, lots of people absolutely <em>hate</em> clicky keyboards. I never knew! Because I had never used one in an office. My wife, apparently, enjoys the sound of me tap-tap-tapping away.</p><p>Before ordering the Voyager, during a work trip to Toronto, I asked my coworkers to bring in their own keyboards so I could try out some other key switches. I didn’t find anything that I liked better than my Cherry MX Blues. So when I ordered my Voyager, I ordered it with the clicky switches (Kailh Choc V1 Whites).</p><p>I didn’t really like them.</p><p>The Kailh White switches felt bad to type on. Their click wasn’t satisfying like the Cherry MX Blues. They felt kind of “scratchy”. And most worst of all, they sometimes actuated before the click. Apparently, I rest my fingers on keyboards a little too forcefully, and I would often get inadvertently-typed J, K, and L characters (home row on my dominant right hand).</p><p>I looked around and tried the best two options I could find: <a href="https://lowprokb.ca/products/ambients-silent-choc-switches" target="_blank" rel="nofollow noopener noreferrer">Ambient Nocturnals</a> and <a href="https://lowprokb.ca/products/sunset-tactile-choc-switches" target="_blank" rel="nofollow noopener noreferrer">Sunsets</a>.</p><p>Oh my goodness do the Sunsets feel nice. Still a little scratchy, but they feel very satisfying. And they still make enough noise for me. I didn’t <em>like</em> the Nocturnals because they were too easy to press down (lightweight springs) but I was downright <em>disturbed</em> by how quiet they were. The Sunsets both feel and sound good to me (my wife also approves of their sound)</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/84c4c438cd288c9b082a793e08522299/d2602/switching.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIDAQT/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAABSrRjDhK//8QAGhAAAgMBAQAAAAAAAAAAAAAAAQIAAxEEIv/aAAgBAQABBQJ6PIVMIG7HtFcPU2//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAaEAACAwEBAAAAAAAAAAAAAAAAIQECESKB/9oACAEBAAY/AuMFSsiXgzRRB//EABoQAQADAQEBAAAAAAAAAAAAAAEAETEhUUH/2gAIAQEAAT8hClONWCNubGqgPHMTXiBfC4VcbwCf/9oADAMBAAIAAwAAABB7D//EABURAQEAAAAAAAAAAAAAAAAAABAR/9oACAEDAQE/EKf/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/ED//xAAcEAEAAgIDAQAAAAAAAAAAAAABABFBUSGhwfD/2gAIAQEAAT8QaIn5WVYcBSrdkRBnHUQt7pwRQ9Y9owcYEVn/2Q==&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Photo of me switching out switches on the Voyager keyboard" title="Photo of me switching out switches on the Voyager keyboard" src="/static/84c4c438cd288c9b082a793e08522299/e5166/switching.jpg" srcSet="/static/84c4c438cd288c9b082a793e08522299/f93b5/switching.jpg 300w,/static/84c4c438cd288c9b082a793e08522299/b4294/switching.jpg 600w,/static/84c4c438cd288c9b082a793e08522299/e5166/switching.jpg 1200w,/static/84c4c438cd288c9b082a793e08522299/d9c39/switching.jpg 1800w,/static/84c4c438cd288c9b082a793e08522299/df51d/switching.jpg 2400w,/static/84c4c438cd288c9b082a793e08522299/d2602/switching.jpg 4032w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>The worst part is, when I get out my ErgoDox, I don’t even like the Cherry MX Blues anymore. Too clicky. I think I’m just a tactile switch person.</p><p>It took a while to get the layout right. I’m actually putting together a tour of my layout right now, which will go into more details. I’ll update this post once it’s ready. You can see <a href="https://configure.zsa.io/my_layout/view/NWX4X" target="_blank" rel="nofollow noopener noreferrer">the revisions I’ve gone through</a> so far. Here’s the latest layout:</p><div><div style="padding-top:60%;position:relative"><iframe src="https://configure.zsa.io/embed/voyager/layouts/NWX4X/latest/0" style="border:0;height:100%;left:0;position:absolute;top:0;width:100%"></iframe></div></div><p>A few things that make this layout work well for me:</p><ul><li><strong>Thumb cluster buttons are all single-use keys.</strong> I don’t like doubling up on layer mod keys because it introduces a <code class="language-text">delaysContentTouches</code>-esque delay that I find distracting.</li><li>I like home row mods but couldn’t get it working for me with Shift. <strong>So I put Shift on a thumb cluster</strong>, which seems to “make sense” to my brain as it sits with the other layer mods, and shift is more a layer mod than OS modifier like command. I would imagine that <a href="https://getreuer.info/posts/keyboards/achordion/index.html" target="_blank" rel="nofollow noopener noreferrer">Achordion</a> could help me here, but I’ve already settled on a solution for me.</li><li><strong>I have no Enter key.</strong> I kept prematurely sending Slack messages by accident when I reached for a key and accidentally hit enter. So instead, I created a combo where I hit J and K and the same time (my two strongest fingers on my dominant hand) and that sends Enter. Hard to do by accident, and very satisfying.</li><li><strong>Optimize for text editing in macOS</strong>, with keys for common actions like “forward delete the next word” and “move to the end of this line.” It’s all systematized and easy to remember.</li><li><strong><a href="https://tenforward.social/@ashfurrow/113160750825678795" target="_blank" rel="nofollow noopener noreferrer">Cat Mode</a>.</strong></li></ul><iframe src="https://tenforward.social/@ashfurrow/113160750825678795/embed" class="mastodon-embed" style="max-width:100%;border:0;margin-bottom:50px" width="600" height="600" allowfullscreen=""></iframe><script src="https://tenforward.social/embed.js" async=""></script><h1 id="tenting-iterations" style="position:relative"><a href="#tenting-iterations" aria-label="tenting iterations permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Tenting Iterations</h1><p>All of this has been preamble. Table-setting. Context you need to understand: I am in deep.</p><p>I have fallen down a rabbit hole. I’m desperately trying to stop myself. My fingers – dug into the sides of this hole – can just barely slow my descent. But the deeper I fall, the less I really want to stop.</p><div><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1100px"> <a class="gatsby-resp-image-link" href="/static/eefb7648b3430221112fcb774ffe33f1/ddced/reddit.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:39.333333333333336%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAIABQDASIAAhEBAxEB/8QAFwABAAMAAAAAAAAAAAAAAAAAAAECBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHKqWQD/8QAFhABAQEAAAAAAAAAAAAAAAAAABEB/9oACAEBAAEFApqaj//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABQQAQAAAAAAAAAAAAAAAAAAABD/2gAIAQEABj8Cf//EABkQAAMAAwAAAAAAAAAAAAAAAAABITFhof/aAAgBAQABPyGGeG9js//aAAwDAQACAAMAAAAQcA//xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAgBAwEBPxCq/8QAFREBAQAAAAAAAAAAAAAAAAAAABH/2gAIAQIBAT8QiP/EABsQAAIDAAMAAAAAAAAAAAAAAAERACFBMWGR/9oACAEBAAE/EHgqkZxmBL7LDJfc/9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Reddit comment thread. &quot;I&#x27;m worried I&#x27;ll keep falling down the rabbit hole haha.&quot; &quot;Let it happen! Switches are so personal&quot;" title="Reddit comment thread. &quot;I&#x27;m worried I&#x27;ll keep falling down the rabbit hole haha.&quot; &quot;Let it happen! Switches are so personal&quot;" src="/static/eefb7648b3430221112fcb774ffe33f1/ddced/reddit.jpg" srcSet="/static/eefb7648b3430221112fcb774ffe33f1/f93b5/reddit.jpg 300w,/static/eefb7648b3430221112fcb774ffe33f1/b4294/reddit.jpg 600w,/static/eefb7648b3430221112fcb774ffe33f1/ddced/reddit.jpg 1100w" sizes="(max-width: 1100px) 100vw, 1100px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p></div><p>I’ve become a full-on weird keyboard person. Sure, I was using a split keyboard for a decade. And sure, I used a columnar stagger custom-programmable keyboard for years.</p><p>But this is another level.</p><p>My attempts to bring my keyboard to meet me have led me to their inevitable conclusion. Let’s start with the keyboard tray.</p><p>After getting the Voyager, I used it on my desk for a while. But it had the same issue where I was always pushing it back for meetings and having to re-arrange the two halves and my trackpad all the time. I thought, let’s get a keyboard tray. You know, like the 1990’s? A sliding tray that attaches under my desk.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/df0c6e4ccb59bef5d3c7f84f6fd46868/62e0e/tray.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAQBA//EABYBAQEBAAAAAAAAAAAAAAAAAAIBA//aAAwDAQACEAMQAAAByfpKbaM3/8QAGhABAQEAAwEAAAAAAAAAAAAAAgEAAxESIv/aAAgBAQABBQLwN1x3GkylWK0YfR//xAAWEQEBAQAAAAAAAAAAAAAAAAAAERL/2gAIAQMBAT8BrL//xAAWEQEBAQAAAAAAAAAAAAAAAAAAERL/2gAIAQIBAT8BjT//xAAbEAACAwEBAQAAAAAAAAAAAAAAAgERIYExof/aAAgBAQAGPwL144azFWTbYUk/C53h/8QAGRABAAMBAQAAAAAAAAAAAAAAAQARIVFB/9oACAEBAAE/IUnTcjV6MyV0qOlQwCxVJcpgUOQdEfcT/9oADAMBAAIAAwAAABCYH//EABcRAQEBAQAAAAAAAAAAAAAAAAEAETH/2gAIAQMBAT8QDkDO3//EABcRAQEBAQAAAAAAAAAAAAAAAAEAETH/2gAIAQIBAT8QXK3l/8QAGxABAAMBAQEBAAAAAAAAAAAAAQARITFhccH/2gAIAQEAAT8QGVDQH9Jgn0Ayp28m2wabj7UpzIrRCtuBucRHX7cMVt6FPKJ//9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Voyager and trackpad on a keyboard tray" title="Voyager and trackpad on a keyboard tray" src="/static/df0c6e4ccb59bef5d3c7f84f6fd46868/e5166/tray.jpg" srcSet="/static/df0c6e4ccb59bef5d3c7f84f6fd46868/f93b5/tray.jpg 300w,/static/df0c6e4ccb59bef5d3c7f84f6fd46868/b4294/tray.jpg 600w,/static/df0c6e4ccb59bef5d3c7f84f6fd46868/e5166/tray.jpg 1200w,/static/df0c6e4ccb59bef5d3c7f84f6fd46868/d9c39/tray.jpg 1800w,/static/df0c6e4ccb59bef5d3c7f84f6fd46868/df51d/tray.jpg 2400w,/static/df0c6e4ccb59bef5d3c7f84f6fd46868/62e0e/tray.jpg 3572w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>This worked. My keyboard and notebook could both be directly in front of me because they were on different levels. A combination of adjustments to my sit-stand desk and VESA-mounted monitor could accommodate writing and typing, either when sitting or standing. But I had to settle for the limited tenting that the Voyager supports out-of-the-box, which wasn’t enough for me.</p><p>Also, I had to pull out the keyboard tray any time I wanted to use the keyboard briefly during meetings – which turns out is a lot! The keyboard tray is noisy, too, and very distinct. Not a pleasant sound.</p><p>So from there, I explored tenting options using tripod mounts.</p><p>You can mount any <em>thing</em> in any <em>way</em> that you want, <em>if</em> you can get it attached to a tripod mount. Photography, videography, DJ’ing, and many other fields have all settled on using this same mount size, so you can use tools from any of those fields. I settled on double-ball joint “magic arms”, a miniature tripod that has mounting points at its centre and on its legs, and a tablet holder for my trackpad. It ended up looking like this.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/1a811c01aa79bc9f9d7063839adfc380/b7c1f/tripod_1.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAMBAgT/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAGKrSaBof/EABsQAAMAAgMAAAAAAAAAAAAAAAECAwAEERMU/9oACAEBAAEFAvMeWijMNW2dknoTM4m5NV//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAeEAACAQMFAAAAAAAAAAAAAAAAAQIDESESEzJSkf/aAAgBAQAGPwLkh7VTPVmJRNUnMvlFm5eH/8QAGxABAAMBAAMAAAAAAAAAAAAAAQARMUEhUcH/2gAIAQEAAT8hPOoYYnXj9g8A+puAZcuA0PNlwJj/2gAMAwEAAgADAAAAEGDP/8QAFREBAQAAAAAAAAAAAAAAAAAAABH/2gAIAQMBAT8Qqv/EABYRAQEBAAAAAAAAAAAAAAAAAAARAf/aAAgBAgEBPxCYj//EABsQAQADAQEBAQAAAAAAAAAAAAEAESExQWFx/9oACAEBAAE/EAm0pxSz05sUJdsa41ggCsl6ofvIuA2aYX+b7G+GCEgX6Usf/9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Photo of the Voyager keyboard mounted to a mini tripod along an Apple Magic Trackpad held by a tablet holder" title="Photo of the Voyager keyboard mounted to a mini tripod along an Apple Magic Trackpad held by a tablet holder" src="/static/1a811c01aa79bc9f9d7063839adfc380/e5166/tripod_1.jpg" srcSet="/static/1a811c01aa79bc9f9d7063839adfc380/f93b5/tripod_1.jpg 300w,/static/1a811c01aa79bc9f9d7063839adfc380/b4294/tripod_1.jpg 600w,/static/1a811c01aa79bc9f9d7063839adfc380/e5166/tripod_1.jpg 1200w,/static/1a811c01aa79bc9f9d7063839adfc380/d9c39/tripod_1.jpg 1800w,/static/1a811c01aa79bc9f9d7063839adfc380/df51d/tripod_1.jpg 2400w,/static/1a811c01aa79bc9f9d7063839adfc380/b7c1f/tripod_1.jpg 5712w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>The trackpad is so close to my hand that moving between the keyboard and mouse takes very little movement. It also forces me to “hover type” instead of resting any part of my palms/wrist/forearms on the desk. This prevents nerves from getting pinched. Until-and-unless ZSA commercializes <a href="https://blog.zsa.io/diy-voyager-trackpad-saucer/" target="_blank" rel="nofollow noopener noreferrer">this DIY trackpad attachment</a>, I plan to use the Apple Trackpad like this.</p><p>I’m so sorry.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/1b4ea98a06018d5e64e3c1d7bc4ef791/d2602/tripod_2.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAMEAv/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHZKuGFxH//xAAbEAACAwADAAAAAAAAAAAAAAABAgMREgATIf/aAAgBAQABBQJJK41SKo8Ou42Chiz/AP/EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EAB0QAAICAgMBAAAAAAAAAAAAAAABERICMSFBUYH/2gAIAQEABj8CLI0n9KWslvojFOvkyK2PJ//EABoQAAMAAwEAAAAAAAAAAAAAAAABESFBUXH/2gAIAQEAAT8hbUk4x4etd0Pd+worLoGiMZjSsCElRnB//9oADAMBAAIAAwAAABDX3//EABYRAQEBAAAAAAAAAAAAAAAAAAAhUf/aAAgBAwEBPxCJr//EABcRAQADAAAAAAAAAAAAAAAAAAAhUXH/2gAIAQIBAT8Q1NP/xAAcEAEAAgIDAQAAAAAAAAAAAAABETEAIUFRcYH/2gAIAQEAAT8QHk23X9MjWHo7PdcXgbbtjPmWOYzCChC/mFyWgsomZkOzCMWAHLvWf//Z&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Another photo, from a different angle, of the Voyager keyboard mounted to a mini tripod along an Apple Magic Trackpad held by a tablet holder" title="Another photo, from a different angle, of the Voyager keyboard mounted to a mini tripod along an Apple Magic Trackpad held by a tablet holder" src="/static/1b4ea98a06018d5e64e3c1d7bc4ef791/e5166/tripod_2.jpg" srcSet="/static/1b4ea98a06018d5e64e3c1d7bc4ef791/f93b5/tripod_2.jpg 300w,/static/1b4ea98a06018d5e64e3c1d7bc4ef791/b4294/tripod_2.jpg 600w,/static/1b4ea98a06018d5e64e3c1d7bc4ef791/e5166/tripod_2.jpg 1200w,/static/1b4ea98a06018d5e64e3c1d7bc4ef791/d9c39/tripod_2.jpg 1800w,/static/1b4ea98a06018d5e64e3c1d7bc4ef791/df51d/tripod_2.jpg 2400w,/static/1b4ea98a06018d5e64e3c1d7bc4ef791/d2602/tripod_2.jpg 4032w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>I shared this on the <code class="language-text">#keyboards</code> channel at work and got a response that sums it up: “with all due respect this is insane. I respect your journey though.”</p><p>I <em>also</em> think this is insane. But I also have to respect my own journey.</p><p>This setup with the mini tripod worked really well, mainly because it “collapsed” the two keyboard halves and trackpad into a single “thing” that I could move around on my desk. We went from five separate objects to move around down to one. It was easy to switch between note-taking and typing, yay! I used it for a few weeks before playing with a new idea…</p><p>What if I could combine the benefits of the keyboard tray with the layout I had from the tripod? I hadn’t want to clamp my keyboard to my desk (<a href="https://www.youtube.com/watch?v=mT3TToFqqEU" target="_blank" rel="nofollow noopener noreferrer">which is a common solution</a>) because the clamps would get in the way of my notebook for taking notes.</p><p>Then I realized: I already <em>had</em> an unused keyboard tray still attached to my desk, so maybe I could attach everything to that?</p><p>Yes.</p><p><strong><em>Yes.</em></strong></p><p>I removed the tray itself but kept the metal slide attached to the bottom of my desk. I then drilled out the existing holes to fit a tripod screw, and added a few new holes.</p><div><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/7e24bbc6f4b3b0bf75b396479bbdfef8/b3e35/tray_holes.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:71.00000000000001%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAOABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAQFAQL/xAAVAQEBAAAAAAAAAAAAAAAAAAABA//aAAwDAQACEAMQAAAB2e+onZMI1//EABoQAAIDAQEAAAAAAAAAAAAAAAEDAAIRECH/2gAIAQEAAQUCveMBi2AUz1p3n//EABYRAQEBAAAAAAAAAAAAAAAAAAABAv/aAAgBAwEBPwFN1//EABYRAQEBAAAAAAAAAAAAAAAAAAABA//aAAgBAgEBPwFc4//EABoQAAICAwAAAAAAAAAAAAAAAAABEUEQEiH/2gAIAQEABj8CZ1QJOjYl3j//xAAbEAADAQADAQAAAAAAAAAAAAAAARExIVGBsf/aAAgBAQABPyGg1t8FqLwFOfaQ9tPgrb0//9oADAMBAAIAAwAAABDXH//EABYRAAMAAAAAAAAAAAAAAAAAAAABEf/aAAgBAwEBPxASUh//xAAXEQADAQAAAAAAAAAAAAAAAAAAARFB/9oACAECAQE/EMgw7T//xAAcEAEBAAICAwAAAAAAAAAAAAABEQAhMVFBYaH/2gAIAQEAAT8QLkJe/WagB0LFyoYGjq6yJuFtLITb94wuoxB4cLCsb4M//9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Keyboard tray with holes drilled out to fit a tripod mount." title="Keyboard tray with holes drilled out to fit a tripod mount." src="/static/7e24bbc6f4b3b0bf75b396479bbdfef8/e5166/tray_holes.jpg" srcSet="/static/7e24bbc6f4b3b0bf75b396479bbdfef8/f93b5/tray_holes.jpg 300w,/static/7e24bbc6f4b3b0bf75b396479bbdfef8/b4294/tray_holes.jpg 600w,/static/7e24bbc6f4b3b0bf75b396479bbdfef8/e5166/tray_holes.jpg 1200w,/static/7e24bbc6f4b3b0bf75b396479bbdfef8/d9c39/tray_holes.jpg 1800w,/static/7e24bbc6f4b3b0bf75b396479bbdfef8/df51d/tray_holes.jpg 2400w,/static/7e24bbc6f4b3b0bf75b396479bbdfef8/b3e35/tray_holes.jpg 2949w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p></div><p>That allowed me to mount a cheeseplate to the keyboard tray slide.</p><div><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/13c1d2bf8fa5e1fd84ddfe65b4b6b879/b7c1f/tray_bolts.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABAAF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAWiTlmrMpf/EABwQAAIBBQEAAAAAAAAAAAAAAAIDAQAEERIjMf/aAAgBAQABBQIlwY+MBOBvJ1Wmetf/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAgBAgEBPwGq/8QAHRAAAgEEAwAAAAAAAAAAAAAAAAECEBEhYTFxkf/aAAgBAQAGPwK7wK0c6OZekdsh2qf/xAAcEAEAAgIDAQAAAAAAAAAAAAABABExQRAhYdH/2gAIAQEAAT8hI0J1BLBq26lEIPkY8PxlJZvNx//aAAwDAQACAAMAAAAQtO//xAAXEQEAAwAAAAAAAAAAAAAAAAABEBEh/9oACAEDAQE/EKHY/8QAFREBAQAAAAAAAAAAAAAAAAAAARD/2gAIAQIBAT8QER//xAAcEAEBAAMBAAMAAAAAAAAAAAABEQAhMUFhgdH/2gAIAQEAAT8QbMqiYV8v1hwuoA6c51cKrBYgbcYwiMeQX7iiGkXxvzIu5PjP/9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Keyboard tray with holes with cheeseplate attached." title="Keyboard tray with holes with cheeseplate attached." src="/static/13c1d2bf8fa5e1fd84ddfe65b4b6b879/e5166/tray_bolts.jpg" srcSet="/static/13c1d2bf8fa5e1fd84ddfe65b4b6b879/f93b5/tray_bolts.jpg 300w,/static/13c1d2bf8fa5e1fd84ddfe65b4b6b879/b4294/tray_bolts.jpg 600w,/static/13c1d2bf8fa5e1fd84ddfe65b4b6b879/e5166/tray_bolts.jpg 1200w,/static/13c1d2bf8fa5e1fd84ddfe65b4b6b879/d9c39/tray_bolts.jpg 1800w,/static/13c1d2bf8fa5e1fd84ddfe65b4b6b879/df51d/tray_bolts.jpg 2400w,/static/13c1d2bf8fa5e1fd84ddfe65b4b6b879/b7c1f/tray_bolts.jpg 5712w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p></div><p>From there, the rest was just iterating until I found something that worked.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/63cad7f378c70cbfd367b6b58627159d/63aad/tray_tent_1.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAMEAv/EABcBAAMBAAAAAAAAAAAAAAAAAAECAwT/2gAMAwEAAhADEAAAAWYRMpYVGa3/xAAcEAACAgIDAAAAAAAAAAAAAAABAgADBBITISP/2gAIAQEAAQUCqYWS3H64mlY8NWQo+w//xAAWEQEBAQAAAAAAAAAAAAAAAAAAARH/2gAIAQMBAT8BZH//xAAWEQADAAAAAAAAAAAAAAAAAAAAAQL/2gAIAQIBAT8BHdI//8QAGRAAAwEBAQAAAAAAAAAAAAAAAAECESEx/9oACAEBAAY/AutYOoxo9Q5Nmmbh/8QAGxABAAMBAAMAAAAAAAAAAAAAAQARITFBUeH/2gAIAQEAAT8hNHL2vEpS9aPyIxyL1jak3btXNfpZ/9oADAMBAAIAAwAAABArP//EABYRAQEBAAAAAAAAAAAAAAAAAAERAP/aAAgBAwEBPxAa4cs3/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAERIf/aAAgBAgEBPxDJBg1T/8QAHRABAQACAQUAAAAAAAAAAAAAAREAIVFBcYGRof/aAAgBAQABPxCbNS9V8NxAOGjaXzMo172GUEWFiuvmEmaPoGt74KCFKcZ//9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Keyboard tray with Voyager and tripod attached." title="Keyboard tray with Voyager and tripod attached." src="/static/63cad7f378c70cbfd367b6b58627159d/e5166/tray_tent_1.jpg" srcSet="/static/63cad7f378c70cbfd367b6b58627159d/f93b5/tray_tent_1.jpg 300w,/static/63cad7f378c70cbfd367b6b58627159d/b4294/tray_tent_1.jpg 600w,/static/63cad7f378c70cbfd367b6b58627159d/e5166/tray_tent_1.jpg 1200w,/static/63cad7f378c70cbfd367b6b58627159d/d9c39/tray_tent_1.jpg 1800w,/static/63cad7f378c70cbfd367b6b58627159d/df51d/tray_tent_1.jpg 2400w,/static/63cad7f378c70cbfd367b6b58627159d/63aad/tray_tent_1.jpg 5366w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>I have so much flexibility. I use the magic arms to position the keyboard and trackpad wherever I want relative to each other. I can still adjust the keyboard tray mechanism, which makes it easy to position the entire keyboard/trackpad contraption at once, relative to my desk. My notebook is unobstructed by my keyboard, so I never have to pull a tray towards me.</p><p>This took hours and hours of research and iteration, and took many attempts. As an engineering problem, getting the “best” ergonomic setup was a fun challenge. Intrinsically rewarding, if socially isolating.</p><div><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/8dbd477cbd2186bc050c5e745221b2b4/adf6a/tray_tent_2.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAQFAgP/xAAVAQEBAAAAAAAAAAAAAAAAAAABAP/aAAwDAQACEAMQAAAB6bgtQ8Tgf//EABwQAAICAgMAAAAAAAAAAAAAAAECAxEAEgQhIv/aAAgBAQABBQIOlsYq24+RnuPUFvTf/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFREBAQAAAAAAAAAAAAAAAAAAACH/2gAIAQIBAT8BV//EAB4QAAIBAwUAAAAAAAAAAAAAAAABEQIhMQMSQVGh/9oACAEBAAY/AoenTHZKooa5sY8ZfCNykcOEf//EABoQAAMBAQEBAAAAAAAAAAAAAAABESFBMWH/2gAIAQEAAT8h91HDtMoJxFbQvnKa0Gm742W5KyH/2gAMAwEAAgADAAAAEGw//8QAGBEAAwEBAAAAAAAAAAAAAAAAAAEhEVH/2gAIAQMBAT8QTW0nT//EABgRAQADAQAAAAAAAAAAAAAAAAEAESFR/9oACAECAQE/EKawg8T/xAAdEAEBAAIDAAMAAAAAAAAAAAABEQAhMUFxUYGx/9oACAEBAAE/EEGDCAPkm53hXtYGflnGBtqtgGNTPECid6y5RbeT7reKkzEP3+5//9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Keyboard tray with Voyager and tripod attached, different angle." title="Keyboard tray with Voyager and tripod attached, different angle." src="/static/8dbd477cbd2186bc050c5e745221b2b4/e5166/tray_tent_2.jpg" srcSet="/static/8dbd477cbd2186bc050c5e745221b2b4/f93b5/tray_tent_2.jpg 300w,/static/8dbd477cbd2186bc050c5e745221b2b4/b4294/tray_tent_2.jpg 600w,/static/8dbd477cbd2186bc050c5e745221b2b4/e5166/tray_tent_2.jpg 1200w,/static/8dbd477cbd2186bc050c5e745221b2b4/d9c39/tray_tent_2.jpg 1800w,/static/8dbd477cbd2186bc050c5e745221b2b4/df51d/tray_tent_2.jpg 2400w,/static/8dbd477cbd2186bc050c5e745221b2b4/adf6a/tray_tent_2.jpg 4795w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p></div><p>This feels amazing to type on and use day-to-day. But I also feel like an idiot. A massive idiot.</p><p>I spent time, attention, and money to do <em>this</em> to my home office.</p><p>Look at this. I took a perfectly good desk and I gave it anxiety.</p><p>I love this, though. It is so comfortable to type on. It meets me where I’m at. It solves all the problems I have. It’s the ideal tradeoff, the “best” solution that I could engineer.</p><hr/><p>I’m not quite sure how to end this blog post, because I’m not entirely sure that this <em>is</em> the end. I hope so, at least for a while.</p><p>I’ve been using computers nearly my whole life. I have built a career using computers. But they have taken a toll on my body that I need to manage, or else. I don’t want to stop using them, so I have to use them responsibly.</p><p>What I’m trying to say really is: if using a weird keyboard makes me not cool, then I don’t <em>want</em> to be cool.</p><p>I’ll settle for no wrist pain.</p><![CDATA[Four Years in New Brunswick]]>https://ashfurrow.com/blog/four-years-in-new-brunswick/https://ashfurrow.com/blog/four-years-in-new-brunswick/Thu, 31 Oct 2024 00:00:00 GMT<p>Today – Halloween – marks four years since my wife and I <a href="/blog/moving-home-to-new-brunswick/">returned to live in New Brunswick</a>. I feel compelled to reflect and share.</p><p>It feels disingenuous to say that things haven’t gone as I expected them to, because I didn’t really have explicit expectations. But I suppose it is accurate to say: my self in 2020 would be surprised with the way things have turned out.</p><p>Life since moving home has been complicated. I’ve felt loss. Sadness. Frustration.</p><p>Anger.</p><p>I don’t like how certain events have played out, but I’ve learned to accept that - while I am only in control of myself - I <em>am</em> in control of myself. I’ve learned not to assume responsibility for the feelings and actions of others. I’ve learned boundaries. <a href="/blog/new-year-new-me/">I’ve grown</a>. And I’ve had to accept that not everyone is interested in that growth.</p><p>I’m still figuring out who I am. And I do still catch myself thinking of “figuring out who I am” as a task that will someday be completed. That will someday become past tense, done. Checkmark. Instead, it is something that I do and then I keep doing and then one day I’ll die. And only then will “figuring out who I am” be over. But it won’t be done. It won’t be accomplished.</p><p><a href="/blog/what-happens-next/">In 2021</a>, I wrote about how my wife and I have largely gone where life has taken us. That has led to great adventures, but it has also carried great costs. When I wrote that in 2021, things <em>did</em> feel different. But change is slow. We’re more in the driver’s seat of our own lives than ever before.</p><p>If I’m being honest, some days I feel like I’ve woken up from a long dream. I look around and I don’t understand. Not confused, but I don’t understand. Where am I? How did I get here?</p><p>Maybe this is middle life. Maybe. But it doesn’t feel like a crisis – and after the last four years, I would know.</p><p>Four years in New Brunswick. The Picture Province! “Home.” A place I can’t seem to forgive.</p><p>A place to live. Because we chose to and because we continue to choose to.</p><p>Not a home that we take our place in. But a place to make our own home.</p><![CDATA[Year of Recovery]]>https://ashfurrow.com/blog/year-of-recovery/https://ashfurrow.com/blog/year-of-recovery/Thu, 31 Oct 2024 00:00:00 GMT<p>This post comes with a content warning for a medical discussion.</p><p>In late 2019, I discovered I had a health condition that needed surgery to correct. Not life-threatening, but it was the first major acute physical health issue that I’ve encountered as an adult. <a href="/blog/recovering/">That led to a surgery</a> while I still lived in New York. 2020 was not a great time for medical treatment in New York. The cab driver taking me to the hospital pointed out the freezer trucks along the East River being used as makeshift morgues. My recovery didn’t go great, but I was cleared to travel <a href="/blog/moving-home-to-new-brunswick/">home to Canada</a>.</p><p>Unfortunately, the problem recurred and I needed surgery again. After about a year on a waitlist, I had a different operation to resolve the same problem. Exactly one year ago today.</p><p>That’s right, surgery on Halloween. I tried to put a cool spin on it – like that’s pretty metal, right? Surgery on Halloween? Could be a cool story. And I wish I could tell you a cool story, but the fact is that it sucked. It was a more invasive procedure than last time. Canadian hospitals are great in some ways, but are also overcrowded. I was admitted overnight and it was hell.</p><p>But I survived. I did what I had to do, to make it through.</p><p>I worked with a physiotherapist in the months leading up to the procedure to strengthen my core muscles for better post-operation outcomes. I started going for daily walks the very first day I returned home from the hospital. Once cleared by my surgeon, I started strengthening exercises with my physiotherapist: about six weeks after the surgery. Ever since then, I have been training. Training from the inside out and from the bottom up.</p><p>I used to consider core workouts a kind of warmup to the actual weightlifting training at the gym. But when I started training again last year, with a focus on safety, core workouts were all I had. And I started from scratch: laying on my back and engaging my core as I exhaled.</p><p>Building up from a solid foundation has led me to some great successes.</p><p>First, the health problem that required surgery in the first place is being managed. I am not “as good as new”, I never will be, and I need to work within that reality. Safety while training is more paramount than ever. On the other hand, believing yourself to be fragile is a great way to get injured. So it’s been a balance, literally and figuratively.</p><p>Second, I’ve gotten stronger. My wife remarked “you’ve become as strong as you’ve ever been. Maybe not in the absolute sense, but in the <a href="https://www.youtube.com/@VacuumWars" target="_blank" rel="nofollow noopener noreferrer">Vacuum Wars</a> sense.” Meaning that I might have a lower one-rep max but my coordination and useful day-to-day strength is up. This has been a great feeling. It’s been amazing to see my arms and legs grow without even focusing on those muscles.</p><p>I started running again in May. Slowly at first. I still don’t run as fast or as far as I have before. I also don’t use a smartwatch at all; for the first time as a runner, the only feedback I’m listening to is my own body. I wish I had <a href="/blog/2021-my-year-of-closed-rings/">ditched the technology</a> sooner.</p><p>Last weekend, just less than a year after my surgery, I completed <a href="https://frederictonmarathon.com/run-for-shelters/" target="_blank" rel="nofollow noopener noreferrer">Fredericton’s Run for the Shelters</a> 3k race. Only my second race ever. I don’t even know my time, but I know that I trained, I showed up, and I finished.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/3e8a0ec2f617dee08a864cd894239d7e/4e81e/run.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:133.33333333333331%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEAgH/xAAXAQADAQAAAAAAAAAAAAAAAAAAAQID/9oADAMBAAIQAxAAAAHcem1MwwzpFE4mw4B//8QAHhAAAgEEAwEAAAAAAAAAAAAAAAECAxESIRATIjL/2gAIAQEAAQUCWJVFtN+nCTLWFuPY5xyKfzx//8QAGREAAQUAAAAAAAAAAAAAAAAAEQABEBIh/9oACAEDAQE/Aah8Qn//xAAZEQACAwEAAAAAAAAAAAAAAAABEQACECH/2gAIAQIBAT8BFmOx7//EACAQAAEDAgcAAAAAAAAAAAAAAAABAhJBUSAhIjEyYaH/2gAIAQEABj8C3OihC6DZUMm+jVTkar4f/8QAHhABAAIBBAMAAAAAAAAAAAAAAQARITFBUWFxobH/2gAIAQEAAT8hsM0mRdUOd5rCCputO4AABA7mCC5EMjxNkFYYnT7NHxcV9xCjsn//2gAMAwEAAgADAAAAEHjzQP/EABcRAQEBAQAAAAAAAAAAAAAAAAEQESH/2gAIAQMBAT8QeiC66z//xAAYEQACAwAAAAAAAAAAAAAAAAAAERAxQf/aAAgBAgEBPxC3QeCP/8QAHRABAQADAAIDAAAAAAAAAAAAAREAIUFxwYGRof/aAAgBAQABPxBDQ4rkmEpVDpqMwIXD2OQBRC8XDCKsiyEnW7cgCpWo94kdPsH6xkqgxt8/uKGJDhph18GPNxQl0SZUzdHP/9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Photo of me after the 3k race" title="Photo of me after the 3k race" src="/static/3e8a0ec2f617dee08a864cd894239d7e/e5166/run.jpg" srcSet="/static/3e8a0ec2f617dee08a864cd894239d7e/f93b5/run.jpg 300w,/static/3e8a0ec2f617dee08a864cd894239d7e/b4294/run.jpg 600w,/static/3e8a0ec2f617dee08a864cd894239d7e/e5166/run.jpg 1200w,/static/3e8a0ec2f617dee08a864cd894239d7e/d9c39/run.jpg 1800w,/static/3e8a0ec2f617dee08a864cd894239d7e/df51d/run.jpg 2400w,/static/3e8a0ec2f617dee08a864cd894239d7e/4e81e/run.jpg 2473w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>I dare you to look happier at 1ºC with 40km/h wind gusts.</p><p>My health issue might come back at some point. There’s a good chance it will, actually. I intend to beat the odds and to do that, I have to manage it. For the rest of my life. Managing my health is something I should have been doing my whole life. I never chose to neglect my health, but it happened. I choose to prioritize my health from now on.</p><p>I cannot express enough gratitude to my wife for her help and support over the last year. My feelings – of helplessness and sadness – reached indescribable depths. But she’s always been there to remind me that I can do this. And I have. And I will.</p><![CDATA[Asking for Help as a Software Developer]]>https://ashfurrow.com/blog/asking-for-help-as-a-software-developer/https://ashfurrow.com/blog/asking-for-help-as-a-software-developer/Mon, 07 Oct 2024 00:00:00 GMT<p>I was talking with a software developer friend the other day. They were asking for suggestions on how to increase their coding output. They keep finding themselves getting stuck and taking “too long” with their tasks, and they wanted advice on how to get more code written.</p><p>My advice was to ask for help better. By that I mean: ask for help sooner and ask for help in a way that makes it easier to get help. I want to share what I told them because I think that a lot of developers face the same problem as they grow from junior to intermediate, or intermediate to senior.</p><p>I remember facing this problem myself. I solved the problem by asking for help sooner and by getting better at asking for that help.</p><h2 id="why-you-need-to-ask-for-help" style="position:relative"><a href="#why-you-need-to-ask-for-help" aria-label="why you need to ask for help permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Why you need to ask for help</h2><p>Developers hit this problem where they can get stuck and stay stuck for too long. They’re not making progress and they’re not learning. They become <em>unproductively stuck</em>. I think this happens when developers over-index on persistence. Computers are exacting, fickle, and pedantic; you need persistence to learn how to program computers.</p><p>In fact, I believe that the process of becoming a good software developer <em>is</em> the process of encountering many roadblocks and finding a way around them. And that takes persistence.</p><p>However, that same persistence can backfire as you face more challenging and complex problems. Orders of magnitude more complex. It’s relatively easy to get unstuck by searching google when the problem is solved by understanding <code class="language-text">for</code> loops. It’s a lot harder to get unstuck by searching google when the problem is rooted in your company’s weird multi-tenant microservice infrastructure, or virtual DOM reconciliation bottlenecks, or any number of weird and frustrating problems.</p><p>As your job becomes more difficult, relying solely on persistence to solve problems can backfire. The problems you have to solve grow and grow in complexity, so your toolbox for solving those problems need to grow too. Persistence is necessary, but insufficient.</p><p>Think about it another way: if you got stuck on a problem for two days when asking for help would have gotten you unstuck in a half hour, was that a good use of two days? Did it help you improve your skills? Did it help you accomplish your task?</p><p>You probably work on a team. That team depends on you. When you get <em>unproductively stuck</em>, your team is depending on you to ask them for help. Try not to let your own persistence and determination get in the way of your goals, and of your team’s goals.</p><h2 id="when-to-ask-for-help" style="position:relative"><a href="#when-to-ask-for-help" aria-label="when to ask for help permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>When to ask for help</h2><p>There is a bit of a paradox. You need to ask for help, but not too soon because you need to be persistent. But not too late, either, because it’s not productive to stay stuck too long.</p><p>When do you give up and ask for help?</p><p>My answer is: asking for help is not “giving up.” Asking for help doesn’t mean asking for the solution to your problem; it’s asking for a new direction to look in. And we’ll see later how asking for help doesn’t mean that you stop working on the problem.</p><p>Story time. As an intern, I was told that I give up too easily and needed to stick with problems longer on my own before asking for help. I needed more persistence. That was a tough thing to hear, but I took it to heart.</p><p>But when <em>should</em> you ask for help, then? I got the following advice, and I think that it’s a great starting point.</p><p><strong>Timebox yourself to a half hour. When you haven’t made a meaningful progress on your task for 30 minutes, that is when to ask for help.</strong></p><p>A lot of developers tend to avoid asking for help because they don’t want to interrupt someone, either because they’re intimidated or because they’re afraid of asking a silly question. But let me tell you something: <a href="/blog/building-better-software-by-building-better-teams/">high-performing teams ask questions</a>. High-performing individuals ask questions. If you want to increase your performance and productivity, like my friend did, asking questions is something that you need to do. Even and especially when you get unproductively stuck.</p><p>I am one of the most senior engineers on my team, and I intentionally make it a habit to ask questions that I am fairly certain I already know the answer to, in front of my team. Part of this is to confirm my understanding and get more context, but part of this is to demonstrate to everyone that asking questions is normal and good. To show that even someone with my experience and seniority still asks “silly” questions.</p><p>If you’re still nervous about asking someone for help too often, then tell your team that you’re open to feedback about that.</p><p>Help them help you.</p><h2 id="how-to-ask-for-help" style="position:relative"><a href="#how-to-ask-for-help" aria-label="how to ask for help permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>How to ask for help</h2><p>Asking for help is something that you can follow a recipe for. You will refine your recipe over time, but here is my recommended starting point.</p><ol><li><strong>Describe the problem</strong>. First, you need to describe the problem that you’re trying to solve. Describe where you’re stuck, but avoid describing all the context. Instead, link to that context. If you’re stuck on a ticket, link to that ticket. Focus on describing the part that you’re stuck on.</li><li><strong>List what you have tried so far</strong>. Write out summaries of your approaches so far and why you think they failed. This helps the other person get a sense of how you’re approaching the problem, so they can help give feedback and help you grow.</li><li><strong>Describe your next step</strong>. Finally, you need to pick a next step and describe it. This is crucial because it keeps you working on the problem while the other person gets back to you. This makes it so “asking for help” is not “giving up.”</li></ol><p>Make sure to compose the whole message upfront and send it all at once.</p><p>Here’s an example:</p><blockquote><p>Hi there. I’ve been working on <a href="https://example.com/" target="_blank" rel="nofollow noopener noreferrer">this ticket</a> but when I showed up to work this morning, Xcode just stopped compiling code. Here is the compiler error:</p><p><code class="language-text">/* compiler error goes here */</code></p><p>When I google the compiler error, I get a lot of results but none of them seem relevant to our code. I even tried including the framework listed in the compiler error, but couldn’t find anything relevant. I think maybe this error just has so many causes that I’m looking for a needle in a haystack.</p><p>I also tried pulling the from the repo to see if that would fix it, but I was already on the latest changes. I also tried rebooting, because why not?</p><p>I’m not sure what could have caused this, since the code was compiling fine yesterday. I didn’t change anything on my computer. Any ideas on where I should look next? I’m going to keep going down the rabbit hole searching for the compiler error for now.</p></blockquote><p>If I got this message from a coworker, I would immediately recognize the problem. My guess is that some readers recognize it too, but only based on their experience. It would take us a few minutes to respond and unblock you, saving you from an unproductive rabbit hole.</p><p>You can see how this message follows the recipe. It describes the problem in an appropriate level of detail and links context. It lists the approaches taken so far and the results. And it describes your next step so you can keep at it while the other person takes time to get back to you.</p><p>This message is also concise and to the point. This is actually really important, so let me explain.</p><p>The same person who told me, as an intern, that I ask for help too soon also suggested that I ask for help <em>in writing</em> (even thought we sat directly next to each other). He taught me that the process of organizing my thoughts would often lead me to new ideas when I had previously been stuck. Often, the process of writing to him to ask for help would lead me to realize the solution so I would never actually end up asking for help at all. <a href="/blog/communication-as-problem-solving/">Communicating effectively is actually a great way to solve problems</a>!</p><h2 id="conclusion" style="position:relative"><a href="#conclusion" aria-label="conclusion permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Conclusion</h2><p>As you can see, asking for help isn’t something that you do <em>instead of</em> trying to solve a problem yourself. It is just one tool in your problem-solving toolbox. It’s often the best tool to reach for when you’re unproductively stuck, but my friend Steve Hicks describes some other tools in this excellent talk:</p><div videoID="3XscuivvUzI"></div><p>A lot of developers get stuck in the trap of persistence as they grow in experience and responsibility. It might be one of those things that just naturally happens as we grow from one level of responsibly to the next. I’m not sure. It’s a behaviour that I continue to look out for in myself.</p><p>—</p><p>By the way, <a href="/blog/how-to-ask-for-developer-help/">I wrote my first blog post about how to ask for help</a> over ten years ago. It wasn’t great, and the resource I linked to in that post is no longer available. <a href="/blog/asking-for-help-in-open-source/">I tried writing the post again two years later</a>, but that advice was too specific to open source communities. Neither post captured what I told my friend, but this one does. I hope it’s helpful for you, too.</p><![CDATA[New Keyboard]]>https://ashfurrow.com/blog/new-keyboard/https://ashfurrow.com/blog/new-keyboard/Wed, 18 Sep 2024 00:00:00 GMT<p>A few months ago, I came across <a href="https://www.youtube.com/watch?v=7UXsD7nSfDY" target="_blank" rel="nofollow noopener noreferrer">this amazing video from Christian Selig detailing how he built his own keyboard</a>. And I mean <em>built</em> it. Unknown to me up to that point, there exists both the tools and community such that anyone could design and build, from scratch, their own custom computer keyboard. The printed circuit board, the case, the microcontroller firmware – everything.</p><div videoID="7UXsD7nSfDY"></div><p>I had been using an <a href="https://ergodox-ez.com" target="_blank" rel="nofollow noopener noreferrer">ErgoDox-EZ keyboard</a> since 2020 and so I was familiar with the concept of custom keyboard firmware. But I had no idea that the custom hardware was so accessible. Building something from scratch wasn’t something I was interested in doing, but I did start tinkering with my ErgoDox layout. It was a tonne of fun!</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/59f7fd1b439f48ec050e3beeb7b765d3/889fc/ergodox.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIDAQX/xAAVAQEBAAAAAAAAAAAAAAAAAAABAP/aAAwDAQACEAMQAAABWT6VTmg//8QAGRAAAwADAAAAAAAAAAAAAAAAAQIDABMi/9oACAEBAAEFAlWjAxqonMhZ05diE3tn/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFREBAQAAAAAAAAAAAAAAAAAAEBH/2gAIAQIBAT8Bh//EABwQAAICAgMAAAAAAAAAAAAAAAABETESIUFRkf/aAAgBAQAGPwKMeDaSRXhOk30i2Wz/xAAZEAEBAQEBAQAAAAAAAAAAAAABEQAhMXH/2gAIAQEAAT8h48XxUu+zYpgtq9vRkdpOmaeedzZkfu//2gAMAwEAAgADAAAAENjP/8QAFhEAAwAAAAAAAAAAAAAAAAAAAAER/9oACAEDAQE/EKhQ/8QAFREBAQAAAAAAAAAAAAAAAAAAAQD/2gAIAQIBAT8QIl//xAAeEAEAAgICAwEAAAAAAAAAAAABESEAMVFhQXGB0f/aAAgBAQABPxCd7apx5vUmC77FP6mKyBh8gfcUsnwDFJ8rPeFXXio6ayHQjV/3P//Z&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Photo of my ErgoDox on my desk with a notepad in the middle" title="Photo of my ErgoDox on my desk with a notepad in the middle" src="/static/59f7fd1b439f48ec050e3beeb7b765d3/e5166/ergodox.jpg" srcSet="/static/59f7fd1b439f48ec050e3beeb7b765d3/f93b5/ergodox.jpg 300w,/static/59f7fd1b439f48ec050e3beeb7b765d3/b4294/ergodox.jpg 600w,/static/59f7fd1b439f48ec050e3beeb7b765d3/e5166/ergodox.jpg 1200w,/static/59f7fd1b439f48ec050e3beeb7b765d3/d9c39/ergodox.jpg 1800w,/static/59f7fd1b439f48ec050e3beeb7b765d3/df51d/ergodox.jpg 2400w,/static/59f7fd1b439f48ec050e3beeb7b765d3/889fc/ergodox.jpg 3734w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>Since I was tinkering with the layout, I started thinking about my home office ergonomics more broadly. A lot has changed since I <a href="https://people.zsa.io/ash-furrow/" target="_blank" rel="nofollow noopener noreferrer">last talked about my home office setup</a>. My RSI pain is something that I have under control, but it is something that takes active management. I looked up how to adjust my chair. I had someone watch me work. I bought a keyboard tray to sit under my desk. And, I bought a new keyboard.</p><p>The thing with my ErgoDox was, I never really made the most of it after I got over the initial learning curve. I kept some bad typing habits. I had a lot of unused keys.</p><p>I could have solved these problems, and would have, but the physical size of the ErgoDox also presented some challenges on my desk setup. The keyboard is tall and wide and I wanted something lower profile.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/e36a82e7c3302065bb83d91650fa5702/d2602/voyager.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAME/8QAFgEBAQEAAAAAAAAAAAAAAAAAAgED/9oADAMBAAIQAxAAAAGcaZjdwzf/xAAaEAEBAAIDAAAAAAAAAAAAAAACAQMRABMj/9oACAEBAAEFAusWUY9igkS0Lz5j0h//xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAgBAwEBPwGo/8QAFREBAQAAAAAAAAAAAAAAAAAAABH/2gAIAQIBAT8Biv/EABwQAAICAgMAAAAAAAAAAAAAAAABERIhoiIycf/aAAgBAQAGPwLtqNW1IkTscXBLz6f/xAAcEAACAgIDAAAAAAAAAAAAAAABEQAhMVFBYbH/2gAIAQEAAT8hIK6xGGI6j2TTjIQ73HAA9njmKrO4/9oADAMBAAIAAwAAABCYH//EABcRAQEBAQAAAAAAAAAAAAAAAAEAETH/2gAIAQMBAT8QDBzt/8QAFxEBAQEBAAAAAAAAAAAAAAAAAQARMf/aAAgBAgEBPxBcveX/xAAdEAEBAAMAAgMAAAAAAAAAAAABEQAhMVGhYXGB/9oACAEBAAE/EHSxdloToXnMoUCAwr0+sETIuzXymPsKpm11z894ws+BHi5davTF9Z//2Q==&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Photo of my new setup, including a keyboard tray" title="Photo of my new setup, including a keyboard tray" src="/static/e36a82e7c3302065bb83d91650fa5702/e5166/voyager.jpg" srcSet="/static/e36a82e7c3302065bb83d91650fa5702/f93b5/voyager.jpg 300w,/static/e36a82e7c3302065bb83d91650fa5702/b4294/voyager.jpg 600w,/static/e36a82e7c3302065bb83d91650fa5702/e5166/voyager.jpg 1200w,/static/e36a82e7c3302065bb83d91650fa5702/d9c39/voyager.jpg 1800w,/static/e36a82e7c3302065bb83d91650fa5702/df51d/voyager.jpg 2400w,/static/e36a82e7c3302065bb83d91650fa5702/d2602/voyager.jpg 4032w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>So I bought <a href="https://www.zsa.io/voyager" target="_blank" rel="nofollow noopener noreferrer">ZSA’s Voyager</a>. It is also a split mechanical keyboard, smaller, and with low profile keys. It feels great! I got the clickiest key switches and they feel so satisfying. It’s also much smaller. ZSA has a to-scale printout of all their keyboards, so here is the Voyager on top of the ErgoDox-EZ.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/e1247b86a6c1b2086eb3dd5fcf320fab/d2602/size-comparison.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAQFA//EABcBAAMBAAAAAAAAAAAAAAAAAAABAgP/2gAMAwEAAhADEAAAAdHYz0i5LFp//8QAGhAAAgMBAQAAAAAAAAAAAAAAAhIAAQMEIf/aAAgBAQABBQLD0aWFqpc+tRoZNf8A/8QAFREBAQAAAAAAAAAAAAAAAAAAAQD/2gAIAQMBAT8BhL//xAAVEQEBAAAAAAAAAAAAAAAAAAAAIf/aAAgBAgEBPwFX/8QAGhAAAgIDAAAAAAAAAAAAAAAAAAECETFRYf/aAAgBAQAGPwKF6MDQlwtFn//EABkQAQADAQEAAAAAAAAAAAAAAAEAESFBMf/aAAgBAQABPyFHuQHGXDsLfYiiKeRyLiqf/9oADAMBAAIAAwAAABD8z//EABYRAQEBAAAAAAAAAAAAAAAAAAARIf/aAAgBAwEBPxBHr//EABYRAQEBAAAAAAAAAAAAAAAAAAABEf/aAAgBAgEBPxBZp//EABoQAQEBAAMBAAAAAAAAAAAAAAERACExcWH/2gAIAQEAAT8QOgCVH4Z2dvcKncF8ME4A5OJjyQSglyMqg4Xf/9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Voyager keyboard sitting on top of to-scale ErgoDox EZ" title="Voyager keyboard sitting on top of to-scale ErgoDox EZ" src="/static/e1247b86a6c1b2086eb3dd5fcf320fab/e5166/size-comparison.jpg" srcSet="/static/e1247b86a6c1b2086eb3dd5fcf320fab/f93b5/size-comparison.jpg 300w,/static/e1247b86a6c1b2086eb3dd5fcf320fab/b4294/size-comparison.jpg 600w,/static/e1247b86a6c1b2086eb3dd5fcf320fab/e5166/size-comparison.jpg 1200w,/static/e1247b86a6c1b2086eb3dd5fcf320fab/d9c39/size-comparison.jpg 1800w,/static/e1247b86a6c1b2086eb3dd5fcf320fab/df51d/size-comparison.jpg 2400w,/static/e1247b86a6c1b2086eb3dd5fcf320fab/d2602/size-comparison.jpg 4032w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>I’ve been using it for a few weeks now and have mostly regained my typing speed. It has fewer keys that the ErgoDox, which has pushed me to be creative with my layout. Honestly, I have been having a blast! My layer is <a href="https://configure.zsa.io/voyager/layouts/NWX4X/YGQ34/4" target="_blank" rel="nofollow noopener noreferrer">open source</a> if you’re interested. I have made fifty changes so far and forked it twice.</p><p>I thought I might collect some thoughts and lessons. If your keyboard is programmable, maybe this could be of interet to you.</p><ul><li>Blank keycaps are not worth it, at least for me.</li><li>I was only using one layer above my base layer. By using two, I could separate symbols and navigation onto their own layers. This let me put shifted symbols like <code class="language-text">&amp;</code> onto their own keys, which reduced how much shifting I had to do.</li><li>My shoulders were spread to wide. I had gotten used to keeping notebook between my keyboard halves, but over time I had opened up my chest too much.</li><li><a href="https://precondition.github.io/home-row-mods" target="_blank" rel="nofollow noopener noreferrer">Home row mods</a> remove the need for dedicated shift, command, alt/option, and control keys. I needed to use per-key tapping terms, as low as 150ms for my left index finger (shift).</li><li>I thought that I <strong>needed</strong> left-hand only command-tab to switch between applications while mousing, but I don’t. If you can be flexible where you can be, it helps you be rigid where you need to be.</li><li>I was basically only shifting with my left hand, even for awkard letters like Q. Home row mods have been a good way to re-train myself to use both hands together.</li><li>When I want to change how I do somethting on my layout, I need to remove the old way. I need to force myself to make the change. Cortés and ships and all that.</li><li>Hover typing was not difficult to learn. I now try to use my palm rest only when resting, and not while typing.</li><li>I added <a href="https://blog.zsa.io/2101-introducing-tap-dance/" target="_blank" rel="nofollow noopener noreferrer">Tap Dance</a> keys for press-and-hold actions for undo, cut, copy, and paste. I’m not sure I love them yet, and <a href="https://github.com/qmk/qmk_firmware/issues/19574" target="_blank" rel="nofollow noopener noreferrer">they interfere with caps WORD</a>.</li><li>Up until now, I had been holding modifers for a lot of text navigation with arrow keys that were already on the second row. That means hold multiple keys while tapping yet others. For example, select the next word with alt-shift-(navigation layer modifer and right arrow key). Now, I use dedicated keys on my navigation layer to move between words, to forward- and backward-delete words, etc.</li><li>There is value in muscle memory. Don’t over-optimize for perfection; the keyboard should fit you, not the other way around.</li><li>I was sleeping on <a href="https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/" target="_blank" rel="nofollow noopener noreferrer">hyper keys</a>. I now have a single key that I can assign to <em>any</em> shortcut with reasonable confidence of avoiding conflicts.</li><li>Tools like <a href="https://github.com/koekeishiya/skhd" target="_blank" rel="nofollow noopener noreferrer">skhd</a>, <a href="https://www.raycast.com" target="_blank" rel="nofollow noopener noreferrer">Raycast</a>, and <a href="https://shortcat.app" target="_blank" rel="nofollow noopener noreferrer">Shortcat</a> open up possibilities to use the keyboard far less.</li><li>Wireless is not that important to me. I don’t <em>like</em> wires, but I do actually prefer a wired keyboard. By using a keyboard tray, the wires are effectively hidden anyway.</li><li><a href="https://tenforward.social/@ashfurrow/113160750825678795" target="_blank" rel="nofollow noopener noreferrer">Cat Mode</a></li></ul><iframe src="https://tenforward.social/@ashfurrow/113160750825678795/embed" class="mastodon-embed" style="max-width:100%;border:0;margin-bottom:50px" width="600" height="600" allowfullscreen=""></iframe><script src="https://tenforward.social/embed.js" async=""></script><p>This has all been a great reminder of the joy of investing in my own tools and productivity. There was once a time where I had quite a nice <a href="https://gist.github.com/ashfurrow/3865eed417a5fbe8402708e2c706eea6/revisions" target="_blank" rel="nofollow noopener noreferrer">well-documented setup</a>. But time, entropy, and Apple’s locking down of macOS have left me using close to a stock setup. I’m excited to be changing that.</p><p>I have spent hours over the past two months watching videos of keyboard enthusiasts explaining their layouts and building their own keyboards. It has been helpful and I want to contribute something back. I am a writer, though, not a YouTuber. So this is my contribution.</p><p>Having learned a lot about what I want from a keyboard, I think I <em>might</em> actually want to build my own. Someday. I confidently know what I would want now: a more aggressive pinky stagger and a third thumb cluster button. Maybe even one fewer rows of keys. I’m looking at the <a href="https://github.com/GEIGEIGEIST/TOTEM" target="_blank" rel="nofollow noopener noreferrer">totem</a>. We’ll see.</p><p>I’ve always had <a href="https://ashfurrow.com/blog/craft-and-tooling/" target="_blank" rel="nofollow noopener noreferrer">an interest in developer tooling</a> (even if my open source contributions have tapered off for now). I have built my own <a href="https://github.com/Moya/Moya" target="_blank" rel="nofollow noopener noreferrer">software libraries</a>, <a href="https://github.com/ashfurrow/danger-swiftlint" target="_blank" rel="nofollow noopener noreferrer">CI culture-as-linter plugins</a>, and <a href="https://github.com/ashfurrow/blog" target="_blank" rel="nofollow noopener noreferrer">even this blog</a>. It just feels natural that I would take an interest and joy in building and programming my own keyboard. Like how a skilled woodworker builds their perfect tablesaw jig. <em>Their</em> perfect jig.</p><p>For now, I will settle for “only” programming the firmware! There is enough to keep me busy for a long time.</p><![CDATA[One Year At Float]]>https://ashfurrow.com/blog/one-year-at-float/https://ashfurrow.com/blog/one-year-at-float/Mon, 09 Sep 2024 00:00:00 GMT<p>Last August, <a href="/blog/what-next/">after much reflection</a>, <a href="/blog/joining-float/">I joined Float</a>. After a year, I thought it was important to check in with myself and see how I’m doing. How I’m feeling.</p><p>The tl;dr here is: I am proud of what I’ve accomplished at Float so far and I feel like I still have much more to accomplish. This is a good state of mind for me, <a href="/blog/getting-happy-with-email/#be-judicious-with-recruiters">it’s what kept me at Artsy for seven years</a>. My plan is to continue making Float the kind of place where I want to be for a long time.</p><h2 id="drive" style="position:relative"><a href="#drive" aria-label="drive permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Drive</h2><p>Most of my career has been spent in startups of various sizes. Recently, I tried working at a large publicly-traded company. Upon reflection, I don’t think my time was well spent there. The work I did was good, but not great. The scale of my impact was impressive, relatively speaking. My work was valuable, if not valued.</p><p>Returning to an early-stage startup has felt like a breath of fresh air.</p><p>It is a challenge. I feel challenged and I like it.</p><p>I joined in late August to lead mobile development and by early December, <a href="https://floatfinancial.com/introducing-the-float-mobile-app/" target="_blank" rel="nofollow noopener noreferrer">Float had launched its mobile app on Android and iOS</a>. Financial services was a whole new domain to me and I had to get up to speed <em>fast</em>. I learned Float’s existing products, met with Float’s customers, and asked so many questions. At the same time, I guided our small team through the planning, design, build, test, and deploy phases of a new product.</p><p>All in three months.</p><p>I learned a lot. The most valuable lessons were what I learned about myself.</p><p>It turns out that I actually respond really well to external pressure. This seems obvious to me now, but I had forgotten at some point. The only catch is: I need to understand <em>why</em> something is important. Extrinsic motivation doesn’t drive me, but when I understand why something is important then my intrinsic motivation kicks in.</p><p>For example, just two days before our app launch, we discovered a show-stopping bug. The kind of bug that would scupper the launch. Fixing the bug demanded some after-hours work with other team members. Everyone understood the importance of fixing the bug to unblock the launch. That understanding gave me the intrinsic motivation – the drive – to get it done. We identified the problem, fixed it gracefully, and deployed that fix to unblock our launch.</p><p>I haven’t felt that kind of thrill in a long time. It reminded me of <a href="https://artsy.github.io/blog/2019/11/14/diagnosing-our-radiation-problems/" target="_blank" rel="nofollow noopener noreferrer">my best moments at Artsy</a>. I had been on-call during a multi-day incident and when it was over, my coworker told me:</p><blockquote><p>It’s rare and odd to say dealing with incident was fun, but with your help it actually was productive and fun.</p></blockquote><p>My time at Float has reconnected me with my drive and with my vocation.</p><h2 id="remote-life" style="position:relative"><a href="#remote-life" aria-label="remote life permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Remote Life</h2><p>I have lots of experience working remotely. My entire first year at Artsy was remote across an ocean. I thought I knew how to work remotely, but the pandemic was a shift for everyone. Since then, any job I’ve worked at has been <em>as a fully-remote worker</em>. Ironically, this taught me the value of in-person interactions.</p><p>At home in my office, I can get a lot of code written. But anyone who has worked with me would tell you that the code I write is not always the most important contribution I make. The relationships with my coworkers and the context I gather helps me understand what is the most important thing to do at any moment. Sometimes that is writing code. Often it’s something else.</p><p>During two years at my previous employer, I got to meet my coworkers in-person <em>once</em>. In contrast, I’ve actually lost track of how many times I’ve met my coworkers in-person at Float. I forgot how important these connections are for me and for my work.</p><p>I feel grateful and privileged to be able to both work remotely from New Brunswick <em>and</em> develop in-person relationships on a high-performing team. It almost feels like a responsibilty, to take advantage of this opportunity to get exactly what I want out of life, personally and professionally.</p><h2 id="reconnecting-with-myself" style="position:relative"><a href="#reconnecting-with-myself" aria-label="reconnecting with myself permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Reconnecting with Myself</h2><p>My first year at Float has been filled with challenges, both at work and in my personal life.</p><p>I feel a familiar sense of accomplishment, but one that I haven’t felt in a long time. It’s odd. Looking back, I think I started avoiding difficulty. I remember doing hard things but I think that the trauma of the pandemic had pushed me to prioritize comfort. It’s reductive to blame this entirely on the pandemic, but <em>you</em> try living in Manhattan and having surgery in April 2020. The experience changed me.</p><p>Last summer, I was suddenly thrown into a job search. It was a huge challenge. My comfort was ripped away from me. I knew the stakes so I took the task of finding a new job seriously. And even though I wanted to get a job as soon as possible (so I could feel secure), I took the next month off to tend to my personal life and reflect on what <a href="/blog/what-next/">I wanted next in my career</a>. This was crucial. Knowing exactly what I was looking for gave me a lot of confidence. Managing the stress of the job search became part of the challenge, too.</p><p>At some point, I realized that I had become cautious. Conservative in my career. Quiet at work. Afraid to rock the boat.</p><p>Maybe it has to do with the pandemic. Maybe it has to do with getting older.</p><p>There is comfort in comfort, but there is security in resiliency.</p><p>Float has presented me with a lot of challenges. Some are challenges shared by every startup at Float’s stage. Some are unique challenges that I wouldn’t find elsewhere. They were all challenges to me. By tackling those challenges head-on and overcoming them in my own unique way, I have reonnected with my resiliency.</p><p>By spending half my career at Artsy, I had learned to work with art-adjacent people solving problems for the art world. Float solves problems for businesses. I work with business-adjacent people. Ideas and opinions that are “taken as read” in one place would need to be argued from first principles at the other. It shouldn’t be surprising that some skills that worked at Artsy don’t work at Float – or, at least they needed to be modified.</p><p>Float has given me a new lens with which to look at myself and my career. This year has seen me reconnect with the part of myself that isn’t afraid to take risks, isn’t afraid to speak up, and isn’t afraid to rock the boat.</p><p>I feel confident again. Outspoken. Intent on doing what is right.</p><h2 id="building-again" style="position:relative"><a href="#building-again" aria-label="building again permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Building Again</h2><p>Most software development is modifying a codebase that already exists; building an entirely new piece of software is rare and exciting. It’s also very risky. You need to lay a solid foundation, knowing that your foundation will almost certainly need to change. You need to leave the right amount of wiggle room around specific decisions so you can pivot quickly later. It’s very exciting.</p><p><a href="/blog/building-better-software-by-building-better-teams/">I applied my professional philosophy</a> and it worked. I focused on <em>learning how to build a great product</em> as a team, and lo: a great product was made, as if as a byproduct. This was a team effort, and I take a lot of pride in my supportive leadership. I made sure at every critical step, from <code class="language-text">git init</code> to <code class="language-text">yarn release</code>, we worked together as team so we could all share the sense of accomplishment.</p><p>After this frenzy of product development and launch, I had the holiday break to catch my breath and think about what to do next. I hit the ground running in January, putting plans into action and gathering context for my next phase of technical, cultural leadership at Float. Stay tuned for more.</p><h2 id="wrap-up" style="position:relative"><a href="#wrap-up" aria-label="wrap up permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Wrap Up</h2><p>I feel it in my bones that my time at Float has already been worthwhile. I’ve grown. I am more competent and confident as a leader now than when I joined. I learned a lot about software development and my technical skills are sharper than ever. I’ve built products to a level of quality that I am satisfied with and I’ve seen the impact that those products have on customers.</p><p>But most importantly, I’ve been an open an honest version of myself. I have “brought my whole self to work” at a time when <a href="/blog/new-year-new-me/">that sense of self is shifting</a>. The <strong>first</strong> criteria in my job search was to find a company with good people. My team have made it easy to be that honest self. When I have “done technical leadership” at Float in my own unique way, I’ve been encouraged to go further. It’s a virtuous cycle.</p><p>So much of what I bring to a company is building up context and relationships. I want to stay at companies a long time because I benefit from increasing returns the longer I am there. Part of my work is making the company worth staying at for a long time, and I feel empowered to make that happen at Float.</p><hr/><p>No blog post from someone celebrating their first year at a growing startup would be complete without a link to <a href="https://apply.workable.com/floatcard/" target="_blank" rel="nofollow noopener noreferrer">Float’s careers page</a>. I joined Float after meeting with one of its software engineers for a candid, honest conversation about the company. I would be chuffed to meet you and have a similar conversation, <a href="/about">so reach out</a>.</p><![CDATA[New Year, New Me]]>https://ashfurrow.com/blog/new-year-new-me/https://ashfurrow.com/blog/new-year-new-me/Mon, 15 Jan 2024 00:00:00 GMT<p>I’ve been reluctant to write this post. I have a history of <a href="/blog/therapys-end/">writing blog posts</a> <a href="/blog/mood-improvements/">where I announce</a> <a href="/blog/all-i-can-say-is-im-excited/">my mental health</a> <a href="/blog/metrics-for-the-unmeasurable-mood/">has improved</a>. But it never quite sticks. </p><p>The last 16 months have been the most challenging time of my life. Without going into detail, I faced a series of personal crises which compounded. My own personal Kepler Syndrome. It felt like every time I thought things were finished breaking, something new would go wrong.</p><p>But things didn’t just go wrong. A lot of things went right.</p><p>The most important thing I did throughout this time – the thing that has helped and continues to help the most – has been to become a student of my self. I’ve gained a deeper understanding of myself than I knew was possible.</p><p>Growth can’t happen without discomfort. It’s true when we grow from children to adults; it’s true when we physically train; it’s true when we learn new professional skills; and, it’s true when we grow as a person.</p><p>I didn’t <em>need</em> my life to unravel in order to embrace this kind of growth, but I think that the pain and discomfort of last 16 months made it easier to look at the hard problems. It had been difficult to acknowledge the problems I had been avoiding while I was relatively comfortable. But it became much easier once I no longer had a stake in that (illusory) comfort.</p><p>I don’t have solutions to all the problems, but I no longer need everything to <em>be</em> solved.</p><hr/><p>There is a growing pushback among my generation to New Year’s Resolutions. The mantra of “New Year, new me” is being rightfully dismantled as unrealistic and self-defeating. </p><p>And that’s great, I fully support it.</p><p>But I woke up this year, literally looked at myself in the mirror, and I realized that I had <em>already</em> grown into a new person. A more authentic me. It’s not that a New Year will spur me on to become a “new me”, but that hard work and an open heart have already led me down that path.</p><p>New Year, new me.</p><![CDATA[Joining Float]]>https://ashfurrow.com/blog/joining-float/https://ashfurrow.com/blog/joining-float/Mon, 21 Aug 2023 00:00:00 GMT<p>I’m excited to announce that today I am joining <a href="https://floatcard.com" target="_blank" rel="nofollow noopener noreferrer">Float</a>! </p><p>During <a href="/blog/job-search-retrospective/">my job search</a>, I got practiced at introducing myself. My background, experience, and what I’m looking for next. What I wanted is:</p><blockquote><p>I want to do my best work. When I look back at my career so far, I’ve done my best work on smaller, focused teams aligned on building a product that solves actual user problems. But as important as alignment on <strong>what</strong> the team builds, I am looking for alignment on <strong>how</strong> we build it. A focus on curiosity, growth, and kindness.</p></blockquote><p>Float hit those marks for me.</p><p>The business model of Float is honourable: they make a quality product and then sell it to customers. It’s very direct and it aligns all the incentives nicely. And remember how I want to make really great user experiences? With Float, a great user experience <em>is the product</em>.</p><p>Speaking with engineers, managers, product managers, and others, I felt like we were on the same wavelength. Often while listening, I would think of a follow-up question to ask; then they’d answer it before wrapping up their thought. It showed that we were thinking about the same kinds of things. We got to skip over the obvious questions and jump right to the interesting ones.</p><p>One other thing: Float is a Canadian team building software for Canadian customers. After seven years working for an NYC-based fine art startup, then two years working for a global e-commerce platform… I’m looking forward to solving problems that are closer to home. </p>
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<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">
<channel>
<title>
<![CDATA[ Ash Furrow's Blog ]]>
</title>
<description>
<![CDATA[ Compassionate Software Developer ]]>
</description>
<link>https://ashfurrow.com</link>
<generator>GatsbyJS</generator>
<lastBuildDate>Sun, 02 Mar 2025 18:50:05 GMT</lastBuildDate>
<item>
<title>
<![CDATA[ Tarmak ]]>
</title>
<description>
<![CDATA[ My keyboard rabbit hole has inevitably brought me to the world of alternate keyboard layouts. While I briefly used Dvorak in university, I… ]]>
</description>
<link>https://ashfurrow.com/blog/tarmak/</link>
<guid isPermaLink="false">https://ashfurrow.com/blog/tarmak/</guid>
<pubDate>Sun, 02 Mar 2025 00:00:00 GMT</pubDate>
<content:encoded><p>My <a href="/blog/keyboard-rabbit-hole/">keyboard rabbit hole</a> has inevitably brought me to the world of alternate keyboard layouts. While I briefly used Dvorak in university, I was using too many different computers to make it really stick for me.</p><p>I had on heard of <a href="https://colemak.com/" target="_blank" rel="nofollow noopener noreferrer">Colemak</a> from <a href="https://www.youtube.com/watch?v=7UXsD7nSfDY" target="_blank" rel="nofollow noopener noreferrer">Christian Selig’s keyboard video</a> less than a year ago. It sounded great – a much better design than Dvorak that used QWERTY as a base. A lot of the keys don’t actually change, and only two change which hand you use. I kept hearing how comfortable and fun it was to use Colemak, but I wasn’t too keen to give up a lifetime of QWERTY muscle memory while having to type at my job.</p><p>That changed when a coworker of mine made the switch to Colemak using <a href="https://dreymar.colemak.org/tarmak-steps.html" target="_blank" rel="nofollow noopener noreferrer">Tarmak</a>. Tarmak starts at QWERTY and makes thoughtful, small changes over time to gradually move toward full Colemak. Typing speed goes down, but not as dramatically as a cold-turkey switch.</p><p>Well. Alright fine. Let’s go.</p><p>It’s been a month and things are going really well.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/bbe5b0c99ba47deab6c489977e5434d8/a1a4b/speed.png" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:29.000000000000004%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA1ElEQVQY04VQ2VLDMBDzf8RpTOIcPtIEprRQKJm0//9NYlZhGSgPPGhs7aFdrfHNM+JwgatmlOWI3W7PV3HP/4OZ0orYv6PzL3+EBLbMv7jivk5jRhqEDN0Z1iY4N1PEWhHKqB+emC9sYp7vV48ISN2W22JGE60/ccspXdG3r+Q5fGAfV4TuDN8cyce4wNcHClTVxH8aLox3/rQJymSxPecbnHtkgaCpDxwW+jeMYSGXjTkorchhIdrmyLgMMHoHEdK7fFuzai2jKCK52pX6n6fQW38C9Z2tEzxqUwwAAAAASUVORK5CYII=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Graph of my typing speed" title="Graph of my typing speed" src="/static/bbe5b0c99ba47deab6c489977e5434d8/c1b63/speed.png" srcSet="/static/bbe5b0c99ba47deab6c489977e5434d8/5a46d/speed.png 300w,/static/bbe5b0c99ba47deab6c489977e5434d8/0a47e/speed.png 600w,/static/bbe5b0c99ba47deab6c489977e5434d8/c1b63/speed.png 1200w,/static/bbe5b0c99ba47deab6c489977e5434d8/d61c2/speed.png 1800w,/static/bbe5b0c99ba47deab6c489977e5434d8/a1a4b/speed.png 2054w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>Every time I’ve made a change to the layout, my typing speed has deceased to about the same level (unless you are my boss, in which case my typing speed was unchanged and I am as productive as ever). But with each change, it’s taken me longer to get to the point where I feel ready to make the next change. Throw in a week where I was travelling for work and couldn’t practice as much, and things are going slowly.</p><p>I am on the last step, which is where my coworker rushed things and regretted it. I benefit from his experience of rushing at the end, knowing that rushing would defeat the purpose of making small changes.</p><p>I’ve decided to take an extra week before moving on. I only make the layout changes on Friday so I can practice over the weekend, so I’ll look forward to making that final change in just five days!</p><p>One under-rated benefit of using Tarmak is that I’ve gotten to appreciate the thoughtfulness of Colemak on a deeper level. While I have been frustrated during this transitionary period, I can feel the fun and comfort of using Colemak that I had heard so much about.</p><p>The steps I’ve taken are <a href="https://configure.zsa.io/my_layout/view/bVg75" target="_blank" rel="nofollow noopener noreferrer">here</a> if you’re interested. I’m migrating to the Colemak-DH variant specifically, and would recommend it particularly if you’re using a columnar-staggered keyboard.</p></content:encoded>
</item>
<item>
<title>
<![CDATA[ Personal Timeline ]]>
</title>
<description>
<![CDATA[ This week at work, I'm participating in a group event where we share personal timelines of ourselves, to get to know each other better. I… ]]>
</description>
<link>https://ashfurrow.com/blog/personal-timeline/</link>
<guid isPermaLink="false">https://ashfurrow.com/blog/personal-timeline/</guid>
<pubDate>Tue, 18 Feb 2025 00:00:00 GMT</pubDate>
<content:encoded><p>This week at work, I’m participating in a group event where we share personal timelines of ourselves, to get to know each other better. I thought I’d share my timeline in case anyone was interested.</p><div entries="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]"></div></content:encoded>
</item>
<item>
<title>
<![CDATA[ Keyboard Rabbit Hole ]]>
</title>
<description>
<![CDATA[ Content warning: this post contains medical discussions. Quickly after I began my career as a full-time software developer, I developed pain… ]]>
</description>
<link>https://ashfurrow.com/blog/keyboard-rabbit-hole/</link>
<guid isPermaLink="false">https://ashfurrow.com/blog/keyboard-rabbit-hole/</guid>
<pubDate>Sun, 17 Nov 2024 00:00:00 GMT</pubDate>
<content:encoded><p><em>Content warning: this post contains medical discussions.</em></p><p>Quickly after I began my career as a full-time software developer, I developed pain in my left wrist. At first, it was only occasional. But it became consistent. Then it started showing up in my right wrist.</p><p>I wish that I had done something about my wrist pain sooner. And I wish that I had sought professional help sooner, too. Don’t worry, though, because the story <a href="https://ashfurrow.com/blog/learning-to-walk/" target="_blank" rel="nofollow noopener noreferrer">has a happy ending</a>. It turns out that my posture was the root of my pain. Through exercise, stretching, and physiotherapy, I improved my posture and mostly relieved my pain.</p><p>Mostly.</p><p>Today, the pain is something I manage. It still flares up, but I now have the tools I need to deal with it. One of those tools has been ergonomics. I’ve tried wrist splints, better chairs, sit-stand desks, and… ergonomic keyboards.</p><p>With keyboards, people often ask about typing speed. And I simply do not care about speed. People online often ask if an ergonomic keyboard will help them type faster, and I doubt it. Maybe! But who cares. My goal is avoiding RSI injuries. For what it’s worth, I currently type at around 80wpm. That is fast enough for me.</p><p>The biggest takeaway from my experience is: <strong>you should not meet the keyboard, the keyboard should meet you.</strong> If you have to reach for the keyboard, move it closer to you. Everything in the blog post applies this principle in one way or another.</p><p>This blog post is about the rabbit hole that I’ve been falling down in spurts and starts for over a decade. Let’s start from the beginning.</p><h1 id="my-journey-so-far" style="position:relative"><a href="#my-journey-so-far" aria-label="my journey so far permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>My Journey So Far</h1><p>In 2015, I bought my first “split keyboard”, a <a href="https://kinesis-ergo.com/shop/freestyle2-mac/" target="_blank" rel="nofollow noopener noreferrer">Kinesis Freestyle 2</a> with the “VIP” tenting kit. This is a great keyboard and it remains my go-to recommendation for any programmer who wants a better keyboard. It’s basically a “ten key-less” keyboard, with an “inverted T” arrow cluster.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/67b9f9dad6859b7cdc470a664ebe75da/768c6/kinesis.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAEDBP/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAFSHEDSR//EABkQAAMBAQEAAAAAAAAAAAAAAAECAwASE//aAAgBAQABBQLtpb3c4zJJi3VIE5JOo//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABwQAAICAgMAAAAAAAAAAAAAAAARAQIDEiEicf/aAAgBAQAGPwJVvMHbKPiR7P0hC3P/xAAcEAEAAwACAwAAAAAAAAAAAAABABEhMUFxgdH/2gAIAQEAAT8hAVLms+TWIeSVQA9y+O0AXmFMoYnqf//aAAwDAQACAAMAAAAQBz//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/ED//xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAgBAgEBPxCq/8QAHRABAQACAQUAAAAAAAAAAAAAAREAIVExQWGBkf/aAAgBAQABPxCtkWJ187wlAEkKJ6MfyKiZdeMeKTrGE53ad3nCpC2bz7n/2Q==&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Kinesis Freestyle 2 at my desk at Artsy" title="Kinesis Freestyle 2 at my desk at Artsy" src="/static/67b9f9dad6859b7cdc470a664ebe75da/e5166/kinesis.jpg" srcSet="/static/67b9f9dad6859b7cdc470a664ebe75da/f93b5/kinesis.jpg 300w,/static/67b9f9dad6859b7cdc470a664ebe75da/b4294/kinesis.jpg 600w,/static/67b9f9dad6859b7cdc470a664ebe75da/e5166/kinesis.jpg 1200w,/static/67b9f9dad6859b7cdc470a664ebe75da/d9c39/kinesis.jpg 1800w,/static/67b9f9dad6859b7cdc470a664ebe75da/df51d/kinesis.jpg 2400w,/static/67b9f9dad6859b7cdc470a664ebe75da/768c6/kinesis.jpg 3264w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>The keyboard is split into two halves. It “tents”, which means the two halves are raised in the middle. Both of these are important for ergonomics because it gives you more degrees of control to “bring the keyboard to you.” It also has integrated palm rests, which some people prefer (I did at the time). It comes in both Mac and Windows variants, and they’ve added mechanical switch variants since then too (mine was a membrane keyboard). One downside is that the two halves are connected by a wire that you can’t change; the halves can only be 9 inches apart.</p><p>But those are small tradeoffs for what you get: an natural posture while typing. Split keyboard solve the most common ergonomic problems while typing:</p><ul><li><strong>Slouching.</strong> People tend to pull their shoulders into a rounded, forward position to try to meet the keyboard. A split keyboard like this lets you position the two halves so that your chest stays open.</li><li><strong>Ulnar deviation.</strong> To use both hands at a normal keyboard, you need to kind of bend your wrists out. A split keyboard lets your hands rest naturally while typing.</li><li><strong>Wrist pronation.</strong> To use a normal keyboard that sits flat on a desk, you need to kind of twist your forearms to flatten your hands. A tented keyboard lets your forearms rest naturally while typing.</li></ul><p>There are other issues, too, but these are the common issues. And a split keyboard can help with all of them.</p><p>A keyboard should meet you where you are; you should not meet your keyboard.</p><p><strong>Getting a split keyboard is the single best thing you can purchase to improve your ergonomics as a programmer.</strong> Ideally, you are stretching, exercising, and taking movement breaks at work. But if you want to make a change to your workspace <em>setup</em>, then getting a split keyboard is the first thing you need to purchase. Everything I discuss in this, from this point forward, offers diminishing returns.</p><p>But diminishing returns are still returns.</p><p>Back to my journey. At the beginning of the pandemic, I ordered an <a href="https://ergodox-ez.com/" target="_blank" rel="nofollow noopener noreferrer">ErgoDox EZ</a> from ZSA. The ErgoDox EZ is <em>also</em> a split keyboard that <em>also</em> supports tenting, but it has a few distinct features over the Kinesis Freestyle 2. It’s a mechanical keyboard with swappable keyswitches. The wire connecting the two halves is a standard TRRS audio cable and can be swapped out for any length of cable you need. The keyboard can be fully programmed, either with firmware code directly or ZSA’s fantastic configurator. The ErgoDox EZ also has “thumb clusters” so your thumbs can do more than just hit the spacebar.</p><p>But most striking is that it isn’t “row staggered” in the way most keyboards are. Instead, it is <em>column</em> staggered. In principle, this means more up-and-down finger movement and less side-to-side finger movement. Less movement is better (“bring the keyboard to you”).</p><p>I had been looking at it for a while and a coworker had one, so I pulled the trigger. This was my second mechanical keyboard, and I loved it.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/047ff5a4f974c606fb3967a02d1289aa/d2602/ergodox_cat.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAQBAwX/xAAVAQEBAAAAAAAAAAAAAAAAAAACAf/aAAwDAQACEAMQAAABVax7zXiBj//EABsQAAICAwEAAAAAAAAAAAAAAAERAgMABBIT/9oACAEBAAEFAqpky5dktg9NZ6l1ox//xAAWEQEBAQAAAAAAAAAAAAAAAAAAEiH/2gAIAQMBAT8BxT//xAAWEQEBAQAAAAAAAAAAAAAAAAAAEiH/2gAIAQIBAT8B1L//xAAbEAACAwADAAAAAAAAAAAAAAAAAQIRIRAiQf/aAAgBAQAGPwKKXhctHXGs7I//xAAbEAADAQADAQAAAAAAAAAAAAAAAREhMUFRYf/aAAgBAQABPyHjgPtL3wxDL0JnthRW/wCQe3Wn/9oADAMBAAIAAwAAABA37//EABYRAQEBAAAAAAAAAAAAAAAAAAEAMf/aAAgBAwEBPxAQZKHL/8QAGBEBAQADAAAAAAAAAAAAAAAAAQARMUH/2gAIAQIBAT8QRO4z7f/EABsQAQACAwEBAAAAAAAAAAAAAAEAESExYUGB/9oACAEBAAE/EHqAFF2Xsnj8BWAmtQAXGgpp7AdnRCsmYWP2Vx5qfU7U/9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="ErgoDox EZ with my cat in between the two halves, as is customary" title="ErgoDox EZ with my cat in between the two halves, as is customary" src="/static/047ff5a4f974c606fb3967a02d1289aa/e5166/ergodox_cat.jpg" srcSet="/static/047ff5a4f974c606fb3967a02d1289aa/f93b5/ergodox_cat.jpg 300w,/static/047ff5a4f974c606fb3967a02d1289aa/b4294/ergodox_cat.jpg 600w,/static/047ff5a4f974c606fb3967a02d1289aa/e5166/ergodox_cat.jpg 1200w,/static/047ff5a4f974c606fb3967a02d1289aa/d9c39/ergodox_cat.jpg 1800w,/static/047ff5a4f974c606fb3967a02d1289aa/df51d/ergodox_cat.jpg 2400w,/static/047ff5a4f974c606fb3967a02d1289aa/d2602/ergodox_cat.jpg 4032w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>The ErgoDox EZ taught me all my mistakes. All the lazy things I was doing, the fingers I was over-using and under-using. I had always been able to type without looking, but the ErgoDox was the first time I practiced touch typing with proper form. It took a few months of practice to totally get used to, but I got it at the beginning of the pandemic so I had some time to kill.</p><p>I used the ErgoDox EZ for over four years. I didn’t spend too much time customizing it. All the keys were blank, with no legends. Honestly, I didn’t use a lot of the keys at all. (<a href="https://people.zsa.io/ash-furrow/" target="_blank" rel="nofollow noopener noreferrer">I talk about my ErgoDox EZ setup in more detail in this interview.</a>) When I joined Float, I got a home-office stipend that I decided to use on <a href="https://drop.com/buy/drop-biip-mt3-extended-custom-keycap-set" target="_blank" rel="nofollow noopener noreferrer">new keycaps</a> for the ErgoDox EZ, which was the beginning of me further customizing my keyboard layout.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/a3421b607f359fb78b4c877545fea14f/d2602/ergodex_colours.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIDAQT/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAZZytmqTD//EABsQAAMAAgMAAAAAAAAAAAAAAAABAgMEERIT/9oACAEBAAEFAnqrveukOKRGWpPXLA65P//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABkQAQEBAQEBAAAAAAAAAAAAAAEAIREiMf/aAAgBAQAGPwJBy863wnh3tiW3/8QAGxABAAICAwAAAAAAAAAAAAAAAQARMUEhcZH/2gAIAQEAAT8hDZxtgAW7IrXswkEtnUylXliq+TP/2gAMAwEAAgADAAAAEGvv/8QAFhEAAwAAAAAAAAAAAAAAAAAAARAR/9oACAEDAQE/EDF//8QAFxEBAAMAAAAAAAAAAAAAAAAAAAERIf/aAAgBAgEBPxCLa//EABsQAQADAQEBAQAAAAAAAAAAAAEAESExoUGR/9oACAEBAAE/EFiNpcsfoB3vcmPK0SXLFd/D2bTJH1PWWmhcC32JaE61P//Z&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="ErogDox EZ with colourful keycaps" title="ErogDox EZ with colourful keycaps" src="/static/a3421b607f359fb78b4c877545fea14f/e5166/ergodex_colours.jpg" srcSet="/static/a3421b607f359fb78b4c877545fea14f/f93b5/ergodex_colours.jpg 300w,/static/a3421b607f359fb78b4c877545fea14f/b4294/ergodex_colours.jpg 600w,/static/a3421b607f359fb78b4c877545fea14f/e5166/ergodex_colours.jpg 1200w,/static/a3421b607f359fb78b4c877545fea14f/d9c39/ergodex_colours.jpg 1800w,/static/a3421b607f359fb78b4c877545fea14f/df51d/ergodex_colours.jpg 2400w,/static/a3421b607f359fb78b4c877545fea14f/d2602/ergodex_colours.jpg 4032w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p><em>Dang</em> that looks so good!</p><p>With legends on my keys and colour coding, I had landmarks that I could use to remember the layout more easily. So I expanded my layout. I added print-screen keys, paste-without-formatting keys, and all kinds of one-off keys that made my life a little easier. It was great!</p><p>What could go wrong?</p><p>The problem I had with the ErgoDox EZ was, ironically, ergnomics. The keyboard tented, but that made the keyboard sit taller on my desk; I had to raise my hands to meet the keyboard. I did use palm rests to help, but that led to another problem.</p><p>I take written meeting notes by hand, which means that I use my desk for more than just a keyboard and mouse. Every meeting I would start by pushing my two keyboard halves <em>and</em> their wrist rests <em>and</em> my Magic Trackpad away from me to make room for my notebook. Then at the end of the meeting, I would pull all five pieces back and try to arrange them just-so. A minor frustraiton, but one that persisted for years.</p><p>I eventually got lazy and started using my keyboard pushed back, in ways that were uncomfortable. I tried leaving the notebook between the two halves, but that separated them too much. I was back to meeting my keyboard instead of having my keyboard meet me.</p><p>Hmm.</p><p>Luckily, ZSA came out with a new keyboard last year: <a href="https://www.zsa.io/voyager" target="_blank" rel="nofollow noopener noreferrer">the Voyager</a>. This presented a potential solution to my frustration, but would come at the cost of time, money, and becoming an even weirder keyboard person.</p><p>I opened my heart to the possibility.</p><p>I started playing around with my ErgoDox EZ layout to simulate the Voyager. I added <a href="https://precondition.github.io/home-row-mods" target="_blank" rel="nofollow noopener noreferrer">home row mods</a>. I printed out to-scale outlines of both keyboards to compare. I thought really hard about what I wanted, and then <a href="/blog/new-keyboard/">I took the plunge</a>.</p><div><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/5b24e994098851e1e92726748c999f66/2d0c4/comparison.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:95%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAATABQDASIAAhEBAxEB/8QAGQABAQADAQAAAAAAAAAAAAAAAAQBAgMF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAGztLtllMrhYR4g1P/EABwQAAEEAwEAAAAAAAAAAAAAAAIAAQMRBCEiM//aAAgBAQABBQIKXKPRRvq6cy6xScgUvp//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAcEAACAQUBAAAAAAAAAAAAAAAAARECECExQVH/2gAIAQEABj8CcmjAz0Y5fbVH/8QAHBAAAwABBQAAAAAAAAAAAAAAAAERIRAxQVGx/9oACAEBAAE/IVa0TEn4EwwRTPMlKdaeFSddtHae5//aAAwDAQACAAMAAAAQ39D8/8QAFhEAAwAAAAAAAAAAAAAAAAAAAAEQ/9oACAEDAQE/EKz/xAAWEQADAAAAAAAAAAAAAAAAAAAAARD/2gAIAQIBAT8QqP/EABsQAQACAwEBAAAAAAAAAAAAAAEAESFBcWEx/9oACAEBAAE/EA6EoLLjoZORPIAMSoKsMkSRzwyjK5ryKoZQXkVr7Gr7O5//2Q==&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Photo of one half of the Voyager on a to-scale print-out of the ErgoDox EZ" title="Photo of one half of the Voyager on a to-scale print-out of the ErgoDox EZ" src="/static/5b24e994098851e1e92726748c999f66/e5166/comparison.jpg" srcSet="/static/5b24e994098851e1e92726748c999f66/f93b5/comparison.jpg 300w,/static/5b24e994098851e1e92726748c999f66/b4294/comparison.jpg 600w,/static/5b24e994098851e1e92726748c999f66/e5166/comparison.jpg 1200w,/static/5b24e994098851e1e92726748c999f66/d9c39/comparison.jpg 1800w,/static/5b24e994098851e1e92726748c999f66/df51d/comparison.jpg 2400w,/static/5b24e994098851e1e92726748c999f66/2d0c4/comparison.jpg 2894w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p></div><p>This turned out to be a bigger change that I had anticipated.</p><h1 id="the-voyager-keyboard" style="position:relative"><a href="#the-voyager-keyboard" aria-label="the voyager keyboard permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>The Voyager Keyboard</h1><p>The Voyager is lower profile. It physically lays flatter on the desk, which solves a minor complain I had about the ErgoDox EZ being too tall. The Voyager tents <em>a little</em>, but can also be connected to tripod sockets for maximum tenting flexibility (I am doing a foreshadow here). Lower profile switches travel half the distance as MX switches, and the keycaps are shorter too.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/3df51ef2e1410036500d3b7f82788686/d2602/voyager.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAEDAgT/xAAWAQEBAQAAAAAAAAAAAAAAAAABAAL/2gAMAwEAAhADEAAAAVXmmWhGH//EABsQAQACAgMAAAAAAAAAAAAAAAIAAxESBBQi/9oACAEBAAEFAhRtOuM2U+hyMl7uVpE//8QAFhEBAQEAAAAAAAAAAAAAAAAAABEh/9oACAEDAQE/Aax//8QAFhEBAQEAAAAAAAAAAAAAAAAAABEh/9oACAECAQE/AY1//8QAGhAAAgMBAQAAAAAAAAAAAAAAAAECETFBIv/aAAgBAQAGPwK5PeCZ5kKKXDWUf//EABoQAQEBAAMBAAAAAAAAAAAAAAERACFBYVH/2gAIAQEAAT8heOOag0yKJ9cq4z3NIEiuQIkeOEnrf//aAAwDAQACAAMAAAAQ0D//xAAXEQADAQAAAAAAAAAAAAAAAAAAASFh/9oACAEDAQE/EIYtH//EABYRAQEBAAAAAAAAAAAAAAAAAAEAMf/aAAgBAgEBPxCKHL//xAAdEAEAAgMAAwEAAAAAAAAAAAABESEAQVFhcYHR/9oACAEBAAE/EA526BVsvWQKemhex4xC65eH8yOsStmuZvBogI+YiEibN+8//9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Photo of the Voyager on my desk" title="Photo of the Voyager on my desk" src="/static/3df51ef2e1410036500d3b7f82788686/e5166/voyager.jpg" srcSet="/static/3df51ef2e1410036500d3b7f82788686/f93b5/voyager.jpg 300w,/static/3df51ef2e1410036500d3b7f82788686/b4294/voyager.jpg 600w,/static/3df51ef2e1410036500d3b7f82788686/e5166/voyager.jpg 1200w,/static/3df51ef2e1410036500d3b7f82788686/d9c39/voyager.jpg 1800w,/static/3df51ef2e1410036500d3b7f82788686/df51d/voyager.jpg 2400w,/static/3df51ef2e1410036500d3b7f82788686/d2602/voyager.jpg 4032w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>The whole keyboard is very cute and I dig it.</p><p>This keyboard has a lot fewer keys that the ErgoDox EZ. That’s by design; a great way to minimize finger movement is to use fewer keys. As you have fewer keys, the use of those keys has to get more complex. Remember how the ErgoDox EZ is programmable? The Voyager is too. that programming has some advanced features; as your keyboard gets fewer and fewer keys, you need to use more and more of those advanced features.</p><p>The build quality, fit, and finish of the Voyager keyboard are amazing. A huge step up from the ErgoDox EZ, which was already solid. The configuration software is the same, and the customer support from ZSA has been proactive and amazing.</p><p>I had always used “clicky” switches on my ErgoDox EZ (Cherry MX Blues) because I liked the sound that my other mechanical keyboard had made. Apparently, lots of people absolutely <em>hate</em> clicky keyboards. I never knew! Because I had never used one in an office. My wife, apparently, enjoys the sound of me tap-tap-tapping away.</p><p>Before ordering the Voyager, during a work trip to Toronto, I asked my coworkers to bring in their own keyboards so I could try out some other key switches. I didn’t find anything that I liked better than my Cherry MX Blues. So when I ordered my Voyager, I ordered it with the clicky switches (Kailh Choc V1 Whites).</p><p>I didn’t really like them.</p><p>The Kailh White switches felt bad to type on. Their click wasn’t satisfying like the Cherry MX Blues. They felt kind of “scratchy”. And most worst of all, they sometimes actuated before the click. Apparently, I rest my fingers on keyboards a little too forcefully, and I would often get inadvertently-typed J, K, and L characters (home row on my dominant right hand).</p><p>I looked around and tried the best two options I could find: <a href="https://lowprokb.ca/products/ambients-silent-choc-switches" target="_blank" rel="nofollow noopener noreferrer">Ambient Nocturnals</a> and <a href="https://lowprokb.ca/products/sunset-tactile-choc-switches" target="_blank" rel="nofollow noopener noreferrer">Sunsets</a>.</p><p>Oh my goodness do the Sunsets feel nice. Still a little scratchy, but they feel very satisfying. And they still make enough noise for me. I didn’t <em>like</em> the Nocturnals because they were too easy to press down (lightweight springs) but I was downright <em>disturbed</em> by how quiet they were. The Sunsets both feel and sound good to me (my wife also approves of their sound)</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/84c4c438cd288c9b082a793e08522299/d2602/switching.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIDAQT/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAABSrRjDhK//8QAGhAAAgMBAQAAAAAAAAAAAAAAAQIAAxEEIv/aAAgBAQABBQJ6PIVMIG7HtFcPU2//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAaEAACAwEBAAAAAAAAAAAAAAAAIQECESKB/9oACAEBAAY/AuMFSsiXgzRRB//EABoQAQADAQEBAAAAAAAAAAAAAAEAETEhUUH/2gAIAQEAAT8hClONWCNubGqgPHMTXiBfC4VcbwCf/9oADAMBAAIAAwAAABB7D//EABURAQEAAAAAAAAAAAAAAAAAABAR/9oACAEDAQE/EKf/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/ED//xAAcEAEAAgIDAQAAAAAAAAAAAAABABFBUSGhwfD/2gAIAQEAAT8QaIn5WVYcBSrdkRBnHUQt7pwRQ9Y9owcYEVn/2Q==&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Photo of me switching out switches on the Voyager keyboard" title="Photo of me switching out switches on the Voyager keyboard" src="/static/84c4c438cd288c9b082a793e08522299/e5166/switching.jpg" srcSet="/static/84c4c438cd288c9b082a793e08522299/f93b5/switching.jpg 300w,/static/84c4c438cd288c9b082a793e08522299/b4294/switching.jpg 600w,/static/84c4c438cd288c9b082a793e08522299/e5166/switching.jpg 1200w,/static/84c4c438cd288c9b082a793e08522299/d9c39/switching.jpg 1800w,/static/84c4c438cd288c9b082a793e08522299/df51d/switching.jpg 2400w,/static/84c4c438cd288c9b082a793e08522299/d2602/switching.jpg 4032w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>The worst part is, when I get out my ErgoDox, I don’t even like the Cherry MX Blues anymore. Too clicky. I think I’m just a tactile switch person.</p><p>It took a while to get the layout right. I’m actually putting together a tour of my layout right now, which will go into more details. I’ll update this post once it’s ready. You can see <a href="https://configure.zsa.io/my_layout/view/NWX4X" target="_blank" rel="nofollow noopener noreferrer">the revisions I’ve gone through</a> so far. Here’s the latest layout:</p><div><div style="padding-top:60%;position:relative"><iframe src="https://configure.zsa.io/embed/voyager/layouts/NWX4X/latest/0" style="border:0;height:100%;left:0;position:absolute;top:0;width:100%"></iframe></div></div><p>A few things that make this layout work well for me:</p><ul><li><strong>Thumb cluster buttons are all single-use keys.</strong> I don’t like doubling up on layer mod keys because it introduces a <code class="language-text">delaysContentTouches</code>-esque delay that I find distracting.</li><li>I like home row mods but couldn’t get it working for me with Shift. <strong>So I put Shift on a thumb cluster</strong>, which seems to “make sense” to my brain as it sits with the other layer mods, and shift is more a layer mod than OS modifier like command. I would imagine that <a href="https://getreuer.info/posts/keyboards/achordion/index.html" target="_blank" rel="nofollow noopener noreferrer">Achordion</a> could help me here, but I’ve already settled on a solution for me.</li><li><strong>I have no Enter key.</strong> I kept prematurely sending Slack messages by accident when I reached for a key and accidentally hit enter. So instead, I created a combo where I hit J and K and the same time (my two strongest fingers on my dominant hand) and that sends Enter. Hard to do by accident, and very satisfying.</li><li><strong>Optimize for text editing in macOS</strong>, with keys for common actions like “forward delete the next word” and “move to the end of this line.” It’s all systematized and easy to remember.</li><li><strong><a href="https://tenforward.social/@ashfurrow/113160750825678795" target="_blank" rel="nofollow noopener noreferrer">Cat Mode</a>.</strong></li></ul><iframe src="https://tenforward.social/@ashfurrow/113160750825678795/embed" class="mastodon-embed" style="max-width:100%;border:0;margin-bottom:50px" width="600" height="600" allowfullscreen=""></iframe><script src="https://tenforward.social/embed.js" async=""></script><h1 id="tenting-iterations" style="position:relative"><a href="#tenting-iterations" aria-label="tenting iterations permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Tenting Iterations</h1><p>All of this has been preamble. Table-setting. Context you need to understand: I am in deep.</p><p>I have fallen down a rabbit hole. I’m desperately trying to stop myself. My fingers – dug into the sides of this hole – can just barely slow my descent. But the deeper I fall, the less I really want to stop.</p><div><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1100px"> <a class="gatsby-resp-image-link" href="/static/eefb7648b3430221112fcb774ffe33f1/ddced/reddit.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:39.333333333333336%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAIABQDASIAAhEBAxEB/8QAFwABAAMAAAAAAAAAAAAAAAAAAAECBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHKqWQD/8QAFhABAQEAAAAAAAAAAAAAAAAAABEB/9oACAEBAAEFApqaj//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABQQAQAAAAAAAAAAAAAAAAAAABD/2gAIAQEABj8Cf//EABkQAAMAAwAAAAAAAAAAAAAAAAABITFhof/aAAgBAQABPyGGeG9js//aAAwDAQACAAMAAAAQcA//xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAgBAwEBPxCq/8QAFREBAQAAAAAAAAAAAAAAAAAAABH/2gAIAQIBAT8QiP/EABsQAAIDAAMAAAAAAAAAAAAAAAERACFBMWGR/9oACAEBAAE/EHgqkZxmBL7LDJfc/9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Reddit comment thread. &quot;I&#x27;m worried I&#x27;ll keep falling down the rabbit hole haha.&quot; &quot;Let it happen! Switches are so personal&quot;" title="Reddit comment thread. &quot;I&#x27;m worried I&#x27;ll keep falling down the rabbit hole haha.&quot; &quot;Let it happen! Switches are so personal&quot;" src="/static/eefb7648b3430221112fcb774ffe33f1/ddced/reddit.jpg" srcSet="/static/eefb7648b3430221112fcb774ffe33f1/f93b5/reddit.jpg 300w,/static/eefb7648b3430221112fcb774ffe33f1/b4294/reddit.jpg 600w,/static/eefb7648b3430221112fcb774ffe33f1/ddced/reddit.jpg 1100w" sizes="(max-width: 1100px) 100vw, 1100px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p></div><p>I’ve become a full-on weird keyboard person. Sure, I was using a split keyboard for a decade. And sure, I used a columnar stagger custom-programmable keyboard for years.</p><p>But this is another level.</p><p>My attempts to bring my keyboard to meet me have led me to their inevitable conclusion. Let’s start with the keyboard tray.</p><p>After getting the Voyager, I used it on my desk for a while. But it had the same issue where I was always pushing it back for meetings and having to re-arrange the two halves and my trackpad all the time. I thought, let’s get a keyboard tray. You know, like the 1990’s? A sliding tray that attaches under my desk.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/df0c6e4ccb59bef5d3c7f84f6fd46868/62e0e/tray.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAQBA//EABYBAQEBAAAAAAAAAAAAAAAAAAIBA//aAAwDAQACEAMQAAAByfpKbaM3/8QAGhABAQEAAwEAAAAAAAAAAAAAAgEAAxESIv/aAAgBAQABBQLwN1x3GkylWK0YfR//xAAWEQEBAQAAAAAAAAAAAAAAAAAAERL/2gAIAQMBAT8BrL//xAAWEQEBAQAAAAAAAAAAAAAAAAAAERL/2gAIAQIBAT8BjT//xAAbEAACAwEBAQAAAAAAAAAAAAAAAgERIYExof/aAAgBAQAGPwL144azFWTbYUk/C53h/8QAGRABAAMBAQAAAAAAAAAAAAAAAQARIVFB/9oACAEBAAE/IUnTcjV6MyV0qOlQwCxVJcpgUOQdEfcT/9oADAMBAAIAAwAAABCYH//EABcRAQEBAQAAAAAAAAAAAAAAAAEAETH/2gAIAQMBAT8QDkDO3//EABcRAQEBAQAAAAAAAAAAAAAAAAEAETH/2gAIAQIBAT8QXK3l/8QAGxABAAMBAQEBAAAAAAAAAAAAAQARITFhccH/2gAIAQEAAT8QGVDQH9Jgn0Ayp28m2wabj7UpzIrRCtuBucRHX7cMVt6FPKJ//9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Voyager and trackpad on a keyboard tray" title="Voyager and trackpad on a keyboard tray" src="/static/df0c6e4ccb59bef5d3c7f84f6fd46868/e5166/tray.jpg" srcSet="/static/df0c6e4ccb59bef5d3c7f84f6fd46868/f93b5/tray.jpg 300w,/static/df0c6e4ccb59bef5d3c7f84f6fd46868/b4294/tray.jpg 600w,/static/df0c6e4ccb59bef5d3c7f84f6fd46868/e5166/tray.jpg 1200w,/static/df0c6e4ccb59bef5d3c7f84f6fd46868/d9c39/tray.jpg 1800w,/static/df0c6e4ccb59bef5d3c7f84f6fd46868/df51d/tray.jpg 2400w,/static/df0c6e4ccb59bef5d3c7f84f6fd46868/62e0e/tray.jpg 3572w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>This worked. My keyboard and notebook could both be directly in front of me because they were on different levels. A combination of adjustments to my sit-stand desk and VESA-mounted monitor could accommodate writing and typing, either when sitting or standing. But I had to settle for the limited tenting that the Voyager supports out-of-the-box, which wasn’t enough for me.</p><p>Also, I had to pull out the keyboard tray any time I wanted to use the keyboard briefly during meetings – which turns out is a lot! The keyboard tray is noisy, too, and very distinct. Not a pleasant sound.</p><p>So from there, I explored tenting options using tripod mounts.</p><p>You can mount any <em>thing</em> in any <em>way</em> that you want, <em>if</em> you can get it attached to a tripod mount. Photography, videography, DJ’ing, and many other fields have all settled on using this same mount size, so you can use tools from any of those fields. I settled on double-ball joint “magic arms”, a miniature tripod that has mounting points at its centre and on its legs, and a tablet holder for my trackpad. It ended up looking like this.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/1a811c01aa79bc9f9d7063839adfc380/b7c1f/tripod_1.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAMBAgT/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAGKrSaBof/EABsQAAMAAgMAAAAAAAAAAAAAAAECAwAEERMU/9oACAEBAAEFAvMeWijMNW2dknoTM4m5NV//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAeEAACAQMFAAAAAAAAAAAAAAAAAQIDESESEzJSkf/aAAgBAQAGPwLkh7VTPVmJRNUnMvlFm5eH/8QAGxABAAMBAAMAAAAAAAAAAAAAAQARMUEhUcH/2gAIAQEAAT8hPOoYYnXj9g8A+puAZcuA0PNlwJj/2gAMAwEAAgADAAAAEGDP/8QAFREBAQAAAAAAAAAAAAAAAAAAABH/2gAIAQMBAT8Qqv/EABYRAQEBAAAAAAAAAAAAAAAAAAARAf/aAAgBAgEBPxCYj//EABsQAQADAQEBAQAAAAAAAAAAAAEAESExQWFx/9oACAEBAAE/EAm0pxSz05sUJdsa41ggCsl6ofvIuA2aYX+b7G+GCEgX6Usf/9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Photo of the Voyager keyboard mounted to a mini tripod along an Apple Magic Trackpad held by a tablet holder" title="Photo of the Voyager keyboard mounted to a mini tripod along an Apple Magic Trackpad held by a tablet holder" src="/static/1a811c01aa79bc9f9d7063839adfc380/e5166/tripod_1.jpg" srcSet="/static/1a811c01aa79bc9f9d7063839adfc380/f93b5/tripod_1.jpg 300w,/static/1a811c01aa79bc9f9d7063839adfc380/b4294/tripod_1.jpg 600w,/static/1a811c01aa79bc9f9d7063839adfc380/e5166/tripod_1.jpg 1200w,/static/1a811c01aa79bc9f9d7063839adfc380/d9c39/tripod_1.jpg 1800w,/static/1a811c01aa79bc9f9d7063839adfc380/df51d/tripod_1.jpg 2400w,/static/1a811c01aa79bc9f9d7063839adfc380/b7c1f/tripod_1.jpg 5712w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>The trackpad is so close to my hand that moving between the keyboard and mouse takes very little movement. It also forces me to “hover type” instead of resting any part of my palms/wrist/forearms on the desk. This prevents nerves from getting pinched. Until-and-unless ZSA commercializes <a href="https://blog.zsa.io/diy-voyager-trackpad-saucer/" target="_blank" rel="nofollow noopener noreferrer">this DIY trackpad attachment</a>, I plan to use the Apple Trackpad like this.</p><p>I’m so sorry.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/1b4ea98a06018d5e64e3c1d7bc4ef791/d2602/tripod_2.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAMEAv/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHZKuGFxH//xAAbEAACAwADAAAAAAAAAAAAAAABAgMREgATIf/aAAgBAQABBQJJK41SKo8Ou42Chiz/AP/EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EAB0QAAICAgMBAAAAAAAAAAAAAAABERICMSFBUYH/2gAIAQEABj8CLI0n9KWslvojFOvkyK2PJ//EABoQAAMAAwEAAAAAAAAAAAAAAAABESFBUXH/2gAIAQEAAT8hbUk4x4etd0Pd+worLoGiMZjSsCElRnB//9oADAMBAAIAAwAAABDX3//EABYRAQEBAAAAAAAAAAAAAAAAAAAhUf/aAAgBAwEBPxCJr//EABcRAQADAAAAAAAAAAAAAAAAAAAhUXH/2gAIAQIBAT8Q1NP/xAAcEAEAAgIDAQAAAAAAAAAAAAABETEAIUFRcYH/2gAIAQEAAT8QHk23X9MjWHo7PdcXgbbtjPmWOYzCChC/mFyWgsomZkOzCMWAHLvWf//Z&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Another photo, from a different angle, of the Voyager keyboard mounted to a mini tripod along an Apple Magic Trackpad held by a tablet holder" title="Another photo, from a different angle, of the Voyager keyboard mounted to a mini tripod along an Apple Magic Trackpad held by a tablet holder" src="/static/1b4ea98a06018d5e64e3c1d7bc4ef791/e5166/tripod_2.jpg" srcSet="/static/1b4ea98a06018d5e64e3c1d7bc4ef791/f93b5/tripod_2.jpg 300w,/static/1b4ea98a06018d5e64e3c1d7bc4ef791/b4294/tripod_2.jpg 600w,/static/1b4ea98a06018d5e64e3c1d7bc4ef791/e5166/tripod_2.jpg 1200w,/static/1b4ea98a06018d5e64e3c1d7bc4ef791/d9c39/tripod_2.jpg 1800w,/static/1b4ea98a06018d5e64e3c1d7bc4ef791/df51d/tripod_2.jpg 2400w,/static/1b4ea98a06018d5e64e3c1d7bc4ef791/d2602/tripod_2.jpg 4032w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>I shared this on the <code class="language-text">#keyboards</code> channel at work and got a response that sums it up: “with all due respect this is insane. I respect your journey though.”</p><p>I <em>also</em> think this is insane. But I also have to respect my own journey.</p><p>This setup with the mini tripod worked really well, mainly because it “collapsed” the two keyboard halves and trackpad into a single “thing” that I could move around on my desk. We went from five separate objects to move around down to one. It was easy to switch between note-taking and typing, yay! I used it for a few weeks before playing with a new idea…</p><p>What if I could combine the benefits of the keyboard tray with the layout I had from the tripod? I hadn’t want to clamp my keyboard to my desk (<a href="https://www.youtube.com/watch?v=mT3TToFqqEU" target="_blank" rel="nofollow noopener noreferrer">which is a common solution</a>) because the clamps would get in the way of my notebook for taking notes.</p><p>Then I realized: I already <em>had</em> an unused keyboard tray still attached to my desk, so maybe I could attach everything to that?</p><p>Yes.</p><p><strong><em>Yes.</em></strong></p><p>I removed the tray itself but kept the metal slide attached to the bottom of my desk. I then drilled out the existing holes to fit a tripod screw, and added a few new holes.</p><div><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/7e24bbc6f4b3b0bf75b396479bbdfef8/b3e35/tray_holes.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:71.00000000000001%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAOABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAQFAQL/xAAVAQEBAAAAAAAAAAAAAAAAAAABA//aAAwDAQACEAMQAAAB2e+onZMI1//EABoQAAIDAQEAAAAAAAAAAAAAAAEDAAIRECH/2gAIAQEAAQUCveMBi2AUz1p3n//EABYRAQEBAAAAAAAAAAAAAAAAAAABAv/aAAgBAwEBPwFN1//EABYRAQEBAAAAAAAAAAAAAAAAAAABA//aAAgBAgEBPwFc4//EABoQAAICAwAAAAAAAAAAAAAAAAABEUEQEiH/2gAIAQEABj8CZ1QJOjYl3j//xAAbEAADAQADAQAAAAAAAAAAAAAAARExIVGBsf/aAAgBAQABPyGg1t8FqLwFOfaQ9tPgrb0//9oADAMBAAIAAwAAABDXH//EABYRAAMAAAAAAAAAAAAAAAAAAAABEf/aAAgBAwEBPxASUh//xAAXEQADAQAAAAAAAAAAAAAAAAAAARFB/9oACAECAQE/EMgw7T//xAAcEAEBAAICAwAAAAAAAAAAAAABEQAhMVFBYaH/2gAIAQEAAT8QLkJe/WagB0LFyoYGjq6yJuFtLITb94wuoxB4cLCsb4M//9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Keyboard tray with holes drilled out to fit a tripod mount." title="Keyboard tray with holes drilled out to fit a tripod mount." src="/static/7e24bbc6f4b3b0bf75b396479bbdfef8/e5166/tray_holes.jpg" srcSet="/static/7e24bbc6f4b3b0bf75b396479bbdfef8/f93b5/tray_holes.jpg 300w,/static/7e24bbc6f4b3b0bf75b396479bbdfef8/b4294/tray_holes.jpg 600w,/static/7e24bbc6f4b3b0bf75b396479bbdfef8/e5166/tray_holes.jpg 1200w,/static/7e24bbc6f4b3b0bf75b396479bbdfef8/d9c39/tray_holes.jpg 1800w,/static/7e24bbc6f4b3b0bf75b396479bbdfef8/df51d/tray_holes.jpg 2400w,/static/7e24bbc6f4b3b0bf75b396479bbdfef8/b3e35/tray_holes.jpg 2949w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p></div><p>That allowed me to mount a cheeseplate to the keyboard tray slide.</p><div><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/13c1d2bf8fa5e1fd84ddfe65b4b6b879/b7c1f/tray_bolts.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABAAF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAWiTlmrMpf/EABwQAAIBBQEAAAAAAAAAAAAAAAIDAQAEERIjMf/aAAgBAQABBQIlwY+MBOBvJ1Wmetf/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAgBAgEBPwGq/8QAHRAAAgEEAwAAAAAAAAAAAAAAAAECEBEhYTFxkf/aAAgBAQAGPwK7wK0c6OZekdsh2qf/xAAcEAEAAgIDAQAAAAAAAAAAAAABABExQRAhYdH/2gAIAQEAAT8hI0J1BLBq26lEIPkY8PxlJZvNx//aAAwDAQACAAMAAAAQtO//xAAXEQEAAwAAAAAAAAAAAAAAAAABEBEh/9oACAEDAQE/EKHY/8QAFREBAQAAAAAAAAAAAAAAAAAAARD/2gAIAQIBAT8QER//xAAcEAEBAAMBAAMAAAAAAAAAAAABEQAhMUFhgdH/2gAIAQEAAT8QbMqiYV8v1hwuoA6c51cKrBYgbcYwiMeQX7iiGkXxvzIu5PjP/9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Keyboard tray with holes with cheeseplate attached." title="Keyboard tray with holes with cheeseplate attached." src="/static/13c1d2bf8fa5e1fd84ddfe65b4b6b879/e5166/tray_bolts.jpg" srcSet="/static/13c1d2bf8fa5e1fd84ddfe65b4b6b879/f93b5/tray_bolts.jpg 300w,/static/13c1d2bf8fa5e1fd84ddfe65b4b6b879/b4294/tray_bolts.jpg 600w,/static/13c1d2bf8fa5e1fd84ddfe65b4b6b879/e5166/tray_bolts.jpg 1200w,/static/13c1d2bf8fa5e1fd84ddfe65b4b6b879/d9c39/tray_bolts.jpg 1800w,/static/13c1d2bf8fa5e1fd84ddfe65b4b6b879/df51d/tray_bolts.jpg 2400w,/static/13c1d2bf8fa5e1fd84ddfe65b4b6b879/b7c1f/tray_bolts.jpg 5712w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p></div><p>From there, the rest was just iterating until I found something that worked.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/63cad7f378c70cbfd367b6b58627159d/63aad/tray_tent_1.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAMEAv/EABcBAAMBAAAAAAAAAAAAAAAAAAECAwT/2gAMAwEAAhADEAAAAWYRMpYVGa3/xAAcEAACAgIDAAAAAAAAAAAAAAABAgADBBITISP/2gAIAQEAAQUCqYWS3H64mlY8NWQo+w//xAAWEQEBAQAAAAAAAAAAAAAAAAAAARH/2gAIAQMBAT8BZH//xAAWEQADAAAAAAAAAAAAAAAAAAAAAQL/2gAIAQIBAT8BHdI//8QAGRAAAwEBAQAAAAAAAAAAAAAAAAECESEx/9oACAEBAAY/AutYOoxo9Q5Nmmbh/8QAGxABAAMBAAMAAAAAAAAAAAAAAQARITFBUeH/2gAIAQEAAT8hNHL2vEpS9aPyIxyL1jak3btXNfpZ/9oADAMBAAIAAwAAABArP//EABYRAQEBAAAAAAAAAAAAAAAAAAERAP/aAAgBAwEBPxAa4cs3/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAERIf/aAAgBAgEBPxDJBg1T/8QAHRABAQACAQUAAAAAAAAAAAAAAREAIVFBcYGRof/aAAgBAQABPxCbNS9V8NxAOGjaXzMo172GUEWFiuvmEmaPoGt74KCFKcZ//9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Keyboard tray with Voyager and tripod attached." title="Keyboard tray with Voyager and tripod attached." src="/static/63cad7f378c70cbfd367b6b58627159d/e5166/tray_tent_1.jpg" srcSet="/static/63cad7f378c70cbfd367b6b58627159d/f93b5/tray_tent_1.jpg 300w,/static/63cad7f378c70cbfd367b6b58627159d/b4294/tray_tent_1.jpg 600w,/static/63cad7f378c70cbfd367b6b58627159d/e5166/tray_tent_1.jpg 1200w,/static/63cad7f378c70cbfd367b6b58627159d/d9c39/tray_tent_1.jpg 1800w,/static/63cad7f378c70cbfd367b6b58627159d/df51d/tray_tent_1.jpg 2400w,/static/63cad7f378c70cbfd367b6b58627159d/63aad/tray_tent_1.jpg 5366w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>I have so much flexibility. I use the magic arms to position the keyboard and trackpad wherever I want relative to each other. I can still adjust the keyboard tray mechanism, which makes it easy to position the entire keyboard/trackpad contraption at once, relative to my desk. My notebook is unobstructed by my keyboard, so I never have to pull a tray towards me.</p><p>This took hours and hours of research and iteration, and took many attempts. As an engineering problem, getting the “best” ergonomic setup was a fun challenge. Intrinsically rewarding, if socially isolating.</p><div><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/8dbd477cbd2186bc050c5e745221b2b4/adf6a/tray_tent_2.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAQFAgP/xAAVAQEBAAAAAAAAAAAAAAAAAAABAP/aAAwDAQACEAMQAAAB6bgtQ8Tgf//EABwQAAICAgMAAAAAAAAAAAAAAAECAxEAEgQhIv/aAAgBAQABBQIOlsYq24+RnuPUFvTf/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFREBAQAAAAAAAAAAAAAAAAAAACH/2gAIAQIBAT8BV//EAB4QAAIBAwUAAAAAAAAAAAAAAAABEQIhMQMSQVGh/9oACAEBAAY/AoenTHZKooa5sY8ZfCNykcOEf//EABoQAAMBAQEBAAAAAAAAAAAAAAABESFBMWH/2gAIAQEAAT8h91HDtMoJxFbQvnKa0Gm742W5KyH/2gAMAwEAAgADAAAAEGw//8QAGBEAAwEBAAAAAAAAAAAAAAAAAAEhEVH/2gAIAQMBAT8QTW0nT//EABgRAQADAQAAAAAAAAAAAAAAAAEAESFR/9oACAECAQE/EKawg8T/xAAdEAEBAAIDAAMAAAAAAAAAAAABEQAhMUFxUYGx/9oACAEBAAE/EEGDCAPkm53hXtYGflnGBtqtgGNTPECid6y5RbeT7reKkzEP3+5//9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Keyboard tray with Voyager and tripod attached, different angle." title="Keyboard tray with Voyager and tripod attached, different angle." src="/static/8dbd477cbd2186bc050c5e745221b2b4/e5166/tray_tent_2.jpg" srcSet="/static/8dbd477cbd2186bc050c5e745221b2b4/f93b5/tray_tent_2.jpg 300w,/static/8dbd477cbd2186bc050c5e745221b2b4/b4294/tray_tent_2.jpg 600w,/static/8dbd477cbd2186bc050c5e745221b2b4/e5166/tray_tent_2.jpg 1200w,/static/8dbd477cbd2186bc050c5e745221b2b4/d9c39/tray_tent_2.jpg 1800w,/static/8dbd477cbd2186bc050c5e745221b2b4/df51d/tray_tent_2.jpg 2400w,/static/8dbd477cbd2186bc050c5e745221b2b4/adf6a/tray_tent_2.jpg 4795w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p></div><p>This feels amazing to type on and use day-to-day. But I also feel like an idiot. A massive idiot.</p><p>I spent time, attention, and money to do <em>this</em> to my home office.</p><p>Look at this. I took a perfectly good desk and I gave it anxiety.</p><p>I love this, though. It is so comfortable to type on. It meets me where I’m at. It solves all the problems I have. It’s the ideal tradeoff, the “best” solution that I could engineer.</p><hr/><p>I’m not quite sure how to end this blog post, because I’m not entirely sure that this <em>is</em> the end. I hope so, at least for a while.</p><p>I’ve been using computers nearly my whole life. I have built a career using computers. But they have taken a toll on my body that I need to manage, or else. I don’t want to stop using them, so I have to use them responsibly.</p><p>What I’m trying to say really is: if using a weird keyboard makes me not cool, then I don’t <em>want</em> to be cool.</p><p>I’ll settle for no wrist pain.</p></content:encoded>
</item>
<item>
<title>
<![CDATA[ Four Years in New Brunswick ]]>
</title>
<description>
<![CDATA[ Today – Halloween – marks four years since my wife and I returned to live in New Brunswick . I feel compelled to reflect and share. It… ]]>
</description>
<link>https://ashfurrow.com/blog/four-years-in-new-brunswick/</link>
<guid isPermaLink="false">https://ashfurrow.com/blog/four-years-in-new-brunswick/</guid>
<pubDate>Thu, 31 Oct 2024 00:00:00 GMT</pubDate>
<content:encoded><p>Today – Halloween – marks four years since my wife and I <a href="/blog/moving-home-to-new-brunswick/">returned to live in New Brunswick</a>. I feel compelled to reflect and share.</p><p>It feels disingenuous to say that things haven’t gone as I expected them to, because I didn’t really have explicit expectations. But I suppose it is accurate to say: my self in 2020 would be surprised with the way things have turned out.</p><p>Life since moving home has been complicated. I’ve felt loss. Sadness. Frustration.</p><p>Anger.</p><p>I don’t like how certain events have played out, but I’ve learned to accept that - while I am only in control of myself - I <em>am</em> in control of myself. I’ve learned not to assume responsibility for the feelings and actions of others. I’ve learned boundaries. <a href="/blog/new-year-new-me/">I’ve grown</a>. And I’ve had to accept that not everyone is interested in that growth.</p><p>I’m still figuring out who I am. And I do still catch myself thinking of “figuring out who I am” as a task that will someday be completed. That will someday become past tense, done. Checkmark. Instead, it is something that I do and then I keep doing and then one day I’ll die. And only then will “figuring out who I am” be over. But it won’t be done. It won’t be accomplished.</p><p><a href="/blog/what-happens-next/">In 2021</a>, I wrote about how my wife and I have largely gone where life has taken us. That has led to great adventures, but it has also carried great costs. When I wrote that in 2021, things <em>did</em> feel different. But change is slow. We’re more in the driver’s seat of our own lives than ever before.</p><p>If I’m being honest, some days I feel like I’ve woken up from a long dream. I look around and I don’t understand. Not confused, but I don’t understand. Where am I? How did I get here?</p><p>Maybe this is middle life. Maybe. But it doesn’t feel like a crisis – and after the last four years, I would know.</p><p>Four years in New Brunswick. The Picture Province! “Home.” A place I can’t seem to forgive.</p><p>A place to live. Because we chose to and because we continue to choose to.</p><p>Not a home that we take our place in. But a place to make our own home.</p></content:encoded>
</item>
<item>
<title>
<![CDATA[ Year of Recovery ]]>
</title>
<description>
<![CDATA[ This post comes with a content warning for a medical discussion. In late 2019, I discovered I had a health condition that needed surgery to… ]]>
</description>
<link>https://ashfurrow.com/blog/year-of-recovery/</link>
<guid isPermaLink="false">https://ashfurrow.com/blog/year-of-recovery/</guid>
<pubDate>Thu, 31 Oct 2024 00:00:00 GMT</pubDate>
<content:encoded><p>This post comes with a content warning for a medical discussion.</p><p>In late 2019, I discovered I had a health condition that needed surgery to correct. Not life-threatening, but it was the first major acute physical health issue that I’ve encountered as an adult. <a href="/blog/recovering/">That led to a surgery</a> while I still lived in New York. 2020 was not a great time for medical treatment in New York. The cab driver taking me to the hospital pointed out the freezer trucks along the East River being used as makeshift morgues. My recovery didn’t go great, but I was cleared to travel <a href="/blog/moving-home-to-new-brunswick/">home to Canada</a>.</p><p>Unfortunately, the problem recurred and I needed surgery again. After about a year on a waitlist, I had a different operation to resolve the same problem. Exactly one year ago today.</p><p>That’s right, surgery on Halloween. I tried to put a cool spin on it – like that’s pretty metal, right? Surgery on Halloween? Could be a cool story. And I wish I could tell you a cool story, but the fact is that it sucked. It was a more invasive procedure than last time. Canadian hospitals are great in some ways, but are also overcrowded. I was admitted overnight and it was hell.</p><p>But I survived. I did what I had to do, to make it through.</p><p>I worked with a physiotherapist in the months leading up to the procedure to strengthen my core muscles for better post-operation outcomes. I started going for daily walks the very first day I returned home from the hospital. Once cleared by my surgeon, I started strengthening exercises with my physiotherapist: about six weeks after the surgery. Ever since then, I have been training. Training from the inside out and from the bottom up.</p><p>I used to consider core workouts a kind of warmup to the actual weightlifting training at the gym. But when I started training again last year, with a focus on safety, core workouts were all I had. And I started from scratch: laying on my back and engaging my core as I exhaled.</p><p>Building up from a solid foundation has led me to some great successes.</p><p>First, the health problem that required surgery in the first place is being managed. I am not “as good as new”, I never will be, and I need to work within that reality. Safety while training is more paramount than ever. On the other hand, believing yourself to be fragile is a great way to get injured. So it’s been a balance, literally and figuratively.</p><p>Second, I’ve gotten stronger. My wife remarked “you’ve become as strong as you’ve ever been. Maybe not in the absolute sense, but in the <a href="https://www.youtube.com/@VacuumWars" target="_blank" rel="nofollow noopener noreferrer">Vacuum Wars</a> sense.” Meaning that I might have a lower one-rep max but my coordination and useful day-to-day strength is up. This has been a great feeling. It’s been amazing to see my arms and legs grow without even focusing on those muscles.</p><p>I started running again in May. Slowly at first. I still don’t run as fast or as far as I have before. I also don’t use a smartwatch at all; for the first time as a runner, the only feedback I’m listening to is my own body. I wish I had <a href="/blog/2021-my-year-of-closed-rings/">ditched the technology</a> sooner.</p><p>Last weekend, just less than a year after my surgery, I completed <a href="https://frederictonmarathon.com/run-for-shelters/" target="_blank" rel="nofollow noopener noreferrer">Fredericton’s Run for the Shelters</a> 3k race. Only my second race ever. I don’t even know my time, but I know that I trained, I showed up, and I finished.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/3e8a0ec2f617dee08a864cd894239d7e/4e81e/run.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:133.33333333333331%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEAgH/xAAXAQADAQAAAAAAAAAAAAAAAAAAAQID/9oADAMBAAIQAxAAAAHcem1MwwzpFE4mw4B//8QAHhAAAgEEAwEAAAAAAAAAAAAAAAECAxESIRATIjL/2gAIAQEAAQUCWJVFtN+nCTLWFuPY5xyKfzx//8QAGREAAQUAAAAAAAAAAAAAAAAAEQABEBIh/9oACAEDAQE/Aah8Qn//xAAZEQACAwEAAAAAAAAAAAAAAAABEQACECH/2gAIAQIBAT8BFmOx7//EACAQAAEDAgcAAAAAAAAAAAAAAAABAhJBUSAhIjEyYaH/2gAIAQEABj8C3OihC6DZUMm+jVTkar4f/8QAHhABAAIBBAMAAAAAAAAAAAAAAQARITFBUWFxobH/2gAIAQEAAT8hsM0mRdUOd5rCCputO4AABA7mCC5EMjxNkFYYnT7NHxcV9xCjsn//2gAMAwEAAgADAAAAEHjzQP/EABcRAQEBAQAAAAAAAAAAAAAAAAEQESH/2gAIAQMBAT8QeiC66z//xAAYEQACAwAAAAAAAAAAAAAAAAAAERAxQf/aAAgBAgEBPxC3QeCP/8QAHRABAQADAAIDAAAAAAAAAAAAAREAIUFxwYGRof/aAAgBAQABPxBDQ4rkmEpVDpqMwIXD2OQBRC8XDCKsiyEnW7cgCpWo94kdPsH6xkqgxt8/uKGJDhph18GPNxQl0SZUzdHP/9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Photo of me after the 3k race" title="Photo of me after the 3k race" src="/static/3e8a0ec2f617dee08a864cd894239d7e/e5166/run.jpg" srcSet="/static/3e8a0ec2f617dee08a864cd894239d7e/f93b5/run.jpg 300w,/static/3e8a0ec2f617dee08a864cd894239d7e/b4294/run.jpg 600w,/static/3e8a0ec2f617dee08a864cd894239d7e/e5166/run.jpg 1200w,/static/3e8a0ec2f617dee08a864cd894239d7e/d9c39/run.jpg 1800w,/static/3e8a0ec2f617dee08a864cd894239d7e/df51d/run.jpg 2400w,/static/3e8a0ec2f617dee08a864cd894239d7e/4e81e/run.jpg 2473w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>I dare you to look happier at 1ºC with 40km/h wind gusts.</p><p>My health issue might come back at some point. There’s a good chance it will, actually. I intend to beat the odds and to do that, I have to manage it. For the rest of my life. Managing my health is something I should have been doing my whole life. I never chose to neglect my health, but it happened. I choose to prioritize my health from now on.</p><p>I cannot express enough gratitude to my wife for her help and support over the last year. My feelings – of helplessness and sadness – reached indescribable depths. But she’s always been there to remind me that I can do this. And I have. And I will.</p></content:encoded>
</item>
<item>
<title>
<![CDATA[ Asking for Help as a Software Developer ]]>
</title>
<description>
<![CDATA[ I was talking with a software developer friend the other day. They were asking for suggestions on how to increase their coding output. They… ]]>
</description>
<link>https://ashfurrow.com/blog/asking-for-help-as-a-software-developer/</link>
<guid isPermaLink="false">https://ashfurrow.com/blog/asking-for-help-as-a-software-developer/</guid>
<pubDate>Mon, 07 Oct 2024 00:00:00 GMT</pubDate>
<content:encoded><p>I was talking with a software developer friend the other day. They were asking for suggestions on how to increase their coding output. They keep finding themselves getting stuck and taking “too long” with their tasks, and they wanted advice on how to get more code written.</p><p>My advice was to ask for help better. By that I mean: ask for help sooner and ask for help in a way that makes it easier to get help. I want to share what I told them because I think that a lot of developers face the same problem as they grow from junior to intermediate, or intermediate to senior.</p><p>I remember facing this problem myself. I solved the problem by asking for help sooner and by getting better at asking for that help.</p><h2 id="why-you-need-to-ask-for-help" style="position:relative"><a href="#why-you-need-to-ask-for-help" aria-label="why you need to ask for help permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Why you need to ask for help</h2><p>Developers hit this problem where they can get stuck and stay stuck for too long. They’re not making progress and they’re not learning. They become <em>unproductively stuck</em>. I think this happens when developers over-index on persistence. Computers are exacting, fickle, and pedantic; you need persistence to learn how to program computers.</p><p>In fact, I believe that the process of becoming a good software developer <em>is</em> the process of encountering many roadblocks and finding a way around them. And that takes persistence.</p><p>However, that same persistence can backfire as you face more challenging and complex problems. Orders of magnitude more complex. It’s relatively easy to get unstuck by searching google when the problem is solved by understanding <code class="language-text">for</code> loops. It’s a lot harder to get unstuck by searching google when the problem is rooted in your company’s weird multi-tenant microservice infrastructure, or virtual DOM reconciliation bottlenecks, or any number of weird and frustrating problems.</p><p>As your job becomes more difficult, relying solely on persistence to solve problems can backfire. The problems you have to solve grow and grow in complexity, so your toolbox for solving those problems need to grow too. Persistence is necessary, but insufficient.</p><p>Think about it another way: if you got stuck on a problem for two days when asking for help would have gotten you unstuck in a half hour, was that a good use of two days? Did it help you improve your skills? Did it help you accomplish your task?</p><p>You probably work on a team. That team depends on you. When you get <em>unproductively stuck</em>, your team is depending on you to ask them for help. Try not to let your own persistence and determination get in the way of your goals, and of your team’s goals.</p><h2 id="when-to-ask-for-help" style="position:relative"><a href="#when-to-ask-for-help" aria-label="when to ask for help permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>When to ask for help</h2><p>There is a bit of a paradox. You need to ask for help, but not too soon because you need to be persistent. But not too late, either, because it’s not productive to stay stuck too long.</p><p>When do you give up and ask for help?</p><p>My answer is: asking for help is not “giving up.” Asking for help doesn’t mean asking for the solution to your problem; it’s asking for a new direction to look in. And we’ll see later how asking for help doesn’t mean that you stop working on the problem.</p><p>Story time. As an intern, I was told that I give up too easily and needed to stick with problems longer on my own before asking for help. I needed more persistence. That was a tough thing to hear, but I took it to heart.</p><p>But when <em>should</em> you ask for help, then? I got the following advice, and I think that it’s a great starting point.</p><p><strong>Timebox yourself to a half hour. When you haven’t made a meaningful progress on your task for 30 minutes, that is when to ask for help.</strong></p><p>A lot of developers tend to avoid asking for help because they don’t want to interrupt someone, either because they’re intimidated or because they’re afraid of asking a silly question. But let me tell you something: <a href="/blog/building-better-software-by-building-better-teams/">high-performing teams ask questions</a>. High-performing individuals ask questions. If you want to increase your performance and productivity, like my friend did, asking questions is something that you need to do. Even and especially when you get unproductively stuck.</p><p>I am one of the most senior engineers on my team, and I intentionally make it a habit to ask questions that I am fairly certain I already know the answer to, in front of my team. Part of this is to confirm my understanding and get more context, but part of this is to demonstrate to everyone that asking questions is normal and good. To show that even someone with my experience and seniority still asks “silly” questions.</p><p>If you’re still nervous about asking someone for help too often, then tell your team that you’re open to feedback about that.</p><p>Help them help you.</p><h2 id="how-to-ask-for-help" style="position:relative"><a href="#how-to-ask-for-help" aria-label="how to ask for help permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>How to ask for help</h2><p>Asking for help is something that you can follow a recipe for. You will refine your recipe over time, but here is my recommended starting point.</p><ol><li><strong>Describe the problem</strong>. First, you need to describe the problem that you’re trying to solve. Describe where you’re stuck, but avoid describing all the context. Instead, link to that context. If you’re stuck on a ticket, link to that ticket. Focus on describing the part that you’re stuck on.</li><li><strong>List what you have tried so far</strong>. Write out summaries of your approaches so far and why you think they failed. This helps the other person get a sense of how you’re approaching the problem, so they can help give feedback and help you grow.</li><li><strong>Describe your next step</strong>. Finally, you need to pick a next step and describe it. This is crucial because it keeps you working on the problem while the other person gets back to you. This makes it so “asking for help” is not “giving up.”</li></ol><p>Make sure to compose the whole message upfront and send it all at once.</p><p>Here’s an example:</p><blockquote><p>Hi there. I’ve been working on <a href="https://example.com/" target="_blank" rel="nofollow noopener noreferrer">this ticket</a> but when I showed up to work this morning, Xcode just stopped compiling code. Here is the compiler error:</p><p><code class="language-text">/* compiler error goes here */</code></p><p>When I google the compiler error, I get a lot of results but none of them seem relevant to our code. I even tried including the framework listed in the compiler error, but couldn’t find anything relevant. I think maybe this error just has so many causes that I’m looking for a needle in a haystack.</p><p>I also tried pulling the from the repo to see if that would fix it, but I was already on the latest changes. I also tried rebooting, because why not?</p><p>I’m not sure what could have caused this, since the code was compiling fine yesterday. I didn’t change anything on my computer. Any ideas on where I should look next? I’m going to keep going down the rabbit hole searching for the compiler error for now.</p></blockquote><p>If I got this message from a coworker, I would immediately recognize the problem. My guess is that some readers recognize it too, but only based on their experience. It would take us a few minutes to respond and unblock you, saving you from an unproductive rabbit hole.</p><p>You can see how this message follows the recipe. It describes the problem in an appropriate level of detail and links context. It lists the approaches taken so far and the results. And it describes your next step so you can keep at it while the other person takes time to get back to you.</p><p>This message is also concise and to the point. This is actually really important, so let me explain.</p><p>The same person who told me, as an intern, that I ask for help too soon also suggested that I ask for help <em>in writing</em> (even thought we sat directly next to each other). He taught me that the process of organizing my thoughts would often lead me to new ideas when I had previously been stuck. Often, the process of writing to him to ask for help would lead me to realize the solution so I would never actually end up asking for help at all. <a href="/blog/communication-as-problem-solving/">Communicating effectively is actually a great way to solve problems</a>!</p><h2 id="conclusion" style="position:relative"><a href="#conclusion" aria-label="conclusion permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Conclusion</h2><p>As you can see, asking for help isn’t something that you do <em>instead of</em> trying to solve a problem yourself. It is just one tool in your problem-solving toolbox. It’s often the best tool to reach for when you’re unproductively stuck, but my friend Steve Hicks describes some other tools in this excellent talk:</p><div videoID="3XscuivvUzI"></div><p>A lot of developers get stuck in the trap of persistence as they grow in experience and responsibility. It might be one of those things that just naturally happens as we grow from one level of responsibly to the next. I’m not sure. It’s a behaviour that I continue to look out for in myself.</p><p>—</p><p>By the way, <a href="/blog/how-to-ask-for-developer-help/">I wrote my first blog post about how to ask for help</a> over ten years ago. It wasn’t great, and the resource I linked to in that post is no longer available. <a href="/blog/asking-for-help-in-open-source/">I tried writing the post again two years later</a>, but that advice was too specific to open source communities. Neither post captured what I told my friend, but this one does. I hope it’s helpful for you, too.</p></content:encoded>
</item>
<item>
<title>
<![CDATA[ New Keyboard ]]>
</title>
<description>
<![CDATA[ A few months ago, I came across this amazing video from Christian Selig detailing how he built his own keyboard . And I mean built it… ]]>
</description>
<link>https://ashfurrow.com/blog/new-keyboard/</link>
<guid isPermaLink="false">https://ashfurrow.com/blog/new-keyboard/</guid>
<pubDate>Wed, 18 Sep 2024 00:00:00 GMT</pubDate>
<content:encoded><p>A few months ago, I came across <a href="https://www.youtube.com/watch?v=7UXsD7nSfDY" target="_blank" rel="nofollow noopener noreferrer">this amazing video from Christian Selig detailing how he built his own keyboard</a>. And I mean <em>built</em> it. Unknown to me up to that point, there exists both the tools and community such that anyone could design and build, from scratch, their own custom computer keyboard. The printed circuit board, the case, the microcontroller firmware – everything.</p><div videoID="7UXsD7nSfDY"></div><p>I had been using an <a href="https://ergodox-ez.com" target="_blank" rel="nofollow noopener noreferrer">ErgoDox-EZ keyboard</a> since 2020 and so I was familiar with the concept of custom keyboard firmware. But I had no idea that the custom hardware was so accessible. Building something from scratch wasn’t something I was interested in doing, but I did start tinkering with my ErgoDox layout. It was a tonne of fun!</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/59f7fd1b439f48ec050e3beeb7b765d3/889fc/ergodox.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIDAQX/xAAVAQEBAAAAAAAAAAAAAAAAAAABAP/aAAwDAQACEAMQAAABWT6VTmg//8QAGRAAAwADAAAAAAAAAAAAAAAAAQIDABMi/9oACAEBAAEFAlWjAxqonMhZ05diE3tn/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFREBAQAAAAAAAAAAAAAAAAAAEBH/2gAIAQIBAT8Bh//EABwQAAICAgMAAAAAAAAAAAAAAAABETESIUFRkf/aAAgBAQAGPwKMeDaSRXhOk30i2Wz/xAAZEAEBAQEBAQAAAAAAAAAAAAABEQAhMXH/2gAIAQEAAT8h48XxUu+zYpgtq9vRkdpOmaeedzZkfu//2gAMAwEAAgADAAAAENjP/8QAFhEAAwAAAAAAAAAAAAAAAAAAAAER/9oACAEDAQE/EKhQ/8QAFREBAQAAAAAAAAAAAAAAAAAAAQD/2gAIAQIBAT8QIl//xAAeEAEAAgICAwEAAAAAAAAAAAABESEAMVFhQXGB0f/aAAgBAQABPxCd7apx5vUmC77FP6mKyBh8gfcUsnwDFJ8rPeFXXio6ayHQjV/3P//Z&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Photo of my ErgoDox on my desk with a notepad in the middle" title="Photo of my ErgoDox on my desk with a notepad in the middle" src="/static/59f7fd1b439f48ec050e3beeb7b765d3/e5166/ergodox.jpg" srcSet="/static/59f7fd1b439f48ec050e3beeb7b765d3/f93b5/ergodox.jpg 300w,/static/59f7fd1b439f48ec050e3beeb7b765d3/b4294/ergodox.jpg 600w,/static/59f7fd1b439f48ec050e3beeb7b765d3/e5166/ergodox.jpg 1200w,/static/59f7fd1b439f48ec050e3beeb7b765d3/d9c39/ergodox.jpg 1800w,/static/59f7fd1b439f48ec050e3beeb7b765d3/df51d/ergodox.jpg 2400w,/static/59f7fd1b439f48ec050e3beeb7b765d3/889fc/ergodox.jpg 3734w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>Since I was tinkering with the layout, I started thinking about my home office ergonomics more broadly. A lot has changed since I <a href="https://people.zsa.io/ash-furrow/" target="_blank" rel="nofollow noopener noreferrer">last talked about my home office setup</a>. My RSI pain is something that I have under control, but it is something that takes active management. I looked up how to adjust my chair. I had someone watch me work. I bought a keyboard tray to sit under my desk. And, I bought a new keyboard.</p><p>The thing with my ErgoDox was, I never really made the most of it after I got over the initial learning curve. I kept some bad typing habits. I had a lot of unused keys.</p><p>I could have solved these problems, and would have, but the physical size of the ErgoDox also presented some challenges on my desk setup. The keyboard is tall and wide and I wanted something lower profile.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/e36a82e7c3302065bb83d91650fa5702/d2602/voyager.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAME/8QAFgEBAQEAAAAAAAAAAAAAAAAAAgED/9oADAMBAAIQAxAAAAGcaZjdwzf/xAAaEAEBAAIDAAAAAAAAAAAAAAACAQMRABMj/9oACAEBAAEFAusWUY9igkS0Lz5j0h//xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAgBAwEBPwGo/8QAFREBAQAAAAAAAAAAAAAAAAAAABH/2gAIAQIBAT8Biv/EABwQAAICAgMAAAAAAAAAAAAAAAABERIhoiIycf/aAAgBAQAGPwLtqNW1IkTscXBLz6f/xAAcEAACAgIDAAAAAAAAAAAAAAABEQAhMVFBYbH/2gAIAQEAAT8hIK6xGGI6j2TTjIQ73HAA9njmKrO4/9oADAMBAAIAAwAAABCYH//EABcRAQEBAQAAAAAAAAAAAAAAAAEAETH/2gAIAQMBAT8QDBzt/8QAFxEBAQEBAAAAAAAAAAAAAAAAAQARMf/aAAgBAgEBPxBcveX/xAAdEAEBAAMAAgMAAAAAAAAAAAABEQAhMVGhYXGB/9oACAEBAAE/EHSxdloToXnMoUCAwr0+sETIuzXymPsKpm11z894ws+BHi5davTF9Z//2Q==&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Photo of my new setup, including a keyboard tray" title="Photo of my new setup, including a keyboard tray" src="/static/e36a82e7c3302065bb83d91650fa5702/e5166/voyager.jpg" srcSet="/static/e36a82e7c3302065bb83d91650fa5702/f93b5/voyager.jpg 300w,/static/e36a82e7c3302065bb83d91650fa5702/b4294/voyager.jpg 600w,/static/e36a82e7c3302065bb83d91650fa5702/e5166/voyager.jpg 1200w,/static/e36a82e7c3302065bb83d91650fa5702/d9c39/voyager.jpg 1800w,/static/e36a82e7c3302065bb83d91650fa5702/df51d/voyager.jpg 2400w,/static/e36a82e7c3302065bb83d91650fa5702/d2602/voyager.jpg 4032w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>So I bought <a href="https://www.zsa.io/voyager" target="_blank" rel="nofollow noopener noreferrer">ZSA’s Voyager</a>. It is also a split mechanical keyboard, smaller, and with low profile keys. It feels great! I got the clickiest key switches and they feel so satisfying. It’s also much smaller. ZSA has a to-scale printout of all their keyboards, so here is the Voyager on top of the ErgoDox-EZ.</p><p><span class="gatsby-resp-image-wrapper" style="position:relative;display:block;margin-left:auto;margin-right:auto;max-width:1200px"> <a class="gatsby-resp-image-link" href="/static/e1247b86a6c1b2086eb3dd5fcf320fab/d2602/size-comparison.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:75%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAQFA//EABcBAAMBAAAAAAAAAAAAAAAAAAABAgP/2gAMAwEAAhADEAAAAdHYz0i5LFp//8QAGhAAAgMBAQAAAAAAAAAAAAAAAhIAAQMEIf/aAAgBAQABBQLD0aWFqpc+tRoZNf8A/8QAFREBAQAAAAAAAAAAAAAAAAAAAQD/2gAIAQMBAT8BhL//xAAVEQEBAAAAAAAAAAAAAAAAAAAAIf/aAAgBAgEBPwFX/8QAGhAAAgIDAAAAAAAAAAAAAAAAAAECETFRYf/aAAgBAQAGPwKF6MDQlwtFn//EABkQAQADAQEAAAAAAAAAAAAAAAEAESFBMf/aAAgBAQABPyFHuQHGXDsLfYiiKeRyLiqf/9oADAMBAAIAAwAAABD8z//EABYRAQEBAAAAAAAAAAAAAAAAAAARIf/aAAgBAwEBPxBHr//EABYRAQEBAAAAAAAAAAAAAAAAAAABEf/aAAgBAgEBPxBZp//EABoQAQEBAAMBAAAAAAAAAAAAAAERACExcWH/2gAIAQEAAT8QOgCVH4Z2dvcKncF8ME4A5OJjyQSglyMqg4Xf/9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Voyager keyboard sitting on top of to-scale ErgoDox EZ" title="Voyager keyboard sitting on top of to-scale ErgoDox EZ" src="/static/e1247b86a6c1b2086eb3dd5fcf320fab/e5166/size-comparison.jpg" srcSet="/static/e1247b86a6c1b2086eb3dd5fcf320fab/f93b5/size-comparison.jpg 300w,/static/e1247b86a6c1b2086eb3dd5fcf320fab/b4294/size-comparison.jpg 600w,/static/e1247b86a6c1b2086eb3dd5fcf320fab/e5166/size-comparison.jpg 1200w,/static/e1247b86a6c1b2086eb3dd5fcf320fab/d9c39/size-comparison.jpg 1800w,/static/e1247b86a6c1b2086eb3dd5fcf320fab/df51d/size-comparison.jpg 2400w,/static/e1247b86a6c1b2086eb3dd5fcf320fab/d2602/size-comparison.jpg 4032w" sizes="(max-width: 1200px) 100vw, 1200px" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0" loading="lazy" decoding="async"/> </a> </span></p><p>I’ve been using it for a few weeks now and have mostly regained my typing speed. It has fewer keys that the ErgoDox, which has pushed me to be creative with my layout. Honestly, I have been having a blast! My layer is <a href="https://configure.zsa.io/voyager/layouts/NWX4X/YGQ34/4" target="_blank" rel="nofollow noopener noreferrer">open source</a> if you’re interested. I have made fifty changes so far and forked it twice.</p><p>I thought I might collect some thoughts and lessons. If your keyboard is programmable, maybe this could be of interet to you.</p><ul><li>Blank keycaps are not worth it, at least for me.</li><li>I was only using one layer above my base layer. By using two, I could separate symbols and navigation onto their own layers. This let me put shifted symbols like <code class="language-text">&amp;</code> onto their own keys, which reduced how much shifting I had to do.</li><li>My shoulders were spread to wide. I had gotten used to keeping notebook between my keyboard halves, but over time I had opened up my chest too much.</li><li><a href="https://precondition.github.io/home-row-mods" target="_blank" rel="nofollow noopener noreferrer">Home row mods</a> remove the need for dedicated shift, command, alt/option, and control keys. I needed to use per-key tapping terms, as low as 150ms for my left index finger (shift).</li><li>I thought that I <strong>needed</strong> left-hand only command-tab to switch between applications while mousing, but I don’t. If you can be flexible where you can be, it helps you be rigid where you need to be.</li><li>I was basically only shifting with my left hand, even for awkard letters like Q. Home row mods have been a good way to re-train myself to use both hands together.</li><li>When I want to change how I do somethting on my layout, I need to remove the old way. I need to force myself to make the change. Cortés and ships and all that.</li><li>Hover typing was not difficult to learn. I now try to use my palm rest only when resting, and not while typing.</li><li>I added <a href="https://blog.zsa.io/2101-introducing-tap-dance/" target="_blank" rel="nofollow noopener noreferrer">Tap Dance</a> keys for press-and-hold actions for undo, cut, copy, and paste. I’m not sure I love them yet, and <a href="https://github.com/qmk/qmk_firmware/issues/19574" target="_blank" rel="nofollow noopener noreferrer">they interfere with caps WORD</a>.</li><li>Up until now, I had been holding modifers for a lot of text navigation with arrow keys that were already on the second row. That means hold multiple keys while tapping yet others. For example, select the next word with alt-shift-(navigation layer modifer and right arrow key). Now, I use dedicated keys on my navigation layer to move between words, to forward- and backward-delete words, etc.</li><li>There is value in muscle memory. Don’t over-optimize for perfection; the keyboard should fit you, not the other way around.</li><li>I was sleeping on <a href="https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/" target="_blank" rel="nofollow noopener noreferrer">hyper keys</a>. I now have a single key that I can assign to <em>any</em> shortcut with reasonable confidence of avoiding conflicts.</li><li>Tools like <a href="https://github.com/koekeishiya/skhd" target="_blank" rel="nofollow noopener noreferrer">skhd</a>, <a href="https://www.raycast.com" target="_blank" rel="nofollow noopener noreferrer">Raycast</a>, and <a href="https://shortcat.app" target="_blank" rel="nofollow noopener noreferrer">Shortcat</a> open up possibilities to use the keyboard far less.</li><li>Wireless is not that important to me. I don’t <em>like</em> wires, but I do actually prefer a wired keyboard. By using a keyboard tray, the wires are effectively hidden anyway.</li><li><a href="https://tenforward.social/@ashfurrow/113160750825678795" target="_blank" rel="nofollow noopener noreferrer">Cat Mode</a></li></ul><iframe src="https://tenforward.social/@ashfurrow/113160750825678795/embed" class="mastodon-embed" style="max-width:100%;border:0;margin-bottom:50px" width="600" height="600" allowfullscreen=""></iframe><script src="https://tenforward.social/embed.js" async=""></script><p>This has all been a great reminder of the joy of investing in my own tools and productivity. There was once a time where I had quite a nice <a href="https://gist.github.com/ashfurrow/3865eed417a5fbe8402708e2c706eea6/revisions" target="_blank" rel="nofollow noopener noreferrer">well-documented setup</a>. But time, entropy, and Apple’s locking down of macOS have left me using close to a stock setup. I’m excited to be changing that.</p><p>I have spent hours over the past two months watching videos of keyboard enthusiasts explaining their layouts and building their own keyboards. It has been helpful and I want to contribute something back. I am a writer, though, not a YouTuber. So this is my contribution.</p><p>Having learned a lot about what I want from a keyboard, I think I <em>might</em> actually want to build my own. Someday. I confidently know what I would want now: a more aggressive pinky stagger and a third thumb cluster button. Maybe even one fewer rows of keys. I’m looking at the <a href="https://github.com/GEIGEIGEIST/TOTEM" target="_blank" rel="nofollow noopener noreferrer">totem</a>. We’ll see.</p><p>I’ve always had <a href="https://ashfurrow.com/blog/craft-and-tooling/" target="_blank" rel="nofollow noopener noreferrer">an interest in developer tooling</a> (even if my open source contributions have tapered off for now). I have built my own <a href="https://github.com/Moya/Moya" target="_blank" rel="nofollow noopener noreferrer">software libraries</a>, <a href="https://github.com/ashfurrow/danger-swiftlint" target="_blank" rel="nofollow noopener noreferrer">CI culture-as-linter plugins</a>, and <a href="https://github.com/ashfurrow/blog" target="_blank" rel="nofollow noopener noreferrer">even this blog</a>. It just feels natural that I would take an interest and joy in building and programming my own keyboard. Like how a skilled woodworker builds their perfect tablesaw jig. <em>Their</em> perfect jig.</p><p>For now, I will settle for “only” programming the firmware! There is enough to keep me busy for a long time.</p></content:encoded>
</item>
<item>
<title>
<![CDATA[ One Year At Float ]]>
</title>
<description>
<![CDATA[ Last August, after much reflection , I joined Float . After a year, I thought it was important to check in with myself and see how I'm… ]]>
</description>
<link>https://ashfurrow.com/blog/one-year-at-float/</link>
<guid isPermaLink="false">https://ashfurrow.com/blog/one-year-at-float/</guid>
<pubDate>Mon, 09 Sep 2024 00:00:00 GMT</pubDate>
<content:encoded><p>Last August, <a href="/blog/what-next/">after much reflection</a>, <a href="/blog/joining-float/">I joined Float</a>. After a year, I thought it was important to check in with myself and see how I’m doing. How I’m feeling.</p><p>The tl;dr here is: I am proud of what I’ve accomplished at Float so far and I feel like I still have much more to accomplish. This is a good state of mind for me, <a href="/blog/getting-happy-with-email/#be-judicious-with-recruiters">it’s what kept me at Artsy for seven years</a>. My plan is to continue making Float the kind of place where I want to be for a long time.</p><h2 id="drive" style="position:relative"><a href="#drive" aria-label="drive permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Drive</h2><p>Most of my career has been spent in startups of various sizes. Recently, I tried working at a large publicly-traded company. Upon reflection, I don’t think my time was well spent there. The work I did was good, but not great. The scale of my impact was impressive, relatively speaking. My work was valuable, if not valued.</p><p>Returning to an early-stage startup has felt like a breath of fresh air.</p><p>It is a challenge. I feel challenged and I like it.</p><p>I joined in late August to lead mobile development and by early December, <a href="https://floatfinancial.com/introducing-the-float-mobile-app/" target="_blank" rel="nofollow noopener noreferrer">Float had launched its mobile app on Android and iOS</a>. Financial services was a whole new domain to me and I had to get up to speed <em>fast</em>. I learned Float’s existing products, met with Float’s customers, and asked so many questions. At the same time, I guided our small team through the planning, design, build, test, and deploy phases of a new product.</p><p>All in three months.</p><p>I learned a lot. The most valuable lessons were what I learned about myself.</p><p>It turns out that I actually respond really well to external pressure. This seems obvious to me now, but I had forgotten at some point. The only catch is: I need to understand <em>why</em> something is important. Extrinsic motivation doesn’t drive me, but when I understand why something is important then my intrinsic motivation kicks in.</p><p>For example, just two days before our app launch, we discovered a show-stopping bug. The kind of bug that would scupper the launch. Fixing the bug demanded some after-hours work with other team members. Everyone understood the importance of fixing the bug to unblock the launch. That understanding gave me the intrinsic motivation – the drive – to get it done. We identified the problem, fixed it gracefully, and deployed that fix to unblock our launch.</p><p>I haven’t felt that kind of thrill in a long time. It reminded me of <a href="https://artsy.github.io/blog/2019/11/14/diagnosing-our-radiation-problems/" target="_blank" rel="nofollow noopener noreferrer">my best moments at Artsy</a>. I had been on-call during a multi-day incident and when it was over, my coworker told me:</p><blockquote><p>It’s rare and odd to say dealing with incident was fun, but with your help it actually was productive and fun.</p></blockquote><p>My time at Float has reconnected me with my drive and with my vocation.</p><h2 id="remote-life" style="position:relative"><a href="#remote-life" aria-label="remote life permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Remote Life</h2><p>I have lots of experience working remotely. My entire first year at Artsy was remote across an ocean. I thought I knew how to work remotely, but the pandemic was a shift for everyone. Since then, any job I’ve worked at has been <em>as a fully-remote worker</em>. Ironically, this taught me the value of in-person interactions.</p><p>At home in my office, I can get a lot of code written. But anyone who has worked with me would tell you that the code I write is not always the most important contribution I make. The relationships with my coworkers and the context I gather helps me understand what is the most important thing to do at any moment. Sometimes that is writing code. Often it’s something else.</p><p>During two years at my previous employer, I got to meet my coworkers in-person <em>once</em>. In contrast, I’ve actually lost track of how many times I’ve met my coworkers in-person at Float. I forgot how important these connections are for me and for my work.</p><p>I feel grateful and privileged to be able to both work remotely from New Brunswick <em>and</em> develop in-person relationships on a high-performing team. It almost feels like a responsibilty, to take advantage of this opportunity to get exactly what I want out of life, personally and professionally.</p><h2 id="reconnecting-with-myself" style="position:relative"><a href="#reconnecting-with-myself" aria-label="reconnecting with myself permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Reconnecting with Myself</h2><p>My first year at Float has been filled with challenges, both at work and in my personal life.</p><p>I feel a familiar sense of accomplishment, but one that I haven’t felt in a long time. It’s odd. Looking back, I think I started avoiding difficulty. I remember doing hard things but I think that the trauma of the pandemic had pushed me to prioritize comfort. It’s reductive to blame this entirely on the pandemic, but <em>you</em> try living in Manhattan and having surgery in April 2020. The experience changed me.</p><p>Last summer, I was suddenly thrown into a job search. It was a huge challenge. My comfort was ripped away from me. I knew the stakes so I took the task of finding a new job seriously. And even though I wanted to get a job as soon as possible (so I could feel secure), I took the next month off to tend to my personal life and reflect on what <a href="/blog/what-next/">I wanted next in my career</a>. This was crucial. Knowing exactly what I was looking for gave me a lot of confidence. Managing the stress of the job search became part of the challenge, too.</p><p>At some point, I realized that I had become cautious. Conservative in my career. Quiet at work. Afraid to rock the boat.</p><p>Maybe it has to do with the pandemic. Maybe it has to do with getting older.</p><p>There is comfort in comfort, but there is security in resiliency.</p><p>Float has presented me with a lot of challenges. Some are challenges shared by every startup at Float’s stage. Some are unique challenges that I wouldn’t find elsewhere. They were all challenges to me. By tackling those challenges head-on and overcoming them in my own unique way, I have reonnected with my resiliency.</p><p>By spending half my career at Artsy, I had learned to work with art-adjacent people solving problems for the art world. Float solves problems for businesses. I work with business-adjacent people. Ideas and opinions that are “taken as read” in one place would need to be argued from first principles at the other. It shouldn’t be surprising that some skills that worked at Artsy don’t work at Float – or, at least they needed to be modified.</p><p>Float has given me a new lens with which to look at myself and my career. This year has seen me reconnect with the part of myself that isn’t afraid to take risks, isn’t afraid to speak up, and isn’t afraid to rock the boat.</p><p>I feel confident again. Outspoken. Intent on doing what is right.</p><h2 id="building-again" style="position:relative"><a href="#building-again" aria-label="building again permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Building Again</h2><p>Most software development is modifying a codebase that already exists; building an entirely new piece of software is rare and exciting. It’s also very risky. You need to lay a solid foundation, knowing that your foundation will almost certainly need to change. You need to leave the right amount of wiggle room around specific decisions so you can pivot quickly later. It’s very exciting.</p><p><a href="/blog/building-better-software-by-building-better-teams/">I applied my professional philosophy</a> and it worked. I focused on <em>learning how to build a great product</em> as a team, and lo: a great product was made, as if as a byproduct. This was a team effort, and I take a lot of pride in my supportive leadership. I made sure at every critical step, from <code class="language-text">git init</code> to <code class="language-text">yarn release</code>, we worked together as team so we could all share the sense of accomplishment.</p><p>After this frenzy of product development and launch, I had the holiday break to catch my breath and think about what to do next. I hit the ground running in January, putting plans into action and gathering context for my next phase of technical, cultural leadership at Float. Stay tuned for more.</p><h2 id="wrap-up" style="position:relative"><a href="#wrap-up" aria-label="wrap up permalink" class="anchor before"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Wrap Up</h2><p>I feel it in my bones that my time at Float has already been worthwhile. I’ve grown. I am more competent and confident as a leader now than when I joined. I learned a lot about software development and my technical skills are sharper than ever. I’ve built products to a level of quality that I am satisfied with and I’ve seen the impact that those products have on customers.</p><p>But most importantly, I’ve been an open an honest version of myself. I have “brought my whole self to work” at a time when <a href="/blog/new-year-new-me/">that sense of self is shifting</a>. The <strong>first</strong> criteria in my job search was to find a company with good people. My team have made it easy to be that honest self. When I have “done technical leadership” at Float in my own unique way, I’ve been encouraged to go further. It’s a virtuous cycle.</p><p>So much of what I bring to a company is building up context and relationships. I want to stay at companies a long time because I benefit from increasing returns the longer I am there. Part of my work is making the company worth staying at for a long time, and I feel empowered to make that happen at Float.</p><hr/><p>No blog post from someone celebrating their first year at a growing startup would be complete without a link to <a href="https://apply.workable.com/floatcard/" target="_blank" rel="nofollow noopener noreferrer">Float’s careers page</a>. I joined Float after meeting with one of its software engineers for a candid, honest conversation about the company. I would be chuffed to meet you and have a similar conversation, <a href="/about">so reach out</a>.</p></content:encoded>
</item>
<item>
<title>
<![CDATA[ New Year, New Me ]]>
</title>
<description>
<![CDATA[ I've been reluctant to write this post. I have a history of writing blog posts where I announce my mental health has improved . But… ]]>
</description>
<link>https://ashfurrow.com/blog/new-year-new-me/</link>
<guid isPermaLink="false">https://ashfurrow.com/blog/new-year-new-me/</guid>
<pubDate>Mon, 15 Jan 2024 00:00:00 GMT</pubDate>
<content:encoded><p>I’ve been reluctant to write this post. I have a history of <a href="/blog/therapys-end/">writing blog posts</a> <a href="/blog/mood-improvements/">where I announce</a> <a href="/blog/all-i-can-say-is-im-excited/">my mental health</a> <a href="/blog/metrics-for-the-unmeasurable-mood/">has improved</a>. But it never quite sticks. </p><p>The last 16 months have been the most challenging time of my life. Without going into detail, I faced a series of personal crises which compounded. My own personal Kepler Syndrome. It felt like every time I thought things were finished breaking, something new would go wrong.</p><p>But things didn’t just go wrong. A lot of things went right.</p><p>The most important thing I did throughout this time – the thing that has helped and continues to help the most – has been to become a student of my self. I’ve gained a deeper understanding of myself than I knew was possible.</p><p>Growth can’t happen without discomfort. It’s true when we grow from children to adults; it’s true when we physically train; it’s true when we learn new professional skills; and, it’s true when we grow as a person.</p><p>I didn’t <em>need</em> my life to unravel in order to embrace this kind of growth, but I think that the pain and discomfort of last 16 months made it easier to look at the hard problems. It had been difficult to acknowledge the problems I had been avoiding while I was relatively comfortable. But it became much easier once I no longer had a stake in that (illusory) comfort.</p><p>I don’t have solutions to all the problems, but I no longer need everything to <em>be</em> solved.</p><hr/><p>There is a growing pushback among my generation to New Year’s Resolutions. The mantra of “New Year, new me” is being rightfully dismantled as unrealistic and self-defeating. </p><p>And that’s great, I fully support it.</p><p>But I woke up this year, literally looked at myself in the mirror, and I realized that I had <em>already</em> grown into a new person. A more authentic me. It’s not that a New Year will spur me on to become a “new me”, but that hard work and an open heart have already led me down that path.</p><p>New Year, new me.</p></content:encoded>
</item>
<item>
<title>
<![CDATA[ Joining Float ]]>
</title>
<description>
<![CDATA[ I'm excited to announce that today I am joining Float ! During my job search , I got practiced at introducing myself. My background… ]]>
</description>
<link>https://ashfurrow.com/blog/joining-float/</link>
<guid isPermaLink="false">https://ashfurrow.com/blog/joining-float/</guid>
<pubDate>Mon, 21 Aug 2023 00:00:00 GMT</pubDate>
<content:encoded><p>I’m excited to announce that today I am joining <a href="https://floatcard.com" target="_blank" rel="nofollow noopener noreferrer">Float</a>! </p><p>During <a href="/blog/job-search-retrospective/">my job search</a>, I got practiced at introducing myself. My background, experience, and what I’m looking for next. What I wanted is:</p><blockquote><p>I want to do my best work. When I look back at my career so far, I’ve done my best work on smaller, focused teams aligned on building a product that solves actual user problems. But as important as alignment on <strong>what</strong> the team builds, I am looking for alignment on <strong>how</strong> we build it. A focus on curiosity, growth, and kindness.</p></blockquote><p>Float hit those marks for me.</p><p>The business model of Float is honourable: they make a quality product and then sell it to customers. It’s very direct and it aligns all the incentives nicely. And remember how I want to make really great user experiences? With Float, a great user experience <em>is the product</em>.</p><p>Speaking with engineers, managers, product managers, and others, I felt like we were on the same wavelength. Often while listening, I would think of a follow-up question to ask; then they’d answer it before wrapping up their thought. It showed that we were thinking about the same kinds of things. We got to skip over the obvious questions and jump right to the interesting ones.</p><p>One other thing: Float is a Canadian team building software for Canadian customers. After seven years working for an NYC-based fine art startup, then two years working for a global e-commerce platform… I’m looking forward to solving problems that are closer to home. </p></content:encoded>
</item>
</channel>
</rss>