<![CDATA[Ash Furrow's Blog]]>https://ashfurrow.comGatsbyJSWed, 13 Aug 2025 01:27:02 GMT<![CDATA[The Murderbot Blog]]>https://ashfurrow.com/blog/the-murderbot-blog/https://ashfurrow.com/blog/the-murderbot-blog/Tue, 12 Aug 2025 00:00:00 GMT<p>I’ve been a huge fan of <a href="https://en.wikipedia.org/wiki/The_Murderbot_Diaries" target="_blank" rel="nofollow noopener noreferrer"><em>The Murderbot Diaries</em> series by Martha Wells</a> for a few years now, and was very excited to see it adapted to television on Apple TV+. Every adaptation of a story to a new medium has to make creative choices and tradeoffs; it’s fun to pick apart the work to identify what’s been changed, think about why that might have been done, and examine the impact on the story. </p><p>As a fan of the books, I’m thrilled to see them adapted <em>at all</em> and I don’t want anyone thinking that I dislike the show. It was a joy to see <em>The Rise and Fall of Sanctuary Moon</em> show-within-a-show come to life.</p><p>This is an ensemble show, based on a single-person narrative novella. That was always going to be hard to adapt, so it makes sense that the production uses an ensemble cast to tell a larger story. More points of view makes it easier to tell a more complete story, and gives the audience more characters to relate to. But <em>too many</em> characters can create confusion, too. The show combined a few characters together and rearranged some of the relationships, to keep the story focused.</p><p>So we have this ensemble cast telling a story from multiple perspectives, adapted from a very first-person limited-perspective book. The tradeoff here is that you get less time with the titular protagonist, who is admittedly a weirdo. It could be difficult for audiences to relate to SecUnit, especially in a visual format. </p><p>These changes from the source material seem motivated to me, and so I find it easy to accept them and have fun with the story. Even as I wish we could spent more time with the inner life of SecUnit, I understand how that would be very difficult to portray.</p><p>The story itself also had to be adapted to fit into ten episodes. This change was less effectively executed than the character changes, in my opinion. The pacing of the show would speed up and slow down so quickly that it felt kind of clumsy. Life-or-death action scenes would be punctuated by relationship drama. The seams of the adaptation were visible.</p><p>The television show also nerfed the characters. This was a bummer, honestly. The human characters and SecUnit all make poor decisions and get themselves into unnecessary trouble. And I kind of see why. It’s hard to tell a compelling story when all the characters are hyper-competent (that’s part of why <em>Star Trek Voyager</em> is the way it is). Having the characters make mistakes also allows for more a more dynamic story, making it easier to adapt to television. This was harder for me to roll with, but I see the utility in it from a production and storytelling perspective.</p><p>I’ve given these examples as a way to show that <em>motivated changes</em> can lead to a story that works better for a television audience, even as I (a fan) would have preferred something different. I’m not saying that the motivation is good or bad, or that the motivation makes the changes good or bad. I’m saying that I understand it, so I find it easy to roll with as a viewer.</p><p>But there was one story shift that I don’t understand that’s been bothering me. </p><p>In the books, sprawling corporations fight each other for power and control of a lot of human-occupied space called the Corporation Rim. It’s a place ruled by contracts and force. The Corporation Rim is home to multigenerational indentured labour contracts, massive amounts of suffering, and wanton death – all for the sake of profit.</p><p>Our humans, in the Preservation Alliance, exist outside the Corporation Rim. But they do interact with it, and it disgusts them. This is a key thing I love about the books: Preservation Alliance is depicted as an <em>actual, functioning utopia</em>. The planetary alliance has built a society where everyone has access to food and shelter, where menial labour has been automated, and where violent crime does not exist. </p><p>By depicting Preservation Alliance this way, the books implicitly show that the cruelty and suffering of the Corporation Rim <em>is a choice</em>. It is optional. Something that our human characters avoid.</p><p>So it really bothered me when the television adaptation depicted Preservation Alliance as so hapless and resource-starved that they were considering joining the Corporation Rim. I don’t understand the motivation behind it. Granted, it’s a <em>relatively minor</em> change that <em>doesn’t necessarily</em> contradict anything in the books. But it does contradicts the story in my head. This was one of the most important background details of the setting to me and it kind of hurt to see it thrown away.</p><p>Adaptations and creators don’t owe anyone explanations about the story choices they make. But if I ever got the chance to ask the show runners a question, I know what I would ask.</p><![CDATA[Bias Towards Helpfulness]]>https://ashfurrow.com/blog/bias-towards-helpfulness/https://ashfurrow.com/blog/bias-towards-helpfulness/Mon, 23 Jun 2025 00:00:00 GMT<p>I’ve been using Cursor for coding tasks lately, trying to explore what kinds of work it performs well and poorly. It’s pretty good at most simple tasks. It’s good-to-okay at some complicated tasks. But then, some simple tasks can stump it – usually in very niche domains. Other tasks are <em>so big</em> that they need to be broken into smaller pieces first – a classic project management problem.</p><p>I ran into this last kind of problem recently, when I tried to prototype a large idea for this blog, my personal website. I told Cursor what we’re doing and it started strong. It was making great progress when suddenly it got stuck, in a loop, on a <em>very</em> simple change to a config file.</p><p>My approach had been too much, too fast. To refine my approach, I tried using a conversational LLM instead of Cursor. I’ve generally not used conversational LLMs like ChatGPT until a few months ago, because I hadn’t found them to be that useful and because it’s rational to be skeptical of tech hype. But people <em>are</em> using them, for all kinds of things. Conversational LLMs are replacing search, in terms of user behaviour. I had heard of developers using them to help think through ideas and plans, so why not try? </p><p>I talked my idea through with the LLM and… it was actually pretty helpful! It was a bit like “rubber duck debugging” if the rubber duck could answer you. And lookup GitHub issues, and quote documentation, etc. I was pretty impressed. It validated my idea was a good idea and suggested some alternatives.</p><p>The next day, I was meeting another developer for a coffee and my idea came up in our conversation. I explained my idea, asked his opinion, and the <em>first</em> thing he said <em>didn’t answer my question at all</em>. Instead, he responded with a question of his own. (A <em>really good</em> question, too. Incisive.) I gave him my answer, and he asked a very good followup question: how much time was I interested in spending on this idea? Only when he understood the full context and my motivation did he give me his perspective.</p><p>Conversational AI’s have a <em>bias towards helpfulness</em>. That may sound absurd, but it’s true: LLMs have been trained on helpful conversations from the internet (StackOverflow, for example). LLMs are given system prompts instructing them to answer user questions. They “want” to help us and it’s important to be aware of that. This bias prevents LLMs from being able to distinguish prompts that are vague on purpose (users looking for general answers) and vague incidentally (users needing followup questions and/or pushback). LLMs are designed to help users <em>by answering their prompts</em>, not telling them when they’re trying to do something really stupid.</p><p>It’s as though LLMs are bound by a local maxima of helpfulness. Sure, they’re helping users with their requests. But they can easily, silently fail to consider the bigger picture. People are messy and they have messy problems.</p><p>The developer I spoke to had the experience, expertise, and relationship with me to cut straight to the heart of my question. I hadn’t meant this as an experiment, but it’s interesting to think about: when asked the same question, the LLM responded with an answer but the developer responded with a question of his own. I think this is another case of learning what tasks an LLM can help with, or rather, learning the limitations of using an LLM for this kind of task.</p><p>I want to clarify my stance here because I don’t want to be labelled as either a hater or a booster. (Or labelled at all, thanks.) LLMs <em>do</em> have limitations, they <em>have</em> improved, and I <em>am</em> open to the idea that an LLM could be built that is capable of this kind of intentional, selective <em>un</em>helpfulness. To ask clarifying questions or push back on bad ideas. That an LLM product could even use previous interactions with me as context to tailor responses, similar to how a coworker or collaborator might. Indeed, <em>a lot</em> of companies are spending <em>a lot</em> of time and money trying to build AI assistants which develop a “relationship” with users. Maybe they will build something genuinely as helpful and incisive as another skilled human. But I would have to use it to believe it.</p><p>Incidentally, both the developer and the LLM ultimately arrived at the same answer. But, the developer was better company.</p><![CDATA[Foresight]]>https://ashfurrow.com/blog/foresight/https://ashfurrow.com/blog/foresight/Sun, 22 Jun 2025 00:00:00 GMT<p>Imagine you are a software developer. It’s the early 1970’s and you make a living writing Basic Assembly Language to build software for the System/360 mainframe. You are great at your job and you enjoy it.</p><p>You keep hearing about new “high level” programming languages that would allow you to write code in a way that could be “compiled” to run on different kinds of computers. In theory, this would be a huge benefit over writing assembly for just one kind of computer. But there’s a catch: these compilers aren’t reliable. The code they produce has bugs that wouldn’t have existed if a human had written the equivalent application in assembly. The code is inefficient, it is a mess to debug, and you have to use a whole new tool, a compiler. </p><p>Compilers introduce a layer of abstraction. Another build step. Another cost. Another skill. Using a compiler would <em>mediate the work of programming</em>, alienating a programmer from both their craft and their labour. <strong>Compilers come with tradeoffs</strong>. You don’t really like these tradeoffs, personally, and decide to stick with BAL.</p><p>But you keep an eye on new compilers.</p><p>Over time, compilers become more reliable, more stable, more performant. There are a lot of new languages and tools and it’s hard for you to know which ones to invest time into learning. (We all remember what happened to PL/I, am I right?) </p><p>You decide to learn a new language named C in your spare time.</p><p>You have a long and prosperous career.</p><p>The End.</p><hr/><p>Imagine you are a software developer who considers themselves to be a moral person. It’s the early 1970’s and you make a living writing Basic Assembly Language to build software for the System/360 mainframe. You are great at your job and you enjoy it.</p><p>You keep hearing about new “high level” programming languages that would allow you to write code in a way that could be “compiled” to run on different kinds of computers. In theory, this would be a huge benefit over writing assembly for just one kind of computer. </p><p>But there’s a catch: <strong>these compilers are cursed</strong>. </p><p>Compilers are conjured by programmers wearing dark cloaks, chanting under the cover of a new moon. It’s an eldritch ceremony. No one <em>really</em> understands how a compiler works, other than… <em>the cost</em>. Every time a programmer compiles a program, <em>the cost</em> is extracted. Every time a programmer compiles a program, someone – somewhere – suffers. Someone suffers just a little bit, and the programmer doesn’t get to see it. </p><p>(Also compilers are slow, unreliable, hard to debug, etc. All the same tradeoffs readers are familiar with, they’re just <em>also</em> cursed.) </p><p><strong>Compilers come with tradeoffs</strong>. You don’t really like these tradeoffs, personally, and decide to stick with BAL.</p><p>But you keep an eye on new compilers.</p><p>Over time, compilers become more reliable, more stable, more performant. The curse remains. You see the enormous value in using a compiler, you see how much more productive you could be if you used this tool. </p><p>You try using one compiler, and it doesn’t work. You wait a while, and you try another. A new one. It <em>does</em> work. In fact, it <em>exceeds your wildest expectations</em>. You feel conflicted.</p><p>You consider yourself a moral person. You know about the curse. You see other programmers declining to make the switch, correctly pointing to the tradeoffs. </p><p>“Compilers aren’t worth it,” the other programmers assert. “The curse is an unacceptable tradeoff! We refuse to use a compiler!”</p><p>But here’s the thing. Programmers aren’t the ones who get to decide what is worth the cost.</p><p>You can see ahead. You see jobs writing assembly getting harder to come by. They don’t <em>entirely</em> disappear, but… you see the industry moving on. You see an entire new generation of programmers entering the workforce who have <em>never not</em> used a compiler. </p><p>You have bills to pay, a career to think about, and you can see ahead. And, these compilers are actually pretty fun and useful. You find yourself excited about all the cool things you could build with them.</p><p>You still consider yourself a moral person. And you make a decision.</p><![CDATA[Camera Time]]>https://ashfurrow.com/blog/camera-time/https://ashfurrow.com/blog/camera-time/Sat, 31 May 2025 00:00:00 GMT<p>Recently, I published <a href="https://photos.ashfurrow.com/downtown-in-the-rain" target="_blank" rel="nofollow noopener noreferrer">my first photo blog post since 2018</a>. (Yes I have a separate photo blog, because of course I do.) So what’s up with that? Nothing better than a blog post about another blog post.</p><p>I haven’t really been doing a lot of photography since the pandemic, but I had been increasingly drawn to it over the past six months. Creativity is actually something I’ve found to be missing in my life – when I found a renewed interest in photography, I decided to follow it. I started taking more photos on my iPhone, then I got out my film cameras since that’s what I <em>had</em> been mainly shooting. But film wasn’t working for me, so I got out my digital camera, a FujiFilm X100S from 2014. And I loved it.</p><p>But, that camera has some limitations I was hitting. First, it’s a fixed focal length and I felt myself wanting something with more reach. I’ve only used prime lenses since 2014 and I enjoyed their limitations. Prime lenses helped me improve my composition skills, but now I’m ready for a zoom. The X100S is also from 2014, which means it’s from near the <em>very beginning</em> of the industry’s transition to mirrorless. So, it’s fiddly.</p><p>Don’t get me wrong – I’ve taken some of my favourite shots with the X100S. I have a large canvas print of <a href="https://photos.ashfurrow.com/losing-myself-in-tokyo/photos/2580931" target="_blank" rel="nofollow noopener noreferrer">a long exposure of Tokyo taken from Roppongi Tower</a> hanging in my office, and I took that with the X100S. Back when I used to travel a lot, The X100S was exactly what I needed. But as I rediscover photography in Atlantic Canada, I started to feel its limitations. I kept shooting with it anyway.</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/43a6394157a6d42a4a6e8cfa4d076f2c/21b8f/tokyo.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:66.66666666666666%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAQFA//EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHFmI7DJND/xAAcEAACAgIDAAAAAAAAAAAAAAAAAQISBBQREyH/2gAIAQEAAQUCjlNG267MiPpVdHCP/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFREBAQAAAAAAAAAAAAAAAAAAARD/2gAIAQIBAT8BWf/EABsQAAEEAwAAAAAAAAAAAAAAAAABEBFBQnGR/9oACAEBAAY/Aq4TCGLLtv/EABsQAQACAgMAAAAAAAAAAAAAAAEAITFBEVFh/9oACAEBAAE/Id24FWC8YirUa7LnYVB6T//aAAwDAQACAAMAAAAQs9//xAAVEQEBAAAAAAAAAAAAAAAAAAABEP/aAAgBAwEBPxAJ/8QAFhEBAQEAAAAAAAAAAAAAAAAAABEB/9oACAECAQE/EIrr/8QAHRABAQACAQUAAAAAAAAAAAAAAREAITFhkaHR4f/aAAgBAQABPxDwCeWMY4cvKXLJHpPmTVijQ5dQCKq261hiB3HrP//Z&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Photo of Tokyo just after sunset" title="Photo of Tokyo just after sunset" src="/static/43a6394157a6d42a4a6e8cfa4d076f2c/e5166/tokyo.jpg" srcSet="/static/43a6394157a6d42a4a6e8cfa4d076f2c/f93b5/tokyo.jpg 300w,/static/43a6394157a6d42a4a6e8cfa4d076f2c/b4294/tokyo.jpg 600w,/static/43a6394157a6d42a4a6e8cfa4d076f2c/e5166/tokyo.jpg 1200w,/static/43a6394157a6d42a4a6e8cfa4d076f2c/d9c39/tokyo.jpg 1800w,/static/43a6394157a6d42a4a6e8cfa4d076f2c/df51d/tokyo.jpg 2400w,/static/43a6394157a6d42a4a6e8cfa4d076f2c/21b8f/tokyo.jpg 4896w" 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>I started looking around and realized that you can buy really nice used DSLRs for not that much. I had a sick DSLR kit and I daydreamed about recreating that same setup. But it felt weird to invest in a DSLR kit when they are on their way out. And in the decade since I bought my last digital camera, the X100S, mirrorless cameras have gotten really good. They have some distinct advantages over DSLRs.</p><p>Mirrorless cameras are smaller and weigh less than DSLRs – and their lenses too. They often have a tilting LCD screen and I was interesting in using it as a waste-level viewfinder (like my TLR camera). And unlike DSLRs, mirrorless cameras can be adapted to work with my film lenses. My (only) tattoo is an optical diagram of my favourite lens, the Leica Summicron 50mm f/2. The idea of using my Summicron lens on digital really tickled me.</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/f567aa8dd7d34b12d4664c6fa15fe113/9568a/tattoo.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/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEBQH/xAAVAQEBAAAAAAAAAAAAAAAAAAACAf/aAAwDAQACEAMQAAABtz9HONaUlnY6El3iRD//xAAeEAACAQMFAAAAAAAAAAAAAAABAwIAESESMTIzQf/aAAgBAQABBQK2Gy0TDCR60XmE4AsWCo8VyJpm0Ov/xAAVEQEBAAAAAAAAAAAAAAAAAAABEP/aAAgBAwEBPwEhP//EABURAQEAAAAAAAAAAAAAAAAAABAB/9oACAECAQE/ASn/xAAbEAACAgMBAAAAAAAAAAAAAAAAARARAjFBcf/aAAgBAQAGPwItSjg6haQ7GY+H/8QAHxABAAICAgIDAAAAAAAAAAAAAQARITFBURBhcaHB/9oACAEBAAE/Icr/AF3GqC0phRaml2WfsyLvmGbQQLayzanEzZbi6iIV0eB6nyJ//9oADAMBAAIAAwAAABD/ABtD/8QAFhEAAwAAAAAAAAAAAAAAAAAAARAh/9oACAEDAQE/EAiCL//EABcRAAMBAAAAAAAAAAAAAAAAAAABIRD/2gAIAQIBAT8QbpRs/8QAIBABAAMAAgEFAQAAAAAAAAAAAQARITFBgZGhscHR4f/aAAgBAQABPxAGFFvRnlAYOQMSVkGumJUEVoejg/Uc/ChI4Pe/ZVM7DesqUWr+y9eEBXHmJZGHrNSeiJRaD8z/2Q==&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Photo of my tattoo" title="Photo of my tattoo" src="/static/f567aa8dd7d34b12d4664c6fa15fe113/e5166/tattoo.jpg" srcSet="/static/f567aa8dd7d34b12d4664c6fa15fe113/f93b5/tattoo.jpg 300w,/static/f567aa8dd7d34b12d4664c6fa15fe113/b4294/tattoo.jpg 600w,/static/f567aa8dd7d34b12d4664c6fa15fe113/e5166/tattoo.jpg 1200w,/static/f567aa8dd7d34b12d4664c6fa15fe113/d9c39/tattoo.jpg 1800w,/static/f567aa8dd7d34b12d4664c6fa15fe113/df51d/tattoo.jpg 2400w,/static/f567aa8dd7d34b12d4664c6fa15fe113/9568a/tattoo.jpg 3024w" 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>I was concerned about some of the downsides to mirrorless cameras, like shorter battery life and feeling more like a computer than a camera. But the thing I was most concerned about was having to use an electronic viewfinder. I’m used to being able to see, optically, the actual scene that I’m shooting. I was reluctant to give that up. So as an experiment, I started using my X100S with its electronic viewfinder. (In over ten years, I had barely used it.) The refresh rate was kind of laggy but I got used to it pretty quickly. I was actually enjoying the way the EVF gave me an exposure preview of the photo that the camera was actually going to record when I hit the shutter button – that’s something that DSLRs just can’t do. I figured that if the older X100S was usable, then a newer mirrorless camera would be great (spoilers I was right).</p><p>So then the question was: which camera system to get? Usually when a photographer picks a camera system, they’re either just getting started or they’re experienced and switching systems. I was in a distinct position to knowing what I wanted <em>but also</em> starting fresh. So let me outline my thinking. </p><p>Canon and Nikon had both initially missed the boat on mirrorless. Sony, FujiFilm, Olympus, and other manufacturers hadn’t been caught in the same “innovator’s dilemma” as the two market-leading DSLR makers, and so they had had a huge head start. Canon was also being weird about letting third party lens manufacturers not build on its new mirrorless lens mount, which gave me a bad vibe. And to be honest, Nikon digital cameras have always given me a bad vibe. </p><p>So I ruled out the giants. I considered Micro Four Thirds but decided against it. That narrowed it down to Sony or FujiFilm. I spent a lot of time researching opinions online and thinking about what I actually wanted in a camera.</p><p>Primarily, I wanted a camera that I would feel inspired by. When I was shooting on my walk to-and-from work in Manhattan every day, I didn’t need much inspiration. Photography was automatic. Now, working from home in Fredericton, photography is a decision. It’s something I go and do. I’ve been know to struggle with creative motivation so I was looking for a tool that would get me excited to use it.</p><p>I tried some cameras out in-person. <em>By far</em>, the FujiFilm cameras I tried were the clear winners. The Sony cameras reminded me that I’m using a computer, while the FujiFilm cameras felt like old film cameras. Many FujiFilm cameras have physical dials for shutter speed and ISO, and their lenses usually have aperture rings. It felt natural. After some more research, I made a decision on a model. Normally, I would buy a used camera and lens, but FujiFilm’s used market is currently overinflated (due to a lot of factors). So I picked a current model.</p><p>But before I bought anything, I hit a wall. I became preoccupied with anxiety that all this excitement was just Gear Acquisition Syndrome. When I first got into photography, I compulsively and continuously upgraded my gear. Over the years, I have bought cameras that I didn’t really need and that I quickly moved on from. Nerds call this GAS, and I’ve worked hard to get it under control. Now I found myself worried that my renewed interest in photography was somehow GAS in disguise, that I wasn’t authentically interested in photography at all. I wanted to make a responsible decision, both financially and creatively.</p><p>Because gear doesn’t matter. You can take great photos on bad cameras. And you can have a lot of fun doing it. Here is a photo I love, and the camera I used has an entire <em>two</em> shutter speeds – plus bulb mode! </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/5a814628da038a41f4413c10e0bfb958/e5a83/paris.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:62.66666666666667%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIEAQX/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAABazg5DEYf/8QAHBAAAgICAwAAAAAAAAAAAAAAAQIAEgMEESIx/9oACAEBAAEFAtfZrMmfoTzENVuzQ+//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAZEAADAAMAAAAAAAAAAAAAAAAAAREQISL/2gAIAQEABj8CjHyzZYV4/8QAGBABAQEBAQAAAAAAAAAAAAAAAQARIYH/2gAIAQEAAT8hwBaQke7VrDzVntPJM//aAAwDAQACAAMAAAAQL/8A/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFREBAQAAAAAAAAAAAAAAAAAAABH/2gAIAQIBAT8QR//EABsQAQEBAQEAAwAAAAAAAAAAAAERAEExUWFx/9oACAEBAAE/EBVm8BqfmfEBIKQ0+yO8+s5hvLzXK/jgzk3f/9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Black and white photo of Paris taken on a fold-out camera" title="Black and white photo of Paris taken on a fold-out camera" src="/static/5a814628da038a41f4413c10e0bfb958/e5166/paris.jpg" srcSet="/static/5a814628da038a41f4413c10e0bfb958/f93b5/paris.jpg 300w,/static/5a814628da038a41f4413c10e0bfb958/b4294/paris.jpg 600w,/static/5a814628da038a41f4413c10e0bfb958/e5166/paris.jpg 1200w,/static/5a814628da038a41f4413c10e0bfb958/d9c39/paris.jpg 1800w,/static/5a814628da038a41f4413c10e0bfb958/df51d/paris.jpg 2400w,/static/5a814628da038a41f4413c10e0bfb958/e5a83/paris.jpg 8044w" 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>It’s the photographer that matters, not the camera. (Of course, it’s easier to say “gear doesn’t matter” when you have nice gear. And I do have a nice film kit.) I started questioning whether I should buy a new digital camera at all. Wasn’t my X100S enough?</p><p>I sat with this for some time. I talked this over with a few people who know me. And I kept taking photos with the X100S. I started editing those photos in Apple Photos, then tried some more sophisticated tools like Photomator and ON1 Photo Raw, before (reluctantly) reactivating my Lightroom subscription. I had really been enjoying editing photos, in a way that I hadn’t for a long time. </p><p>Not suddenly, but slowly, I realized that my anxiety over a possibly “inauthentic” interest in photography was unfounded. I wasn’t trusting myself. It does make sense to sit on a big purchase decision like this, but I had. I <em>had</em> thought it over. And I knew I didn’t <em>need</em> it; I <em>wanted</em> it. (Confusing these two is an symptom of GAS.) I talked it over one last time with Ashley and then I hit the purchase button. </p><p>That was a month ago. So which camera did I get? </p><p>“Gear doesn’t matter.”</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/7cb7fc251719fccc58a214840bf86f85/afb4a/me.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/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEBQH/xAAWAQEBAQAAAAAAAAAAAAAAAAABAwD/2gAMAwEAAhADEAAAAazN5SesZ45yKFjGMB//xAAdEAACAgEFAAAAAAAAAAAAAAABAgAREwMQEjFB/9oACAEBAAEFAtV8aqbHIR1csbEymN1QYXW/v//EABYRAQEBAAAAAAAAAAAAAAAAABEAEP/aAAgBAwEBPwEjf//EABYRAQEBAAAAAAAAAAAAAAAAABEAEP/aAAgBAgEBPwFnf//EAB4QAAECBwEAAAAAAAAAAAAAAAABMQIQESAhMmGR/9oACAEBAAY/Ah0N4fR1oJwaWLf/xAAcEAEAAwADAQEAAAAAAAAAAAABABEhEDFBcYH/2gAIAQEAAT8hWyrXqHai+77xC4uTqeywGaX5G3yOa/YvCcMcU//aAAwDAQACAAMAAAAQHwpC/8QAGREAAwADAAAAAAAAAAAAAAAAAAERECEx/9oACAEDAQE/EOShPUx//8QAGBEAAgMAAAAAAAAAAAAAAAAAARARITH/2gAIAQIBAT8Q2hFyv//EAB0QAQADAQACAwAAAAAAAAAAAAEAESFRMWFxgZH/2gAIAQEAAT8QpndPTIJESlUOoCA/hgQQUG3vbjwVcpV1nz9wyL15xAUpajlDSqdiuliCQgUZPEKbP//Z&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Photo of me taking a photo with a tripod" title="Photo of me taking a photo with a tripod" src="/static/7cb7fc251719fccc58a214840bf86f85/e5166/me.jpg" srcSet="/static/7cb7fc251719fccc58a214840bf86f85/f93b5/me.jpg 300w,/static/7cb7fc251719fccc58a214840bf86f85/b4294/me.jpg 600w,/static/7cb7fc251719fccc58a214840bf86f85/e5166/me.jpg 1200w,/static/7cb7fc251719fccc58a214840bf86f85/d9c39/me.jpg 1800w,/static/7cb7fc251719fccc58a214840bf86f85/df51d/me.jpg 2400w,/static/7cb7fc251719fccc58a214840bf86f85/afb4a/me.jpg 4284w" 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>I’ll be publishing more photo blog posts <a href="https://photos.ashfurrow.com" target="_blank" rel="nofollow noopener noreferrer">over at my photo blog</a>. I’m exploring some new editing styles and I plan to write about that process over there. I don’t really know where people are sharing their photos online anymore, to get photo critique; let me know if you have suggestions. See you there! </p><![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>
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>Wed, 13 Aug 2025 01:27:02 GMT</lastBuildDate>
<item>
<title>
<![CDATA[ The Murderbot Blog ]]>
</title>
<description>
<![CDATA[ I've been a huge fan of The Murderbot Diaries series by Martha Wells for a few years now, and was very excited to see it adapted to… ]]>
</description>
<link>https://ashfurrow.com/blog/the-murderbot-blog/</link>
<guid isPermaLink="false">https://ashfurrow.com/blog/the-murderbot-blog/</guid>
<pubDate>Tue, 12 Aug 2025 00:00:00 GMT</pubDate>
<content:encoded><p>I’ve been a huge fan of <a href="https://en.wikipedia.org/wiki/The_Murderbot_Diaries" target="_blank" rel="nofollow noopener noreferrer"><em>The Murderbot Diaries</em> series by Martha Wells</a> for a few years now, and was very excited to see it adapted to television on Apple TV+. Every adaptation of a story to a new medium has to make creative choices and tradeoffs; it’s fun to pick apart the work to identify what’s been changed, think about why that might have been done, and examine the impact on the story. </p><p>As a fan of the books, I’m thrilled to see them adapted <em>at all</em> and I don’t want anyone thinking that I dislike the show. It was a joy to see <em>The Rise and Fall of Sanctuary Moon</em> show-within-a-show come to life.</p><p>This is an ensemble show, based on a single-person narrative novella. That was always going to be hard to adapt, so it makes sense that the production uses an ensemble cast to tell a larger story. More points of view makes it easier to tell a more complete story, and gives the audience more characters to relate to. But <em>too many</em> characters can create confusion, too. The show combined a few characters together and rearranged some of the relationships, to keep the story focused.</p><p>So we have this ensemble cast telling a story from multiple perspectives, adapted from a very first-person limited-perspective book. The tradeoff here is that you get less time with the titular protagonist, who is admittedly a weirdo. It could be difficult for audiences to relate to SecUnit, especially in a visual format. </p><p>These changes from the source material seem motivated to me, and so I find it easy to accept them and have fun with the story. Even as I wish we could spent more time with the inner life of SecUnit, I understand how that would be very difficult to portray.</p><p>The story itself also had to be adapted to fit into ten episodes. This change was less effectively executed than the character changes, in my opinion. The pacing of the show would speed up and slow down so quickly that it felt kind of clumsy. Life-or-death action scenes would be punctuated by relationship drama. The seams of the adaptation were visible.</p><p>The television show also nerfed the characters. This was a bummer, honestly. The human characters and SecUnit all make poor decisions and get themselves into unnecessary trouble. And I kind of see why. It’s hard to tell a compelling story when all the characters are hyper-competent (that’s part of why <em>Star Trek Voyager</em> is the way it is). Having the characters make mistakes also allows for more a more dynamic story, making it easier to adapt to television. This was harder for me to roll with, but I see the utility in it from a production and storytelling perspective.</p><p>I’ve given these examples as a way to show that <em>motivated changes</em> can lead to a story that works better for a television audience, even as I (a fan) would have preferred something different. I’m not saying that the motivation is good or bad, or that the motivation makes the changes good or bad. I’m saying that I understand it, so I find it easy to roll with as a viewer.</p><p>But there was one story shift that I don’t understand that’s been bothering me. </p><p>In the books, sprawling corporations fight each other for power and control of a lot of human-occupied space called the Corporation Rim. It’s a place ruled by contracts and force. The Corporation Rim is home to multigenerational indentured labour contracts, massive amounts of suffering, and wanton death – all for the sake of profit.</p><p>Our humans, in the Preservation Alliance, exist outside the Corporation Rim. But they do interact with it, and it disgusts them. This is a key thing I love about the books: Preservation Alliance is depicted as an <em>actual, functioning utopia</em>. The planetary alliance has built a society where everyone has access to food and shelter, where menial labour has been automated, and where violent crime does not exist. </p><p>By depicting Preservation Alliance this way, the books implicitly show that the cruelty and suffering of the Corporation Rim <em>is a choice</em>. It is optional. Something that our human characters avoid.</p><p>So it really bothered me when the television adaptation depicted Preservation Alliance as so hapless and resource-starved that they were considering joining the Corporation Rim. I don’t understand the motivation behind it. Granted, it’s a <em>relatively minor</em> change that <em>doesn’t necessarily</em> contradict anything in the books. But it does contradicts the story in my head. This was one of the most important background details of the setting to me and it kind of hurt to see it thrown away.</p><p>Adaptations and creators don’t owe anyone explanations about the story choices they make. But if I ever got the chance to ask the show runners a question, I know what I would ask.</p></content:encoded>
</item>
<item>
<title>
<![CDATA[ Bias Towards Helpfulness ]]>
</title>
<description>
<![CDATA[ I've been using Cursor for coding tasks lately, trying to explore what kinds of work it performs well and poorly. It's pretty good at most… ]]>
</description>
<link>https://ashfurrow.com/blog/bias-towards-helpfulness/</link>
<guid isPermaLink="false">https://ashfurrow.com/blog/bias-towards-helpfulness/</guid>
<pubDate>Mon, 23 Jun 2025 00:00:00 GMT</pubDate>
<content:encoded><p>I’ve been using Cursor for coding tasks lately, trying to explore what kinds of work it performs well and poorly. It’s pretty good at most simple tasks. It’s good-to-okay at some complicated tasks. But then, some simple tasks can stump it – usually in very niche domains. Other tasks are <em>so big</em> that they need to be broken into smaller pieces first – a classic project management problem.</p><p>I ran into this last kind of problem recently, when I tried to prototype a large idea for this blog, my personal website. I told Cursor what we’re doing and it started strong. It was making great progress when suddenly it got stuck, in a loop, on a <em>very</em> simple change to a config file.</p><p>My approach had been too much, too fast. To refine my approach, I tried using a conversational LLM instead of Cursor. I’ve generally not used conversational LLMs like ChatGPT until a few months ago, because I hadn’t found them to be that useful and because it’s rational to be skeptical of tech hype. But people <em>are</em> using them, for all kinds of things. Conversational LLMs are replacing search, in terms of user behaviour. I had heard of developers using them to help think through ideas and plans, so why not try? </p><p>I talked my idea through with the LLM and… it was actually pretty helpful! It was a bit like “rubber duck debugging” if the rubber duck could answer you. And lookup GitHub issues, and quote documentation, etc. I was pretty impressed. It validated my idea was a good idea and suggested some alternatives.</p><p>The next day, I was meeting another developer for a coffee and my idea came up in our conversation. I explained my idea, asked his opinion, and the <em>first</em> thing he said <em>didn’t answer my question at all</em>. Instead, he responded with a question of his own. (A <em>really good</em> question, too. Incisive.) I gave him my answer, and he asked a very good followup question: how much time was I interested in spending on this idea? Only when he understood the full context and my motivation did he give me his perspective.</p><p>Conversational AI’s have a <em>bias towards helpfulness</em>. That may sound absurd, but it’s true: LLMs have been trained on helpful conversations from the internet (StackOverflow, for example). LLMs are given system prompts instructing them to answer user questions. They “want” to help us and it’s important to be aware of that. This bias prevents LLMs from being able to distinguish prompts that are vague on purpose (users looking for general answers) and vague incidentally (users needing followup questions and/or pushback). LLMs are designed to help users <em>by answering their prompts</em>, not telling them when they’re trying to do something really stupid.</p><p>It’s as though LLMs are bound by a local maxima of helpfulness. Sure, they’re helping users with their requests. But they can easily, silently fail to consider the bigger picture. People are messy and they have messy problems.</p><p>The developer I spoke to had the experience, expertise, and relationship with me to cut straight to the heart of my question. I hadn’t meant this as an experiment, but it’s interesting to think about: when asked the same question, the LLM responded with an answer but the developer responded with a question of his own. I think this is another case of learning what tasks an LLM can help with, or rather, learning the limitations of using an LLM for this kind of task.</p><p>I want to clarify my stance here because I don’t want to be labelled as either a hater or a booster. (Or labelled at all, thanks.) LLMs <em>do</em> have limitations, they <em>have</em> improved, and I <em>am</em> open to the idea that an LLM could be built that is capable of this kind of intentional, selective <em>un</em>helpfulness. To ask clarifying questions or push back on bad ideas. That an LLM product could even use previous interactions with me as context to tailor responses, similar to how a coworker or collaborator might. Indeed, <em>a lot</em> of companies are spending <em>a lot</em> of time and money trying to build AI assistants which develop a “relationship” with users. Maybe they will build something genuinely as helpful and incisive as another skilled human. But I would have to use it to believe it.</p><p>Incidentally, both the developer and the LLM ultimately arrived at the same answer. But, the developer was better company.</p></content:encoded>
</item>
<item>
<title>
<![CDATA[ Foresight ]]>
</title>
<description>
<![CDATA[ Imagine you are a software developer. It's the early 1970's and you make a living writing Basic Assembly Language to build software for the… ]]>
</description>
<link>https://ashfurrow.com/blog/foresight/</link>
<guid isPermaLink="false">https://ashfurrow.com/blog/foresight/</guid>
<pubDate>Sun, 22 Jun 2025 00:00:00 GMT</pubDate>
<content:encoded><p>Imagine you are a software developer. It’s the early 1970’s and you make a living writing Basic Assembly Language to build software for the System/360 mainframe. You are great at your job and you enjoy it.</p><p>You keep hearing about new “high level” programming languages that would allow you to write code in a way that could be “compiled” to run on different kinds of computers. In theory, this would be a huge benefit over writing assembly for just one kind of computer. But there’s a catch: these compilers aren’t reliable. The code they produce has bugs that wouldn’t have existed if a human had written the equivalent application in assembly. The code is inefficient, it is a mess to debug, and you have to use a whole new tool, a compiler. </p><p>Compilers introduce a layer of abstraction. Another build step. Another cost. Another skill. Using a compiler would <em>mediate the work of programming</em>, alienating a programmer from both their craft and their labour. <strong>Compilers come with tradeoffs</strong>. You don’t really like these tradeoffs, personally, and decide to stick with BAL.</p><p>But you keep an eye on new compilers.</p><p>Over time, compilers become more reliable, more stable, more performant. There are a lot of new languages and tools and it’s hard for you to know which ones to invest time into learning. (We all remember what happened to PL/I, am I right?) </p><p>You decide to learn a new language named C in your spare time.</p><p>You have a long and prosperous career.</p><p>The End.</p><hr/><p>Imagine you are a software developer who considers themselves to be a moral person. It’s the early 1970’s and you make a living writing Basic Assembly Language to build software for the System/360 mainframe. You are great at your job and you enjoy it.</p><p>You keep hearing about new “high level” programming languages that would allow you to write code in a way that could be “compiled” to run on different kinds of computers. In theory, this would be a huge benefit over writing assembly for just one kind of computer. </p><p>But there’s a catch: <strong>these compilers are cursed</strong>. </p><p>Compilers are conjured by programmers wearing dark cloaks, chanting under the cover of a new moon. It’s an eldritch ceremony. No one <em>really</em> understands how a compiler works, other than… <em>the cost</em>. Every time a programmer compiles a program, <em>the cost</em> is extracted. Every time a programmer compiles a program, someone – somewhere – suffers. Someone suffers just a little bit, and the programmer doesn’t get to see it. </p><p>(Also compilers are slow, unreliable, hard to debug, etc. All the same tradeoffs readers are familiar with, they’re just <em>also</em> cursed.) </p><p><strong>Compilers come with tradeoffs</strong>. You don’t really like these tradeoffs, personally, and decide to stick with BAL.</p><p>But you keep an eye on new compilers.</p><p>Over time, compilers become more reliable, more stable, more performant. The curse remains. You see the enormous value in using a compiler, you see how much more productive you could be if you used this tool. </p><p>You try using one compiler, and it doesn’t work. You wait a while, and you try another. A new one. It <em>does</em> work. In fact, it <em>exceeds your wildest expectations</em>. You feel conflicted.</p><p>You consider yourself a moral person. You know about the curse. You see other programmers declining to make the switch, correctly pointing to the tradeoffs. </p><p>“Compilers aren’t worth it,” the other programmers assert. “The curse is an unacceptable tradeoff! We refuse to use a compiler!”</p><p>But here’s the thing. Programmers aren’t the ones who get to decide what is worth the cost.</p><p>You can see ahead. You see jobs writing assembly getting harder to come by. They don’t <em>entirely</em> disappear, but… you see the industry moving on. You see an entire new generation of programmers entering the workforce who have <em>never not</em> used a compiler. </p><p>You have bills to pay, a career to think about, and you can see ahead. And, these compilers are actually pretty fun and useful. You find yourself excited about all the cool things you could build with them.</p><p>You still consider yourself a moral person. And you make a decision.</p></content:encoded>
</item>
<item>
<title>
<![CDATA[ Camera Time ]]>
</title>
<description>
<![CDATA[ Recently, I published my first photo blog post since 2018 . (Yes I have a separate photo blog, because of course I do.) So what's up with… ]]>
</description>
<link>https://ashfurrow.com/blog/camera-time/</link>
<guid isPermaLink="false">https://ashfurrow.com/blog/camera-time/</guid>
<pubDate>Sat, 31 May 2025 00:00:00 GMT</pubDate>
<content:encoded><p>Recently, I published <a href="https://photos.ashfurrow.com/downtown-in-the-rain" target="_blank" rel="nofollow noopener noreferrer">my first photo blog post since 2018</a>. (Yes I have a separate photo blog, because of course I do.) So what’s up with that? Nothing better than a blog post about another blog post.</p><p>I haven’t really been doing a lot of photography since the pandemic, but I had been increasingly drawn to it over the past six months. Creativity is actually something I’ve found to be missing in my life – when I found a renewed interest in photography, I decided to follow it. I started taking more photos on my iPhone, then I got out my film cameras since that’s what I <em>had</em> been mainly shooting. But film wasn’t working for me, so I got out my digital camera, a FujiFilm X100S from 2014. And I loved it.</p><p>But, that camera has some limitations I was hitting. First, it’s a fixed focal length and I felt myself wanting something with more reach. I’ve only used prime lenses since 2014 and I enjoyed their limitations. Prime lenses helped me improve my composition skills, but now I’m ready for a zoom. The X100S is also from 2014, which means it’s from near the <em>very beginning</em> of the industry’s transition to mirrorless. So, it’s fiddly.</p><p>Don’t get me wrong – I’ve taken some of my favourite shots with the X100S. I have a large canvas print of <a href="https://photos.ashfurrow.com/losing-myself-in-tokyo/photos/2580931" target="_blank" rel="nofollow noopener noreferrer">a long exposure of Tokyo taken from Roppongi Tower</a> hanging in my office, and I took that with the X100S. Back when I used to travel a lot, The X100S was exactly what I needed. But as I rediscover photography in Atlantic Canada, I started to feel its limitations. I kept shooting with it anyway.</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/43a6394157a6d42a4a6e8cfa4d076f2c/21b8f/tokyo.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:66.66666666666666%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAQFA//EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHFmI7DJND/xAAcEAACAgIDAAAAAAAAAAAAAAAAAQISBBQREyH/2gAIAQEAAQUCjlNG267MiPpVdHCP/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFREBAQAAAAAAAAAAAAAAAAAAARD/2gAIAQIBAT8BWf/EABsQAAEEAwAAAAAAAAAAAAAAAAABEBFBQnGR/9oACAEBAAY/Aq4TCGLLtv/EABsQAQACAgMAAAAAAAAAAAAAAAEAITFBEVFh/9oACAEBAAE/Id24FWC8YirUa7LnYVB6T//aAAwDAQACAAMAAAAQs9//xAAVEQEBAAAAAAAAAAAAAAAAAAABEP/aAAgBAwEBPxAJ/8QAFhEBAQEAAAAAAAAAAAAAAAAAABEB/9oACAECAQE/EIrr/8QAHRABAQACAQUAAAAAAAAAAAAAAREAITFhkaHR4f/aAAgBAQABPxDwCeWMY4cvKXLJHpPmTVijQ5dQCKq261hiB3HrP//Z&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Photo of Tokyo just after sunset" title="Photo of Tokyo just after sunset" src="/static/43a6394157a6d42a4a6e8cfa4d076f2c/e5166/tokyo.jpg" srcSet="/static/43a6394157a6d42a4a6e8cfa4d076f2c/f93b5/tokyo.jpg 300w,/static/43a6394157a6d42a4a6e8cfa4d076f2c/b4294/tokyo.jpg 600w,/static/43a6394157a6d42a4a6e8cfa4d076f2c/e5166/tokyo.jpg 1200w,/static/43a6394157a6d42a4a6e8cfa4d076f2c/d9c39/tokyo.jpg 1800w,/static/43a6394157a6d42a4a6e8cfa4d076f2c/df51d/tokyo.jpg 2400w,/static/43a6394157a6d42a4a6e8cfa4d076f2c/21b8f/tokyo.jpg 4896w" 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>I started looking around and realized that you can buy really nice used DSLRs for not that much. I had a sick DSLR kit and I daydreamed about recreating that same setup. But it felt weird to invest in a DSLR kit when they are on their way out. And in the decade since I bought my last digital camera, the X100S, mirrorless cameras have gotten really good. They have some distinct advantages over DSLRs.</p><p>Mirrorless cameras are smaller and weigh less than DSLRs – and their lenses too. They often have a tilting LCD screen and I was interesting in using it as a waste-level viewfinder (like my TLR camera). And unlike DSLRs, mirrorless cameras can be adapted to work with my film lenses. My (only) tattoo is an optical diagram of my favourite lens, the Leica Summicron 50mm f/2. The idea of using my Summicron lens on digital really tickled me.</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/f567aa8dd7d34b12d4664c6fa15fe113/9568a/tattoo.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/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEBQH/xAAVAQEBAAAAAAAAAAAAAAAAAAACAf/aAAwDAQACEAMQAAABtz9HONaUlnY6El3iRD//xAAeEAACAQMFAAAAAAAAAAAAAAABAwIAESESMTIzQf/aAAgBAQABBQK2Gy0TDCR60XmE4AsWCo8VyJpm0Ov/xAAVEQEBAAAAAAAAAAAAAAAAAAABEP/aAAgBAwEBPwEhP//EABURAQEAAAAAAAAAAAAAAAAAABAB/9oACAECAQE/ASn/xAAbEAACAgMBAAAAAAAAAAAAAAAAARARAjFBcf/aAAgBAQAGPwItSjg6haQ7GY+H/8QAHxABAAICAgIDAAAAAAAAAAAAAQARITFBURBhcaHB/9oACAEBAAE/Icr/AF3GqC0phRaml2WfsyLvmGbQQLayzanEzZbi6iIV0eB6nyJ//9oADAMBAAIAAwAAABD/ABtD/8QAFhEAAwAAAAAAAAAAAAAAAAAAARAh/9oACAEDAQE/EAiCL//EABcRAAMBAAAAAAAAAAAAAAAAAAABIRD/2gAIAQIBAT8QbpRs/8QAIBABAAMAAgEFAQAAAAAAAAAAAQARITFBgZGhscHR4f/aAAgBAQABPxAGFFvRnlAYOQMSVkGumJUEVoejg/Uc/ChI4Pe/ZVM7DesqUWr+y9eEBXHmJZGHrNSeiJRaD8z/2Q==&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Photo of my tattoo" title="Photo of my tattoo" src="/static/f567aa8dd7d34b12d4664c6fa15fe113/e5166/tattoo.jpg" srcSet="/static/f567aa8dd7d34b12d4664c6fa15fe113/f93b5/tattoo.jpg 300w,/static/f567aa8dd7d34b12d4664c6fa15fe113/b4294/tattoo.jpg 600w,/static/f567aa8dd7d34b12d4664c6fa15fe113/e5166/tattoo.jpg 1200w,/static/f567aa8dd7d34b12d4664c6fa15fe113/d9c39/tattoo.jpg 1800w,/static/f567aa8dd7d34b12d4664c6fa15fe113/df51d/tattoo.jpg 2400w,/static/f567aa8dd7d34b12d4664c6fa15fe113/9568a/tattoo.jpg 3024w" 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>I was concerned about some of the downsides to mirrorless cameras, like shorter battery life and feeling more like a computer than a camera. But the thing I was most concerned about was having to use an electronic viewfinder. I’m used to being able to see, optically, the actual scene that I’m shooting. I was reluctant to give that up. So as an experiment, I started using my X100S with its electronic viewfinder. (In over ten years, I had barely used it.) The refresh rate was kind of laggy but I got used to it pretty quickly. I was actually enjoying the way the EVF gave me an exposure preview of the photo that the camera was actually going to record when I hit the shutter button – that’s something that DSLRs just can’t do. I figured that if the older X100S was usable, then a newer mirrorless camera would be great (spoilers I was right).</p><p>So then the question was: which camera system to get? Usually when a photographer picks a camera system, they’re either just getting started or they’re experienced and switching systems. I was in a distinct position to knowing what I wanted <em>but also</em> starting fresh. So let me outline my thinking. </p><p>Canon and Nikon had both initially missed the boat on mirrorless. Sony, FujiFilm, Olympus, and other manufacturers hadn’t been caught in the same “innovator’s dilemma” as the two market-leading DSLR makers, and so they had had a huge head start. Canon was also being weird about letting third party lens manufacturers not build on its new mirrorless lens mount, which gave me a bad vibe. And to be honest, Nikon digital cameras have always given me a bad vibe. </p><p>So I ruled out the giants. I considered Micro Four Thirds but decided against it. That narrowed it down to Sony or FujiFilm. I spent a lot of time researching opinions online and thinking about what I actually wanted in a camera.</p><p>Primarily, I wanted a camera that I would feel inspired by. When I was shooting on my walk to-and-from work in Manhattan every day, I didn’t need much inspiration. Photography was automatic. Now, working from home in Fredericton, photography is a decision. It’s something I go and do. I’ve been know to struggle with creative motivation so I was looking for a tool that would get me excited to use it.</p><p>I tried some cameras out in-person. <em>By far</em>, the FujiFilm cameras I tried were the clear winners. The Sony cameras reminded me that I’m using a computer, while the FujiFilm cameras felt like old film cameras. Many FujiFilm cameras have physical dials for shutter speed and ISO, and their lenses usually have aperture rings. It felt natural. After some more research, I made a decision on a model. Normally, I would buy a used camera and lens, but FujiFilm’s used market is currently overinflated (due to a lot of factors). So I picked a current model.</p><p>But before I bought anything, I hit a wall. I became preoccupied with anxiety that all this excitement was just Gear Acquisition Syndrome. When I first got into photography, I compulsively and continuously upgraded my gear. Over the years, I have bought cameras that I didn’t really need and that I quickly moved on from. Nerds call this GAS, and I’ve worked hard to get it under control. Now I found myself worried that my renewed interest in photography was somehow GAS in disguise, that I wasn’t authentically interested in photography at all. I wanted to make a responsible decision, both financially and creatively.</p><p>Because gear doesn’t matter. You can take great photos on bad cameras. And you can have a lot of fun doing it. Here is a photo I love, and the camera I used has an entire <em>two</em> shutter speeds – plus bulb mode! </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/5a814628da038a41f4413c10e0bfb958/e5a83/paris.jpg" style="display:block" target="_blank" rel="noopener"> <span class="gatsby-resp-image-background-image" style="padding-bottom:62.66666666666667%;position:relative;bottom:0;left:0;background-image:url(&#x27;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIEAQX/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAABazg5DEYf/8QAHBAAAgICAwAAAAAAAAAAAAAAAQIAEgMEESIx/9oACAEBAAEFAtfZrMmfoTzENVuzQ+//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAZEAADAAMAAAAAAAAAAAAAAAAAAREQISL/2gAIAQEABj8CjHyzZYV4/8QAGBABAQEBAQAAAAAAAAAAAAAAAQARIYH/2gAIAQEAAT8hwBaQke7VrDzVntPJM//aAAwDAQACAAMAAAAQL/8A/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFREBAQAAAAAAAAAAAAAAAAAAABH/2gAIAQIBAT8QR//EABsQAQEBAQEAAwAAAAAAAAAAAAERAEExUWFx/9oACAEBAAE/EBVm8BqfmfEBIKQ0+yO8+s5hvLzXK/jgzk3f/9k=&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Black and white photo of Paris taken on a fold-out camera" title="Black and white photo of Paris taken on a fold-out camera" src="/static/5a814628da038a41f4413c10e0bfb958/e5166/paris.jpg" srcSet="/static/5a814628da038a41f4413c10e0bfb958/f93b5/paris.jpg 300w,/static/5a814628da038a41f4413c10e0bfb958/b4294/paris.jpg 600w,/static/5a814628da038a41f4413c10e0bfb958/e5166/paris.jpg 1200w,/static/5a814628da038a41f4413c10e0bfb958/d9c39/paris.jpg 1800w,/static/5a814628da038a41f4413c10e0bfb958/df51d/paris.jpg 2400w,/static/5a814628da038a41f4413c10e0bfb958/e5a83/paris.jpg 8044w" 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>It’s the photographer that matters, not the camera. (Of course, it’s easier to say “gear doesn’t matter” when you have nice gear. And I do have a nice film kit.) I started questioning whether I should buy a new digital camera at all. Wasn’t my X100S enough?</p><p>I sat with this for some time. I talked this over with a few people who know me. And I kept taking photos with the X100S. I started editing those photos in Apple Photos, then tried some more sophisticated tools like Photomator and ON1 Photo Raw, before (reluctantly) reactivating my Lightroom subscription. I had really been enjoying editing photos, in a way that I hadn’t for a long time. </p><p>Not suddenly, but slowly, I realized that my anxiety over a possibly “inauthentic” interest in photography was unfounded. I wasn’t trusting myself. It does make sense to sit on a big purchase decision like this, but I had. I <em>had</em> thought it over. And I knew I didn’t <em>need</em> it; I <em>wanted</em> it. (Confusing these two is an symptom of GAS.) I talked it over one last time with Ashley and then I hit the purchase button. </p><p>That was a month ago. So which camera did I get? </p><p>“Gear doesn’t matter.”</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/7cb7fc251719fccc58a214840bf86f85/afb4a/me.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/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEBQH/xAAWAQEBAQAAAAAAAAAAAAAAAAABAwD/2gAMAwEAAhADEAAAAazN5SesZ45yKFjGMB//xAAdEAACAgEFAAAAAAAAAAAAAAABAgAREwMQEjFB/9oACAEBAAEFAtV8aqbHIR1csbEymN1QYXW/v//EABYRAQEBAAAAAAAAAAAAAAAAABEAEP/aAAgBAwEBPwEjf//EABYRAQEBAAAAAAAAAAAAAAAAABEAEP/aAAgBAgEBPwFnf//EAB4QAAECBwEAAAAAAAAAAAAAAAABMQIQESAhMmGR/9oACAEBAAY/Ah0N4fR1oJwaWLf/xAAcEAEAAwADAQEAAAAAAAAAAAABABEhEDFBcYH/2gAIAQEAAT8hWyrXqHai+77xC4uTqeywGaX5G3yOa/YvCcMcU//aAAwDAQACAAMAAAAQHwpC/8QAGREAAwADAAAAAAAAAAAAAAAAAAERECEx/9oACAEDAQE/EOShPUx//8QAGBEAAgMAAAAAAAAAAAAAAAAAARARITH/2gAIAQIBAT8Q2hFyv//EAB0QAQADAQACAwAAAAAAAAAAAAEAESFRMWFxgZH/2gAIAQEAAT8QpndPTIJESlUOoCA/hgQQUG3vbjwVcpV1nz9wyL15xAUpajlDSqdiuliCQgUZPEKbP//Z&#x27;);background-size:cover;display:block"></span> <img class="gatsby-resp-image-image" alt="Photo of me taking a photo with a tripod" title="Photo of me taking a photo with a tripod" src="/static/7cb7fc251719fccc58a214840bf86f85/e5166/me.jpg" srcSet="/static/7cb7fc251719fccc58a214840bf86f85/f93b5/me.jpg 300w,/static/7cb7fc251719fccc58a214840bf86f85/b4294/me.jpg 600w,/static/7cb7fc251719fccc58a214840bf86f85/e5166/me.jpg 1200w,/static/7cb7fc251719fccc58a214840bf86f85/d9c39/me.jpg 1800w,/static/7cb7fc251719fccc58a214840bf86f85/df51d/me.jpg 2400w,/static/7cb7fc251719fccc58a214840bf86f85/afb4a/me.jpg 4284w" 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>I’ll be publishing more photo blog posts <a href="https://photos.ashfurrow.com" target="_blank" rel="nofollow noopener noreferrer">over at my photo blog</a>. I’m exploring some new editing styles and I plan to write about that process over there. I don’t really know where people are sharing their photos online anymore, to get photo critique; let me know if you have suggestions. See you there! </p></content:encoded>
</item>
<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>
</channel>
</rss>