<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 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">
  <channel>
    <title><![CDATA[Ash Furrow's Blog]]></title>
    <link>https://ashfurrow.com</link>
    <atom:link href="https://ashfurrow.com/feed.xml" rel="self" type="application/rss+xml" />
    <description><![CDATA[Compassionate Software Developer]]></description>
    <language>en</language>
    <item>
      <title><![CDATA[The Over-Engineering Method]]></title>
      <link>https://ashfurrow.com/blog/the-over-engineering-method/</link>
      <pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate>
      <guid>https://ashfurrow.com/blog/the-over-engineering-method/</guid>
      <description><![CDATA[In Canada, “Engineer” is a protected term. I am a software developer, not a Software Engineer. There are valid reasons – historical reasons – to restrict who is a capital-E Engineer, but these reasons are at odds with how the term is commonly used today....]]></description>
      <content:encoded>&lt;p&gt;In Canada, “Engineer” is a protected term. I am a software &lt;em&gt;developer&lt;/em&gt;, not a Software &lt;em&gt;Engineer&lt;/em&gt;. There are valid reasons – &lt;em&gt;historical reasons&lt;/em&gt; – to restrict who is a capital-E Engineer, but these reasons are at odds with how the term is commonly used today. Nevertheless, my job title &lt;em&gt;was&lt;/em&gt; “Software Engineer” for seven years while I worked in the US, and I personally think that software development is best approached as an engineering problem.&lt;/p&gt;
&lt;p&gt;Bill Hammack (aka The Engineering Guy) has &lt;a href=&quot;https://www.youtube.com/playlist?list=PL0INsTTU1k2X4kCPqmi1eJBgmYJUth_2s&quot;&gt;an excellent playlist&lt;/a&gt; on “the engineering method”, which he defines as:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Solving problems using rules of thumb that cause the best change in a poorly understood situation using available resources.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hammack’s videos describe the history of engineering, how it’s inaccurate to only think of engineering as applied understanding. How engineering is something done at, and just beyond, the edge of scientific understanding &lt;em&gt;that advances&lt;/em&gt; that understanding.&lt;/p&gt;
&lt;p&gt;I had some time off recently and wanted to reconnect to this engineering mentality, absent from &lt;em&gt;code&lt;/em&gt; specifically. &lt;a href=&quot;https://ashfurrow.com/blog/disintegrate-reintegrate-extrude/&quot;&gt;My 3D printer&lt;/a&gt; arrived recently, so I decided to apply some engineering method to my home office desk setup. My work-from-home setup is important to me – it’s where I spend a lot of my time. Maybe I’m also still traumatized from working in a one-bedroom apartment with my wife and two cats for ten months of 2020, maybe. Regardless, I’ve lived here for four years and I’m pretty proud of my setup.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/the-over-engineering-method/IMG_2441.jpeg&quot; alt=&quot;My current desk setup.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I keep iterating. I recently tried multiple monitors, but it’s not a setup I work well with. I’ve settled on a laptop in clamshell mode on the desk, so it’s easy to access. I use an Apple Studio Display but I route a USB hub from the monitor for everything to connect to. The laptop just goes to the monitor. Unfortunately, I’ve run out of USB ports.&lt;/p&gt;
&lt;div class=&quot;narrow&quot;&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/the-over-engineering-method/IMG_2442.jpeg&quot; alt=&quot;USB hub taped to a desk without available ports.&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Also, it’s a bit messy. I’ve tried to make it tidier over the years, but I can still see the mess of wires under the desk. Especially at standing height. I don’t mind cables but I do mind mess.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/the-over-engineering-method/IMG_2456.jpeg&quot; alt=&quot;The ugly underbelly of my desk.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I chose &lt;a href=&quot;https://www.opengrid.world/&quot;&gt;openGrid&lt;/a&gt; with &lt;a href=&quot;https://www.opengrid.world/guides/quickstart/underware/&quot;&gt;UnderWare&lt;/a&gt; as a means to organize the cables under my desk. This is actually an area of active development in the 3D printer world, and there are more popular systems than openGrid. But I like the idea of an grid system built &lt;em&gt;with desk organizing in mind&lt;/em&gt;. And it’s open source. I bought a new powered USB hub that &lt;a href=&quot;https://makerworld.com/en/models/1699061-opengrid-tp-link-powered-usb-hub-uh700-uh720&quot;&gt;someone had already designed an openGrid mount for&lt;/a&gt;. (The hub is &lt;em&gt;powered&lt;/em&gt; so I can attach further hubs, if needed.) I removed a few things from the desk that I didn’t need, like a light strip and a network switch.&lt;/p&gt;
&lt;p&gt;Instead of planning everything up front, I tried to make individual changes to move in the right direction. I started printing single pieces that I needed to cover the desk in a grid, and proceeded from there.&lt;/p&gt;
&lt;div class=&quot;narrow&quot;&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/the-over-engineering-method/IMG_2462.jpeg&quot; alt=&quot;Printing an openGrid grid with missing sections.&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I learned some TinkerCAD and Autodesk Fusion. I learned that 3D printing “slicer” software is a whole different skill. I already had a working understanding of computer graphics and strong graphic design skills (for a programmer) so I wasn’t starting from scratch. I would guess that a lot of people getting into 3D printing don’t know what “world coordinates” are, for example.&lt;/p&gt;
&lt;div class=&quot;narrow&quot;&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/the-over-engineering-method/IMG_2465.jpeg&quot; alt=&quot;The openGrid grid from above, showing the missing sections were to accommodate my monitor stand mount.&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I started by printing other people’s models, but soon started modifying them to suit my needs. I wanted to mount a light under my desk to use as a bias light (I didn’t like it behind my monitor) so I modified an openGrid part to hold some random camera part I had lying around, which has a 1/4&amp;quot; tripod mount.&lt;/p&gt;
&lt;div class=&quot;narrow&quot;&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/the-over-engineering-method/IMG_2482.jpeg&quot; alt=&quot;Photo of a 3D printer bed, with piece of metal with a tripod mount stuck to it, next to a 3D part that has a hole for that piece of metal.&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The printer itself slowed down my iteration loop, which made it easier to be more intentional.&lt;/p&gt;
&lt;div class=&quot;narrow&quot;&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/the-over-engineering-method/IMG_2502.jpeg&quot; alt=&quot;Photo of an upside down light bar projecting bias light against my wall, under my desk.&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I confess that I went overboard a bit, and that’s okay. It felt great reconnecting to that problem-solving feeling on an intrinsic level, outside the context of coding.&lt;/p&gt;
&lt;div class=&quot;narrow&quot;&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/the-over-engineering-method/IMG_2478.jpeg&quot; alt=&quot;Photo of the underside of my desk, with neatly arranged power cables.&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;narrow&quot;&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/the-over-engineering-method/IMG_2480.jpeg&quot; alt=&quot;Photo of the underside of my desk, showing a neatly arranged USB hub. Some channels are still missing.&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;My 3D printer is this amazing new tool that can solve a lot of problems. An overwhelming amount, actually. I’m now kind of surveying the different areas of 3D printing, letting my interests guide me.&lt;/p&gt;
&lt;div class=&quot;narrow&quot;&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/the-over-engineering-method/IMG_2501.jpeg&quot; alt=&quot;Photo of the underside of my desk, showing all the cable channels.&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;There are still some cables you can see, but I’ve reduced this mess to its minimum. The remaining visible cables are the Thunderbolt cable for my laptop, and a Lightning and USB-C cable for connecting test devices.&lt;/p&gt;
&lt;div class=&quot;narrow&quot;&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/the-over-engineering-method/IMG_2503.jpeg&quot; alt=&quot;Photo of under my desk, with the cables all in channels.&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Back at Artsy, I kept a pretty tidy desk. My approach remains to &lt;em&gt;minimize&lt;/em&gt; distractions without being overzealous about &lt;em&gt;eliminating&lt;/em&gt; distractions. For instance, my monitor arm has less wobble when it’s extended less, so the monitor is offset from the centre of the desk. I dislike that it’s off-centre, but I’ve done everything else I can to remove the wobble. And this &lt;em&gt;does&lt;/em&gt; create a handy drop zone on the right, where I can set things as they come and go from the rest of the house (mostly coffee mugs).&lt;/p&gt;
&lt;div class=&quot;narrow&quot;&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/the-over-engineering-method/IMG_2499.jpeg&quot; alt=&quot;Photo of the top of my desk, which is largely unchanged.&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The other night, I was walking up the stairs, and I found my office looking extra cozy. No cables, with softer light. This is exactly what I wanted.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/the-over-engineering-method/IMG_2504.jpeg&quot; alt=&quot;My cozy office.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Well, maybe not &lt;em&gt;exactly&lt;/em&gt; what I wanted 😅 I’m thinking of 3D printing a cable chain to hide the mess of the power and ethernet cables going up to my desk. This project never ends.&lt;/p&gt;
&lt;p&gt;Designing a home office is a fun hobby, and I’m grateful to have the means to pursue it. I’m headed back to work tomorrow, and I’m feeling ready to code.&lt;/p&gt;
</content:encoded>
    </item>
    <item>
      <title><![CDATA[Disintegrate, Reintegrate, Extrude]]></title>
      <link>https://ashfurrow.com/blog/disintegrate-reintegrate-extrude/</link>
      <pubDate>Sun, 22 Feb 2026 00:00:00 GMT</pubDate>
      <guid>https://ashfurrow.com/blog/disintegrate-reintegrate-extrude/</guid>
      <description><![CDATA[I wrote last week how my wife and I had to say goodbye to Clementine. Without going into detail, caring for our sick cat took a lot out of us. Since last summer, Clem needed some kind of daily medical care: ear drops, pills, special food, eye lube. Yes,...]]></description>
      <content:encoded>&lt;p&gt;&lt;a href=&quot;https://ashfurrow.com/blog/goodbye-clementine/&quot;&gt;I wrote last week&lt;/a&gt; how my wife and I had to say goodbye to Clementine. Without going into detail, caring for our sick cat took a lot out of us. Since last summer, Clem needed &lt;em&gt;some&lt;/em&gt; kind of daily medical care: ear drops, pills, special food, eye lube. Yes, &lt;em&gt;eye lube&lt;/em&gt;. We wanted to help her get better. We only learned in November that she had cancer and only learned in January that there was nothing we could do.&lt;/p&gt;
&lt;p&gt;A few years ago, a member of my family was diagnosed with terminal cancer. My wife was one of the primary caregivers, and I supported where I could. Taking care of Clementine brought up a lot of those memories.&lt;/p&gt;
&lt;p&gt;The thing about taking care of a loved one while they die is that you still have to live your life. You have to go to work, and pay your bills, and clean your toilet, and everything else. And it sucks, because you want to spend all your time with your loved one. But spending time with them can also be difficult. It’s a lot. Clem liked to spend her days with me in my home office while I was working. Near the end and now afterward, my work days carry an extra burden. It’s been a tough year. (“Captain, it’s February!”)&lt;/p&gt;
&lt;p&gt;At the end of my day, after taking care of my responsibilities, I was left with time but no energy. I know what depression feels like and I now notice when it starts creeping in. And I have skills to forestall it.&lt;/p&gt;
&lt;p&gt;So. Last month. After playing &lt;em&gt;Hades II&lt;/em&gt; for so long that my thumbs hurt as much as my heart, I was doomscrolling. I came across some discussion about 3D printing. Something in my brain shifted. I felt it, like it was some physical mechanism. “Huh. 3D printing. Hmm.”&lt;/p&gt;
&lt;p&gt;I had been thinking of getting a 3D printer, off and on, since we bought our house. Usually, I’d let it go. I had other responsibilities and other interests that were taking up my time. But not lately. Lately, I’ve had time but not any interest. So when I felt that spark, I encouraged myself to follow it.&lt;/p&gt;
&lt;p&gt;Sometimes it’s okay to impulse buy something to make yourself feel better. When the excitement of diving into a new hobby is the only joy you can remember feeling. When you’re actually &lt;em&gt;glad&lt;/em&gt; that the thing is backordered because it means you’ll have something (&lt;em&gt;anything&lt;/em&gt;) to look forward &lt;em&gt;to&lt;/em&gt; for a bit longer. When &lt;em&gt;you do want&lt;/em&gt; to keep looking forward, even as you &lt;em&gt;also&lt;/em&gt; want time to slow down.&lt;/p&gt;
&lt;p&gt;My wife and I have spent the last few weeks learning about 3D printers together, sharing models we want to print, and preparing a workspace for the printer. We’ve lived in the house for over four years now, which is longer than we’ve ever lived in a space. Preparing for the printer led to spring cleaning our basement, something we’ve been meaning to do. So we’ve built up some momentum, doing things, taking care of ourselves and our space and each other.&lt;/p&gt;
&lt;p&gt;The printer should arrive this week. I’m excited. It feels good, to be excited. I’m cautious, too: I’ve learned the hard way how unwise it can be to hitch my mental wellbeing to the acquisition of things. But I’ve also learned how and when to work with my inclinations.&lt;/p&gt;
</content:encoded>
    </item>
    <item>
      <title><![CDATA[Goodbye Clementine]]></title>
      <link>https://ashfurrow.com/blog/goodbye-clementine/</link>
      <pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate>
      <guid>https://ashfurrow.com/blog/goodbye-clementine/</guid>
      <description><![CDATA[My wife and I said goodbye to our cat Clementine today. We had her for just four years – our time was cut short by cancer. Things have been up and down for months, but at the start of the year we changed priorities to keep her comfortable. Clementine and...]]></description>
      <content:encoded>&lt;p&gt;My wife and I said goodbye to our cat Clementine today. We had her for just four years – our time was cut short by cancer. Things have been up and down for months, but at the start of the year we changed priorities to keep her comfortable.&lt;/p&gt;
&lt;div class=&quot;narrow&quot;&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/goodbye-clementine/xmas.jpeg&quot; alt=&quot;Clementine meowing while wearing a Christmas tie&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Clementine and her kittens were rescued from an abusive home by a local animal shelter. For the next nine months, her kittens were slowly adopted. But no one wanted to take Clem home until we found her.&lt;/p&gt;
&lt;p&gt;I’ve had pets all my life and I’m very good with cats, but had never cared for an abused animal before. We took things slow. It wasn’t long at all until Clem came out of her shell. She never entirely shook off her experiences before the shelter, but she also came into her own here. She found her voice. She even made friends with our grumpy elder cat Bandita. She adored being pet and she had so much love to give.&lt;/p&gt;
&lt;div class=&quot;narrow&quot;&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/goodbye-clementine/friends.jpeg&quot; alt=&quot;Clementine and Bandita napping together&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I’m taking this pretty hard. It feels so unfair. We had so many plans.&lt;/p&gt;
&lt;p&gt;But I’m also so grateful to have had the time we did have together. Clem came into our life right before a lot of things went very sideways. I’m still recovering from some of those experiences; Clem showed me what it can look like to grow past and grow with your trauma. My wife picked Clementine because she believed that I could take good care of her, and she was right. But Clem took care of me, too.&lt;/p&gt;
&lt;div class=&quot;narrow&quot;&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/goodbye-clementine/blep.jpeg&quot; alt=&quot;Clementine blepping at the camera&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Clementine. &lt;em&gt;Ms. Clem&lt;/em&gt;. We love you and miss you. We’ll never forget you. Thank you.&lt;/p&gt;
</content:encoded>
    </item>
    <item>
      <title><![CDATA[The Imperial Units Strike Back]]></title>
      <link>https://ashfurrow.com/blog/the-imperial-units-strike-back/</link>
      <pubDate>Thu, 05 Feb 2026 00:00:00 GMT</pubDate>
      <guid>https://ashfurrow.com/blog/the-imperial-units-strike-back/</guid>
      <description><![CDATA[I lived in the United States for six years, during which time I refused to learn Fahrenheit. I was forced to give in to using inches because, unlike every tape measure I owned in Canada that had both inches and centimetres, every measuring tape I could...]]></description>
      <content:encoded>&lt;p&gt;I lived in the United States for six years, during which time I refused to learn Fahrenheit. I was forced to give in to using inches because, unlike every tape measure I owned in Canada that had &lt;em&gt;both&lt;/em&gt; inches and centimetres, every measuring tape I could find at my local hardware store was &lt;em&gt;inches only&lt;/em&gt;. For this and other reasons, it wasn’t practical to resist.&lt;/p&gt;
&lt;p&gt;But I prided myself in my ignorance of Fahrenheit. It’s odd to be proud of ignorance, but using Celsius exclusively helped me hang on to my Canadian identity while living in a foreign country. Sometimes, people would ask me what the forecast was, and you just &lt;em&gt;know&lt;/em&gt; that I made it &lt;em&gt;a whole thing&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;But when the pandemic hit, I started calling home to my family a lot more often. My grandparents – snowbirds who lived in Florida half the year – didn’t know Celsius. That made conversations difficult (“how is the weather?”) and I wasn’t going to let a my pride get in the way of connecting to my family. So after years, I eventually did learn Fahrenheit. And then I promptly moved home to Canada.&lt;/p&gt;
&lt;p&gt;This is all to say, I have some complicated feelings about Fahrenheit.&lt;/p&gt;
&lt;p&gt;Because the thing is, during my six years in the United States, I kept hearing the same thing from Americans. Smart people – coworkers, friends! – would all tell me something along the lines of:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Yeah, sure, the Metric System &lt;strong&gt;is&lt;/strong&gt; better for everything… &lt;strong&gt;except&lt;/strong&gt; ambient air temperature! &lt;strong&gt;That&lt;/strong&gt; is the one thing that Fahrenheit is better for. You guys just don’t get it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This. In. Furiated me.&lt;/p&gt;
&lt;p&gt;And so, when I heard Casey on the latest &lt;a href=&quot;https://atp.fm/677&quot;&gt;ATP episode&lt;/a&gt; say something to this effect, I paused the recording to write this post. (Sending feedback before finishing the episode is poor form, I know.) I was compelled to write this because I think he and I get our dander up about this topic in the same way, from opposite sides. And I actually think I have a way for us to square the circle on this. And this has been bothering me for years.&lt;/p&gt;
&lt;p&gt;I &lt;em&gt;want&lt;/em&gt; to see eye-to-eye with my American friends, and podcast hosts. So this blog post is an olive branch of sorts.&lt;/p&gt;
&lt;h2&gt;The Case For Fahrenheit&lt;/h2&gt;
&lt;p&gt;I’m going to do the thing that Metric System advocates never do: I’m going to admit that &lt;em&gt;is neat&lt;/em&gt; that Fahrenheit stretches from zero to a hundred, as a range from “really cold” to “really hot.” It is! A hundred is a nice round number. &lt;em&gt;It’s very neat&lt;/em&gt;. I don’t think a reasonable person could deny this, even though I did for years, which maybe reflects on me a bit. &lt;em&gt;I’m sorry&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;It is also convenient that the Fahrenheit degrees are small enough that thermostats can be adjusted by whole degrees. I don’t &lt;em&gt;mind&lt;/em&gt; that my car adjusts air temperature in half-degrees Celsius, but I must admit that it would look cleaner if they were whole numbers. And I once owned a space heater that adjusted its digital thermostat by whole degrees Celsius. I wanted more control so I switched it to Fahrenheit. I enjoy the finesse that comes with smaller degrees, and I appreciate the simplicity of design that follows from that.&lt;/p&gt;
&lt;p&gt;There is no “but” coming. There is no other shoe that’s about to drop, or backhanded compliment. The Europeans and the Australians and the other Canadians… they won’t admit that you’re right about the ambient air temperature thing. &lt;em&gt;I will&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I hope that you’re curious about &lt;em&gt;why&lt;/em&gt; no one else will admit that you’re right about this, because I think it’s fascinating. There are two nuanced points in this debate that get lost in &lt;s&gt;conversion&lt;/s&gt; translation.&lt;/p&gt;
&lt;h2&gt;Acknowledging the Arbitrary&lt;/h2&gt;
&lt;p&gt;When I hear Americans describe how intuitive the Fahrenheit system is, I feel like I’m going nuts. “This is so intuitive”, they say, “&lt;em&gt;because&lt;/em&gt; it goes from zero to a hundred.” Or maybe they’ll say “the sixties feel &lt;em&gt;this way&lt;/em&gt; and the seventies feel &lt;em&gt;that way&lt;/em&gt;, and it all makes sense!” Yeah! Of course it makes sense &lt;em&gt;to you&lt;/em&gt;. You grew up with this system! But going from zero to a hundred did not help it make sense to me.&lt;/p&gt;
&lt;p&gt;Any system used to measure something like air temperature, or any temperature, is going to be arbitrary. It’s going to have tradeoffs about how it works, what it’s optimized for. And although it is &lt;em&gt;neat&lt;/em&gt; that Fahrenheit goes from zero to a hundred, that &lt;em&gt;is&lt;/em&gt; arbitrary. Consider a temperature scale like Fahrenheit but that goes to 120 instead; we’d be able to reason about temperature like an analogue clock. Or, it could go to 60 like the Babylonians intended, so we could do fun fractions. Neither of these would &lt;em&gt;inherently&lt;/em&gt; be more intuitive.&lt;/p&gt;
&lt;p&gt;What is intuitive is the system you know.&lt;/p&gt;
&lt;p&gt;And even though it is &lt;em&gt;neat&lt;/em&gt; that Fahrenheit goes from zero to a hundred, that isn’t how people reason about temperature. For example. If it’s 35ºF outside, and you go inside where it’s 70ºF, do you think about that as being “twice as warm”? Probably not. Zero to a hundred suggests percentages, so do you think about inside being “35% warmer” than outside either?&lt;/p&gt;
&lt;p&gt;Maybe I’m wrong here, but I think people feel temperature differences in absolute terms &lt;em&gt;in degrees&lt;/em&gt;, not in terms of multipliers or percentages.&lt;/p&gt;
&lt;p&gt;Going from zero to a hundred is &lt;em&gt;neat&lt;/em&gt;. I like how it makes degrees act like a percentage, truly. But I don’t think that going from zero to a hundred helps people reason about temperature in a way that Celsius does not. I have the same intuitive understanding for Celsius that you have for Fahrenheit. I don’t think either is &lt;em&gt;inherently&lt;/em&gt; better. The one that feels like it “makes sense” is the system you know – please believe me on this.&lt;/p&gt;
&lt;p&gt;Yeah? Are we still friends? Okay I’m glad.&lt;/p&gt;
&lt;h2&gt;Putting the “System” in “Metric System”&lt;/h2&gt;
&lt;p&gt;I mentioned tradeoffs earlier: there are benefits and drawbacks to any temperature scale. I don’t think many Americans understand the value in Celsius because I don’t think many of them actually know the Metric System. The &lt;em&gt;systemic&lt;/em&gt; nature of Celsius makes up for the annoyingly large degrees, among its other drawbacks, in my opinion.&lt;/p&gt;
&lt;p&gt;When I took high school physics, it was revelatory. Suddenly, many different things about the world were interconnected. They always had been. I loved it. Learning about how the speed of sound is affected by air temperature, and the Doppler effect, and total internal refraction… It was so fun to learn how the real world could be modelled. And one part of this awakening was the realization that all these &lt;em&gt;units&lt;/em&gt; were connected, just like the world was.&lt;/p&gt;
&lt;p&gt;The Metric System is arbitrary, like Customary Units and like every other measuring scale. But by making very intentional decisions, the Metric System connects together the different aspects of our physical reality into one elegant, beautiful system. Let me explain.&lt;/p&gt;
&lt;p&gt;Using one cubic centimetre of water as a baseline, we have the definition for one gram of mass and for one millilitre of volume. Distance, mass, and volume are connected, boom. Next: raising that water’s temperature by one degree Celsius would require one calorie of energy. We could continue, to describe the connection to Joules, and Watts, and so on… but my point is that these are all connected by the &lt;em&gt;definition of the units themselves&lt;/em&gt;. And &lt;em&gt;that&lt;/em&gt; is also pretty &lt;em&gt;neat&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;By learning a system of measurements that makes it easy to reason within, I think people are able to more easily develop an &lt;em&gt;intuition&lt;/em&gt; about that reality. Celsius fits within that system, even if it has tradeoffs.&lt;/p&gt;
&lt;p&gt;My American friends: most of you don’t know the Metric System and so most of you can’t appreciate the value that the system affords. And I know that the idea of change is hard – it sucks for my family members who grew up before Metrification in Canada. And I appreciate the fact that most people don’t need to intuitively relate mass and energy, or whatever. But I relish in it. I love being able to reason about the size of my espresso machine boiler and its power draw and volume, and kilowatt hours, and all that. I just think it’s &lt;em&gt;neat&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;This doesn’t make Celsius a better system than Fahrenheit – it’s just different tradeoffs.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;While (I think) I do understand the value in going from zero to a hundred, I don’t think Americans understand the value of the Metric &lt;em&gt;System&lt;/em&gt;. This isn’t a flaw or a shortcoming, in any way. It’s just something that I don’t think you all are aware of. An “unknown unknown.” And if you care about measuring ambient air temperature as much as I do, I thought you might be interested to learn.&lt;/p&gt;
&lt;p&gt;The tl;dr here is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Fahrenheit &lt;em&gt;is&lt;/em&gt; convenient for ambient air temperature, but going from zero to one hundred didn’t make it easier for me to learn.&lt;/li&gt;
&lt;li&gt;Celsius &lt;em&gt;becomes more valuable&lt;/em&gt; when it’s used within the entire Metric System, leading most Americans to be unaware of that value. This is why no one will admit that you’re right about the first point.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I still prefer the tradeoffs that Celsius makes over the ones Fahrenheit does. But &lt;em&gt;I see you&lt;/em&gt;. We can agree to disagree.&lt;/p&gt;
&lt;p&gt;Time to go listen to the rest of that podcast episode.&lt;/p&gt;
</content:encoded>
    </item>
    <item>
      <title><![CDATA[Upcoming Conference Talk]]></title>
      <link>https://ashfurrow.com/blog/upcoming-conference-talk/</link>
      <pubDate>Sun, 21 Dec 2025 00:00:00 GMT</pubDate>
      <guid>https://ashfurrow.com/blog/upcoming-conference-talk/</guid>
      <description><![CDATA[I’m very excited to announce that I’ll be speaking at the Swift Rockies conference for iOS developers next July in Calgary. This will be my first conference presentation in over five years! My talk is titled My Slow Return to a Swift Career. I’m pecking...]]></description>
      <content:encoded>&lt;p&gt;I’m very excited to announce that I’ll be speaking at the &lt;a href=&quot;https://swiftrockies.com/&quot;&gt;Swift Rockies&lt;/a&gt; conference for iOS developers next July in Calgary. This will be my first conference presentation in over five years!&lt;/p&gt;
&lt;p&gt;My talk is titled &lt;em&gt;My Slow Return to a Swift Career&lt;/em&gt;. I’m pecking away at it (I have a half year to prepare) but it will be part “career retrospective” and part “technical deep dive comparing React Native to native iOS development.” My native iOS development experience stretches back to iPhoneOS 3.1. I still know UIKit like the back of my hand. But I have a lot of experience with React Native, too: I helped migrate Artsy’s native iOS app to become hybrid native/React Native, I built an entire SDK on top of React Native at Shopify, and I led the team that build Float’s mobile app from scratch.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ashfurrow.com/blog/joining-wealthsimple/&quot;&gt;I recently started a job at Wealthsimple&lt;/a&gt; where &lt;a href=&quot;https://ashfurrow.com/blog/work-at-your-spikes/&quot;&gt;my focus is on mobile user experiences&lt;/a&gt;. I’m using native iOS technologies again &lt;em&gt;a lot&lt;/em&gt; and I’m &lt;em&gt;really&lt;/em&gt; enjoying it!&lt;/p&gt;
&lt;p&gt;As a whole, it’s fair to say that the iOS developer community dislikes React Native. But the complaints I hear about React Native &lt;em&gt;tend&lt;/em&gt; to either over-generalize or exaggerate its problems. I bring a nuanced perspective with more… interesting complaints.&lt;/p&gt;
&lt;p&gt;I’m really looking forward to it, and I hope to see you in Calgary!&lt;/p&gt;
</content:encoded>
    </item>
    <item>
      <title><![CDATA[Peer Lab Community Shut Down]]></title>
      <link>https://ashfurrow.com/blog/peer-lab-community-shut-down/</link>
      <pubDate>Sun, 14 Dec 2025 00:00:00 GMT</pubDate>
      <guid>https://ashfurrow.com/blog/peer-lab-community-shut-down/</guid>
      <description><![CDATA[When I lived in Amsterdam, a friend ran a weekly meetup for programmers. He held it on Saturday mornings, to discourage people who only had ideas for apps. The idea was to spend time in a café working on projects around other coders who were working on...]]></description>
      <content:encoded>&lt;p&gt;When I lived in Amsterdam, a friend ran a weekly meetup for programmers. He held it on Saturday mornings, to discourage people who only had ideas for apps. The idea was to spend time in a café working on projects around other coders who were working on their projects, to exchange ideas and make connections. I enjoyed the Peer Lab so much that &lt;a href=&quot;https://artsy.github.io/blog/2015/08/10/peer-lab/&quot;&gt;I started my own&lt;/a&gt; when I moved to New York and &lt;a href=&quot;https://ashfurrow.com/blog/5-years-of-peer-lab/&quot;&gt;ran it for five years&lt;/a&gt;. It was only stopped by the novel coronavirus pandemic.&lt;/p&gt;
&lt;p&gt;I made a lot of friends and acquaintances at these meetups. Lots of great memories, lots of fun coding.&lt;/p&gt;
&lt;p&gt;Eventually, I created a website called &lt;em&gt;Peer Lab Community&lt;/em&gt; and hosted it at &lt;code&gt;peerlab.community&lt;/code&gt;. It had a list of dozens of worldwide Peer Labs and instructions to start one of your own. I’ve maintained that site and domain until recently; I’ve decided to shut it down and let the domain expire next month. This is more of a formality than an actual change, since the list is woefully outdated. All of the events predate the pandemic and the only pull requests I’ve received in five years have be to remove events. I don’t live in a big city (or travel frequently) like I used to, so I can’t spread the idea around like I once did.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/ashfurrow/peerlab.community&quot;&gt;The GitHub repo is archived&lt;/a&gt; and the site content is still served at &lt;a href=&quot;https://ashfurrow.github.io/peerlab.community/&quot;&gt;ashfurrow.github.io/peerlab.community/&lt;/a&gt;. The old URL will 301 redirect to the new archive, but only over HTTP.&lt;/p&gt;
&lt;p&gt;It’s sad to see it go, but I didn’t want it to slip away unremarked upon.&lt;/p&gt;
</content:encoded>
    </item>
    <item>
      <title><![CDATA[Five Years in New Brunswick]]></title>
      <link>https://ashfurrow.com/blog/five-years-in-new-brunswick/</link>
      <pubDate>Fri, 31 Oct 2025 00:00:00 GMT</pubDate>
      <guid>https://ashfurrow.com/blog/five-years-in-new-brunswick/</guid>
      <description><![CDATA[Today marks five years since my wife and I moved away from New York and back to New Brunswick. When I wrote about this last time, I seemed unhappy. I guess things hadn’t worked out the way that I had envisioned them when we moved home – even if I didn’t...]]></description>
      <content:encoded>&lt;p&gt;Today marks five years since my wife and I moved away from New York and back to New Brunswick. &lt;a href=&quot;https://ashfurrow.com/blog/four-years-in-new-brunswick/&quot;&gt;When I wrote about this last time&lt;/a&gt;, I seemed unhappy. I guess things hadn’t worked out the way that I had envisioned them when we moved home – even if I didn’t have a really clear vision for how things would go. I have a more optimistic view now.&lt;/p&gt;
&lt;p&gt;About a year ago, &lt;a href=&quot;https://photos.ashfurrow.com/downtown-in-the-rain&quot;&gt;I started taking photos again&lt;/a&gt;. It started on my phone, but then I got out my old film cameras which &lt;em&gt;still had film in them from New York&lt;/em&gt;. I finished the rolls and sent them off to be developed. When they came back, I found this:&lt;/p&gt;
&lt;div class=&quot;wide&quot;&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/five-years-in-new-brunswick/photo.jpg&quot; alt=&quot;Double-exposure photo with New York on the left and Fredericton on the right&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;This is a double exposuree, with half the frame being taken in New York and the other half being taken here in Fredericton. &lt;em&gt;Five years apart!&lt;/em&gt; From what I can piece together, what happened is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I took a photo in New York.&lt;/li&gt;
&lt;li&gt;Five years pass.&lt;/li&gt;
&lt;li&gt;At some point, the “double exposure” lever on my camera was activated.&lt;/li&gt;
&lt;li&gt;I advanced only halfway to the next frame.&lt;/li&gt;
&lt;li&gt;I took another photo in Fredericton.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That’s what I’ve pieced together, because this was not what I intended when I took either photo. One of the last photos I took in New York, and one of the first photos I took in Fredericton. &lt;em&gt;This was not what I envisioned.&lt;/em&gt; (I also have &lt;em&gt;no idea&lt;/em&gt; why one of the photos was taken &lt;em&gt;upside down!&lt;/em&gt; What!?)&lt;/p&gt;
&lt;p&gt;Something I love about film photography – and digital, too – is the unexpected. In photography, you see a scene and you pre-visualize the shot, and then you try to realize your photographic vision. But unexpected things happen. And I think &lt;em&gt;good&lt;/em&gt; photographers are open to that spontaneity. You can’t always faithfully execute on your vision, but you can choose to work with whatever happens.&lt;/p&gt;
&lt;p&gt;In this case, I’ve &lt;em&gt;edited&lt;/em&gt; the photo to look good. Without those edits, the original was kind of bleh:&lt;/p&gt;
&lt;div class=&quot;wide&quot;&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/five-years-in-new-brunswick/original.jpg&quot; alt=&quot;The same photo, but less contrasty and not cropped. I looks faded.&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;This is not what I envisioned, but I love what I made of it. This is probably my favourite photo that I’ve ever taken &lt;em&gt;ever&lt;/em&gt;, and it was an accident.&lt;/p&gt;
&lt;p&gt;Things haven’t gone the way I intended when I moved home, but that’s okay. Part of being human is accepting the spontaneity of life and making something beautiful with it.&lt;/p&gt;
</content:encoded>
    </item>
    <item>
      <title><![CDATA[Joining Wealthsimple]]></title>
      <link>https://ashfurrow.com/blog/joining-wealthsimple/</link>
      <pubDate>Tue, 14 Oct 2025 00:00:00 GMT</pubDate>
      <guid>https://ashfurrow.com/blog/joining-wealthsimple/</guid>
      <description><![CDATA[I’m excited to announce that today is my first day working at Wealthsimple! I’ll be working as a staff developer on their mobile app. In a previous blog post, I teased that this role was a perfect fit for me. Today, I’m excited to share some details. But...]]></description>
      <content:encoded>&lt;p&gt;I’m excited to announce that today is my first day working at &lt;a href=&quot;https://www.wealthsimple.com/&quot;&gt;Wealthsimple&lt;/a&gt;! I’ll be working as a staff developer on their mobile app. &lt;a href=&quot;https://ashfurrow.com/blog/floating-on/&quot;&gt;In a previous blog post&lt;/a&gt;, I teased that this role was a perfect fit for me. Today, I’m excited to share some details.&lt;/p&gt;
&lt;p&gt;But first we need some context and a little background on React Native.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;I started working with React Native at Artsy. &lt;a href=&quot;https://artsy.github.io/blog/2016/08/15/React-Native-at-Artsy/&quot;&gt;Orta and Eloy were keen on adopting it in 2016&lt;/a&gt;, but I was very skeptical. So skeptical, in fact, that I found myself working on non-mobile Artsy projects. That’s when I learned React on the web, and &lt;a href=&quot;https://ashfurrow.com/blog/the-case-for-react-native/&quot;&gt;that’s when I came around to React Native&lt;/a&gt;. I got on board with the vision that the two of them had started building. I started contributing to that vision and eventually I worked up to &lt;a href=&quot;https://artsy.github.io/blog/2020/09/29/becoming-mobile-first-at-artsy/&quot;&gt;leading the team that owned the whole app&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;One of the foundational principles that Orta and Eloy had established was that Artsy wouldn’t use React Native where it led to a worse user experience; we’d use React Native only &lt;em&gt;where it made sense&lt;/em&gt;, and use native iOS tech where &lt;em&gt;it&lt;/em&gt; made sense. Our goal was to create a great app, and React Native couldn’t do that on its own. As a concrete example, the navigation stack itself was still in Objective-C (while the view controllers were slowly migrated to React Native).&lt;/p&gt;
&lt;p&gt;That was (gosh) nearly a decade ago. React Native itself has gotten &lt;em&gt;much&lt;/em&gt; better, especially as tools like &lt;a href=&quot;https://expo.dev/&quot;&gt;Expo&lt;/a&gt; have taken off. It’s now easy for developers to access underlying native SDKs from JavaScript (like photo pickers, Spotlight integration, even augmented reality). But! There still remains a “last mile” in React Native, where native technologies &lt;em&gt;must&lt;/em&gt; be used &lt;em&gt;directly&lt;/em&gt; in order to build the best user experience. In 2016, maybe you could get 70% to a great UX in React Native alone. By 2020, maybe that had reached 90%. Today, maybe it’s around 95%, or so? But I don’t believe it will ever reach 100% for two reasons.&lt;/p&gt;
&lt;p&gt;First is the platform vendors themselves. Apple and Google develop their own SDKs for building apps and would prefer you to use them. Now, React Native &lt;em&gt;uses&lt;/em&gt; those SDKs under the hood, but React Native itself doesn’t fit in certain restrictive runtimes. Take widgets, for example. Or push notification extensions, or smartwatch apps, or any number of the small-but-deeply-integrated features that elevate an app from &lt;em&gt;good&lt;/em&gt; to &lt;em&gt;great&lt;/em&gt;. (Even where it’s &lt;em&gt;possible&lt;/em&gt; to fit a React Native runtime into these environments, you might not actually want to. I helped a team at Shopify build an &lt;a href=&quot;https://developer.apple.com/documentation/appclip&quot;&gt;App Clip&lt;/a&gt; in React Native; App Clips needed to archive down to under 10MB and fitting inside that constraint was a huge challenge. While the project was a technical success, the user experience wasn’t great.)&lt;/p&gt;
&lt;p&gt;Second is the irreducible complexity of a cross-platform development tool like React Native. This kind of tool needs to work across all kinds of platforms while not &lt;em&gt;feeling&lt;/em&gt; like a “lowest common denominator.” The React Native project itself has made a lot of improvements here over the years. In case you weren’t aware, please let me blow your mind: there is now synchronous, two-way interoperability between React Native’s JavaScript runtime and native code. JavaScript can now communicate &lt;em&gt;directly&lt;/em&gt; with native code through object references 🤯 This has come a long way since React Native’s original, asynchronous bridge where all communication was serialized over JSON. This advancement has led to huge performance gains that close the distance on that last mile – even if it can’t close it entirely.&lt;/p&gt;
&lt;p&gt;However. This fancy &lt;a href=&quot;https://reactnative.dev/architecture/landing-page&quot;&gt;new architecture&lt;/a&gt; comes with added complexity. You don’t get end-to-end type-safe memory access between TypeScript and native runtimes without &lt;em&gt;at least a little bit&lt;/em&gt; of C++. Any app developer who’s serious about delivering the &lt;em&gt;highest-possible quality mobile user experience&lt;/em&gt; will need to dive under React Native’s JavaScript exterior and work in the underlying native stack, in C++, Swift, Kotlin… whatever it takes.&lt;/p&gt;
&lt;p&gt;That’s where I come in.&lt;/p&gt;
&lt;p&gt;It’s very rare to find a developer who is comfortable in &lt;em&gt;both&lt;/em&gt; React Native &lt;em&gt;and&lt;/em&gt; the underlying native SDKs. Mobile native developers tend to avoid React Native. On the other side, React Native developers tend to want to stay in JavaScript, avoiding native tech. There are exceptionally few developers out there with deep enough experience with native iOS that they could still write manual-retain-release Objective-C &lt;em&gt;and&lt;/em&gt; who have extensive experience building React Native applications in JavaScript. &lt;em&gt;And&lt;/em&gt; who enjoy working in both.&lt;/p&gt;
&lt;p&gt;What I have to offer is an unbiased perspective. (Or at least, a less biased one.) Someone to help make the right decision for the product, whether it’s native or React Native. Someone who is confident contributing at any level of the stack. And someone to help scale up a larger team with those same skills. I can’t wait!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;My new role will have a narrower focus with more day-to-day coding and &lt;a href=&quot;https://ashfurrow.com/blog/work-at-your-spikes/&quot;&gt;I’m expecting a greater career satisfaction&lt;/a&gt;. I’ve learned that I &lt;em&gt;can&lt;/em&gt; do anything, but if I try to do &lt;em&gt;everything&lt;/em&gt;, then my work suffers. I suffer. It’s time to specialize in mobile UX again.&lt;/p&gt;
&lt;div class=&quot;narrow&quot;&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/joining-wealthsimple/wwdc2010.jpg&quot; alt=&quot;Photo of (a younger) me at WWDC 2010.&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I’m also &lt;em&gt;really&lt;/em&gt; excited to be working in native technologies more often. I’ve followed every WWDC since I attended my first in 2010, but if I’m being completely honest, it’s been hard to feel as immersed as I used to in Apple technology without working in native iOS day-to-day. My Swift skills are a little rusty and my SwiftUI skills… well, let’s just say that I’m looking forward to sparring with Xcode again. In some ways, this will be a return to native iOS for me. But I’m not “going back”, I’m using my experience to go forward.&lt;/p&gt;
&lt;div class=&quot;narrow&quot;&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/joining-wealthsimple/mdevcamp.jpg&quot; alt=&quot;Photo of (a less younger) me speaking at mDevCamp.&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I’m really looking forward to ramping up with Wealthsimple. They have a great product for an underserved Canadian market. &lt;a href=&quot;https://www.wealthsimple.com/en-ca/culture&quot;&gt;Their stated culture&lt;/a&gt; describes the exact kind of environment where I can do my best work. Also, I’ve opened personal bank accounts in three countries so I also get to bring my experience banking in the US and Europe. When I moved home to Canada, I was surprised to see how little the big banks had changed in the seven years I lived away. Wealthsimple is pushing Canada forward here. They’ve built a quality app and have already done a lot to cover that last mile of React Native user experience – I can’t wait to pitch in!&lt;/p&gt;
</content:encoded>
    </item>
    <item>
      <title><![CDATA[Eleventy Launch]]></title>
      <link>https://ashfurrow.com/blog/eleventy-launch/</link>
      <pubDate>Wed, 08 Oct 2025 00:00:00 GMT</pubDate>
      <guid>https://ashfurrow.com/blog/eleventy-launch/</guid>
      <description><![CDATA[As I discussed previously, I’ve been rewriting this blog in a new tool called 11ty (aka Eleventy - the project’s devs aren’t consistent so I won’t be either). This is the first blog post written in the new blog engine, and the migration is complete! I...]]></description>
      <content:encoded>&lt;p&gt;&lt;a href=&quot;https://ashfurrow.com/blog/yet-another-blog-rewrite/&quot;&gt;As I discussed previously&lt;/a&gt;, I’ve been rewriting this blog in a new tool called &lt;a href=&quot;https://www.11ty.dev/&quot;&gt;11ty&lt;/a&gt; (aka Eleventy - the project’s devs aren’t consistent so I won’t be either). &lt;em&gt;This&lt;/em&gt; is the first blog post written in the new blog engine, and the migration is complete!&lt;/p&gt;
&lt;p&gt;I already mentioned my reasons for migrating off of Gatsby, but it’s worth repeating &lt;em&gt;how much less complex&lt;/em&gt; an 11ty implementation is. Gatsby’s complexity led to long build times, which started exceeding Netlify’s (free tier) deploy timeout. On my M2 MacBook Air, you can see a &lt;strong&gt;16x speedup on fresh builds&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Gatsby
yarn build  329.83s user 28.18s system 257% cpu 2:19.14 total

# Eleventy
yarn build  57.01s user 4.42s system 387% cpu 15.863 total
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I had let the project sit on the back burner for a while but &lt;a href=&quot;https://ashfurrow.com/blog/floating-on/&quot;&gt;recent events&lt;/a&gt; have led me to have spare time to finish it. One of my first priorities was to get Netlify deploy previews working again, which was a great call. This helped me test end-to-end and verify that I would get back continuous (one of the goals of this project). To fully deploy the site from Netlify takes about a minute.&lt;/p&gt;
&lt;p&gt;Side note: I don’t want to beat up on Gatsby but it’s also clear that it hasn’t been a good fit. Gatsby is great for complex sites with dynamic content, but &lt;em&gt;this&lt;/em&gt; site is a static blog with hundreds of posts. My precious posts! When testing the build times, I saw the following warning:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Your GraphQL query in createPages took 28.522 seconds which is an unexpectedly long time. See https://gatsby.dev/create-pages-performance for tips on how to improve this.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Huh! Okay maybe the performance problems are on &lt;em&gt;my&lt;/em&gt; side of the keyboard after all! Maybe I’m holding Gatsby wrong. I examined the query in question, and laughed out loud.&lt;/p&gt;
&lt;pre class=&quot;language-graphql&quot;&gt;&lt;code class=&quot;language-graphql&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property-query&quot;&gt;allMdx&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token attr-name&quot;&gt;sort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;order&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;DESC&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;fields&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;frontmatter___date&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;frontmatter___title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token object&quot;&gt;edges&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token object&quot;&gt;node&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token property-query&quot;&gt;excerpt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token attr-name&quot;&gt;pruneLength&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;250&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;body&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;id&lt;/span&gt;
        &lt;span class=&quot;token object&quot;&gt;frontmatter&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;token property&quot;&gt;date&lt;/span&gt;
          &lt;span class=&quot;token property&quot;&gt;title&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token object&quot;&gt;siteSearchIndex&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;index&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;All it’s doing is querying blog posts, which are &lt;em&gt;just text&lt;/em&gt;. Even the search index is &lt;em&gt;just processing text&lt;/em&gt;. It’s all just text! So I’m putting the blame here on Gatsby. I’m left wondering who this tool is for? Gatsby can’t scale to &lt;em&gt;under a thousand text files&lt;/em&gt; so it’s not a good fit for a simple static site. Do you need something more complex? Then you probably want more than a static site, anyway.&lt;/p&gt;
&lt;p&gt;Counting lines of code isn’t a perfect way to measure complexity, but in this case I think it’s helpful for comparing the two implementations. Remember that Gatsby is a React site generated from Markdown using GraphQL with lots of other bells and whistles; more complex but more expressive. The 11ty implementation uses plain HTML, CSS, and JavaScript; simpler but more verbose.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Gatsby
cloc --exclude-dir=node_modules,public,.netlify,blog,.cache,
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
TypeScript                      50            259             52           3143
Markdown                         6            112              0            616
JavaScript                       2              9             19            207
JSON                             3              0              0            155
CSS                              1             19             10            111
SVG                              6              0              3             93
Text                             2             13              0             61
diff                             1              2             28             24
TOML                             1              0              0              4
-------------------------------------------------------------------------------
SUM:                            72            414            112           4414
-------------------------------------------------------------------------------

# 11ty
cloc --exclude-dir=node_modules,public,.netlify,.husky --not-match-d=&amp;quot;blog|fontawesome&amp;quot; .
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
CSS                              7             86             54           1589
Nunjucks                        17             76             17           1239
JavaScript                      10             96            124            619
Markdown                         5             86              0            179
Text                             2             13              0             61
SVG                              3              0              3             48
JSON                             3              0              0             47
TOML                             1              0              0              4
-------------------------------------------------------------------------------
SUM:                            48            357            198           3786
-------------------------------------------------------------------------------
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Despite being less expressive, 11ty is still the “smaller” implementation. Which makes sense, since &lt;em&gt;you don’t need GraphQL to render markdown into HTML&lt;/em&gt;. In any case, I remain impressed at how much can be accomplished using only what we was once called “Dynamic HTML.” Gatsby’s implementation used 24 dependencies (which get shipped to users reading the blog) and just as many build-time Gatsby plugins. 11ty used only &lt;em&gt;three&lt;/em&gt; user dependencies and &lt;em&gt;four&lt;/em&gt; build-time plugins. &lt;code&gt;package.json&lt;/code&gt; has gone from 118 lines down to just 39.&lt;/p&gt;
&lt;p&gt;You might be asking about using plain JavaScript instead of TypeScript. I’m generally in favour of TypeScript, but you don’t need to have a full build pipeline to benefit from it. In this project, TypeScript only helps with local development, it doesn’t really prevent user-facing bugs. I don’t think the tradeoff is worth it, so instead I used JSDoc comments to add types where I though they would help. Everything is a tradeoff, and I wanted the biggest benefit for the smallest complexity. That’s why I wrote my own &lt;code&gt;groupBy&lt;/code&gt; instead of using lodash.&lt;/p&gt;
&lt;p&gt;Overall, implementing the new site went smoothly with one exception. The thing that furstrated me the most was &lt;a href=&quot;https://www.11ty.dev/docs/plugins/image/&quot;&gt;11ty’s Image plugin&lt;/a&gt;. This is the most (only?) opinionated part of 11ty’s stack. The project clearly wants developers to use new HTML features (like image source sets) to provide multiple resolutions of an image so browsers can choose the best one to display. That makes sense, and Gatsby actually does something similar (albeit using JavaScript). But I just couldn’t really wrap my head around the plugin, it kept getting in my way. And due to &lt;s&gt;me being a stubborn ass&lt;/s&gt; some hard constraints of my directory structure, I couldn’t &lt;em&gt;not&lt;/em&gt; use it.&lt;/p&gt;
&lt;p&gt;Eventually, I figured it out. Actually it was quite easy, once I started &lt;em&gt;actually using my brain&lt;/em&gt;. I had been fighting the Image plugin by proxy, with Claude Code. This is probably a good time to talk about AI.&lt;/p&gt;
&lt;p&gt;I mentiond in the last post that Claude Code had accelerated this project. I think it’s fair to say I would not have gotten this done if Claude Code hadn’t automated some of the most tedious work. But Claude Code was &lt;em&gt;awful&lt;/em&gt; at the start of the project; only when I completed the initial project setup myself was it helpful. Maybe I just needed the context to prompt it, but I didn’t have that context without building the foundation. Near the end of the project, Claude Code became similarly frustrating, especially as I fought with the Image plugin. Once I &lt;s&gt;lost access to my former employer’s Claude Code account&lt;/s&gt; decided to valiantly complete the project on my own terms, it became a lot easier. I had to fully read the docs to understand what the Image plugin was trying to accomplish. Half an hour of using my brain was more rewarding and succesful than fighting with Claude Code.&lt;/p&gt;
&lt;p&gt;In summary, &lt;em&gt;AI tools seem most useful in the middle of a project&lt;/em&gt;. I needed to give them a solid foundation to start from. Simiarly, at the end of the project, they could not polish work to my satisfaction. I think it’s also helpful to be able to maintain this project &lt;em&gt;without&lt;/em&gt; using AI tools; call me old fashioned, but &lt;em&gt;I want to understand the code&lt;/em&gt;. I want to be able to maintain this project even if &lt;s&gt;the AI bubble bursts&lt;/s&gt; my internet connection goes down.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/ashfurrow/blog/pull/520&quot;&gt;You can review the pull request here&lt;/a&gt; for insights into my process (ignore the lines-of-code count, as prettier formatted thes blog posts once they were migrated from MDX to markdown).&lt;/p&gt;
&lt;p&gt;I’ve taken pains to make sure the RSS feeds still work as expected, but I always worry about changes that might affect my favourite readers, the RSS nerds. If you see any problems, anywhere on the site, &lt;a href=&quot;https://github.com/ashfurrow/blog/issues/new&quot;&gt;please open an issue&lt;/a&gt;.&lt;/p&gt;
</content:encoded>
    </item>
    <item>
      <title><![CDATA[Work At Your Spikes]]></title>
      <link>https://ashfurrow.com/blog/work-at-your-spikes/</link>
      <pubDate>Mon, 06 Oct 2025 00:00:00 GMT</pubDate>
      <guid>https://ashfurrow.com/blog/work-at-your-spikes/</guid>
      <description><![CDATA[I want to discuss my career trajectory and a chronic issue I’ve identified with my job satisfaction since becoming a staff developer. It’s been subtle and I didn’t notice it for years. Maybe this will resonate with you. After a lot of reflection, I’ve...]]></description>
      <content:encoded>&lt;p&gt;I want to discuss my career trajectory and a chronic issue I’ve identified with my job satisfaction since becoming a staff developer. It’s been subtle and I didn’t notice it for years. Maybe this will resonate with you.&lt;/p&gt;
&lt;p&gt;After a lot of reflection, I’ve identified a trend in my career direction that started when I first led Artsy’s new Mobile Experience team in 2019. It was the perfect role for me, and I &lt;em&gt;crushed&lt;/em&gt; it. But it also set me on a path where I would feel unfulfilled with my work. This trend that I’ve identified has followed me from Artsy to Shopify to Float. But now that I’ve identified it, I’ve got a better understanding of where I want my career to go next.&lt;/p&gt;
&lt;p&gt;The trend is not working at my “spikes”, doing more and more work that is only “okay.” Basically, the amount of my day-to-day time that’s spent on tasks that aren’t a distinguishing strength of mine.&lt;/p&gt;
&lt;h2&gt;Spikiness&lt;/h2&gt;
&lt;p&gt;“Spiky” people (also sometimes called “&lt;a href=&quot;https://en.wikipedia.org/wiki/T-shaped_skills&quot;&gt;T-Shaped&lt;/a&gt;” people) refers to people who have &lt;em&gt;specific&lt;/em&gt; areas of professional skill and experience. I’m spiky in mobile UX implementation, for example. Spikes are deep and narrow. Spiky people tend to have gaps, though. These are areas where they have neither the need or interest to improve. One of my gaps is low-level database optimization; it just doesn’t interest me and I’ve never needed to learn it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/work-at-your-spikes/spiky.svg&quot; alt=&quot;A star shape with big spikes and a small centre.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You can think of a spiky person as a contrast to a well-rounded person. These two ideas are at either ends of a gamut – no one is “only spiky” or “only well-rounded.” But it’s a helpful metaphor for professional growth. Spiky people have gaps that well-rounded people don’t have, but spiky people can have an outsized impact in their areas of expertise. So it’s a tradeoff.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/work-at-your-spikes/compared.svg&quot; alt=&quot;Diagram comparing the same spiky star shape from above with another star shape. The new one is labelled &amp;quot;well-rounded&amp;quot; and its peaks are smaller than the spiky shape, but it&#39;s area is greater because it&#39;s centre is larger; it has fewer gaps.&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I like being spiky. My spikes have helped me stand out and get opportunities that a more well-rounded version of myself wouldn’t get. I prefer to &lt;em&gt;manage&lt;/em&gt; my gaps rather than fill them in because filling them in would smooth down my spikes. After all, there is only so much time in a day and you have to choose where to spend your time and energy.&lt;/p&gt;
&lt;p&gt;Everything has an opportunity cost. Filling in my gaps would mean less time spent getting &lt;em&gt;even better&lt;/em&gt; at my spikes. My spikes are also where my interests lie, so doing work in my gaps is already less interesting. Which would help me more? Spending time getting better at mobile UX implementation, or spending time getting better at low-level database optimization?&lt;/p&gt;
&lt;p&gt;There are tradeoffs to being spiky, of course. For example, I &lt;em&gt;need&lt;/em&gt; a team to do my best work. Working solo, I can do a &lt;em&gt;good&lt;/em&gt; job; working in a team where I can rely on and support others, I can do a &lt;em&gt;great&lt;/em&gt; job. I like to work with other spiky people because we help mitigate each other’s gaps. A team with a lot of spiky people can accomplish more than a team of generalists, in my experience.&lt;/p&gt;
&lt;p&gt;The thing is, though, I haven’t been working at my spikes. For a while, I’ve been generalizing. &lt;a href=&quot;https://ashfurrow.com/blog/perspective-of-the-polyglot/&quot;&gt;I’ve written about how it’s good and fun to branch out&lt;/a&gt;, and it is! This is not a post &lt;em&gt;against&lt;/em&gt; generalizing. But it’s about the consequences and tradeoffs. (Spoilers: &lt;a href=&quot;https://ashfurrow.com/blog/specializing-in-being-a-generalist/&quot;&gt;I’ve also written about stretching myself out too thin&lt;/a&gt;.) I’ve caught myself accepting that I was a generalist now. I accepted that I wouldn’t get to do as much deep work at my spikes – mobile UX implementation – because there were &lt;em&gt;so many other things&lt;/em&gt; that my job demanded needed me to do instead.&lt;/p&gt;
&lt;p&gt;Side note: a lot of staff/principal developers struggle with letting go of &lt;em&gt;coding&lt;/em&gt; as their primary responsibility. At a certain level of seniority, your time is better spent helping your &lt;em&gt;whole team&lt;/em&gt; be productive than it is spent on your own productivity. I (and many peers) do struggle with decoupling a sense of accomplishment from a number of pull requests or features built. But this is something different. Because I (and many peers) do find ways to be fulfilled by technical leadership work.&lt;/p&gt;
&lt;p&gt;The root of my issue is that I’ve allowed the needs of my employers to guide my career growth too much. I’ve become whatever the business needs me to be at the time. To be clear, this has been a successful career! From the business’ perspective, it’s &lt;em&gt;really&lt;/em&gt; handy to have a staff-level mobile developer who can design UI themselves, who can manage their own projects, who can deploy their own microservices, who can even build their own dashboards! That kind of person can jump into any environment and be effective. Businesses love that.&lt;/p&gt;
&lt;p&gt;Consider that the Shop Minis SDK that I built didn’t have an actual product manager for the first year of its existence. It was just me, organizing the small team of engineers and whatever design capacity we could borrow. Without many resources, I got &lt;em&gt;a lot&lt;/em&gt; accomplished. The project was a success even without a PM.&lt;/p&gt;
&lt;p&gt;Those other skills, though – design, project management, backend, dashboards – they are not my spikes. I can do them, but… so, uh, the thing is my dashboards are not… exceptional, okay? They’re fine, they’re good. Dashboards are not a &lt;em&gt;gap&lt;/em&gt; for me like database optimization, but they’re not a spike either. They sit in-between.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/work-at-your-spikes/detailed.svg&quot; alt=&quot;A zoomed-in view of the spiky diagram, with three dots along one of the edges. The dot in the gap is labelled &amp;quot;database optimization&amp;quot;, the dot at the spike is labelled &amp;quot;mobile UX&amp;quot;, and the dot in between is labelled &amp;quot;dashboards.&amp;quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I don’t like making dashboards. I find the task tedious. And yet, I’ve spent more and more time on dashboards over the years. I’ve had to, to be an effective leader in my different roles. I now have enough “experience in dashboards” that I could credibly list it as a skill on my resume. Ugh.&lt;/p&gt;
&lt;p&gt;Upon reflection, I’ve found myself working further and further away from my spikes in a lot of different ways (not just dashboards). I’m doing many types of work not because I excel in those areas, but because &lt;em&gt;I can be effective working across many areas&lt;/em&gt;. And &lt;em&gt;that&lt;/em&gt; has been what my employers have needed. When I &lt;em&gt;do&lt;/em&gt; get to work at my spikes, my work has still been of high enough quality that I can still get a lot of job satisfaction. The tradeoff has worked for me. Also, it feels &lt;em&gt;amazing&lt;/em&gt; to be “the fixer” who can parachute in and help any team do any thing.&lt;/p&gt;
&lt;p&gt;But this trend has picked up and the balance has been broken. It led me to not really enjoy my work like I used to. This affected my motivation and the quality of my work.&lt;/p&gt;
&lt;p&gt;So what happened?&lt;/p&gt;
&lt;h3&gt;Early Stage Companies&lt;/h3&gt;
&lt;p&gt;There are a lot of things I enjoy about working for early-stage startups and one of the my favourite aspects is how you get to own a broad domain. To “wear a lot of hats”, so to speak. If you see a problem or opportunity, you get to own the solution. There actually aren’t a lot of resources in early companies, so being able to handle a broad range of responsibilities is &lt;em&gt;really important to being successful&lt;/em&gt; at a startup.&lt;/p&gt;
&lt;p&gt;However, such a resource-constrained setting can make it challenging to advocate for resources you &lt;em&gt;do&lt;/em&gt; need. I can understand the business’ perspective here: why allocate scarce resources to a team who’s already so effective without them? There is a great reason, actually. Artsy’s CTO &lt;a href=&quot;https://code.dblock.org/about/&quot;&gt;dB&lt;/a&gt; once explained to me how startups need more and more engineers year-over-year &lt;em&gt;just to keep shipping at the same velocity&lt;/em&gt;. As you build the product, its surface area grows which increases complexity and risk, which require more engineer time to manage. Not every company understands this.&lt;/p&gt;
&lt;p&gt;Over time (especially if you don’t get more resources as your own surface area grows) you can easily become overstretched. You can get used to being overstretched, spending &lt;em&gt;so little&lt;/em&gt; of your time working at your spikes that the time you &lt;em&gt;do&lt;/em&gt; get to feels… almost like a chore? Work you once loved can feel like obstacle to doing the work your team needs… like building dashboards. You can lose your own sense of accomplishment and the sense of shared accomplishment that comes from enabling others.&lt;/p&gt;
&lt;p&gt;As your motivation drops, the quality of your work drops too. If you a person who is motivated by doing great work, this can easily become a self-reinforcing cycle where lowered quality leads to less motivation and even worse quality. The whole time, you feel worse and worse.&lt;/p&gt;
&lt;h3&gt;AI and the Push Towards Average&lt;/h3&gt;
&lt;p&gt;The other factor that accelerated my mid-career malaise was AI. LLM tools have had an impact on baseline expectations for many, many roles in the past few years. They let you “do more with less.” It’s now pretty easy for &lt;em&gt;anyone&lt;/em&gt; to make dashboards almost as good as mine! &lt;em&gt;Despite my years of experience!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It’s honestly really frustrating to me. Infuriating! I’m enraged! What is even the point?? If &lt;em&gt;anyone&lt;/em&gt; can “vibe chart” then &lt;em&gt;why&lt;/em&gt; the fuck am &lt;em&gt;I&lt;/em&gt; doing it? AI tools have lifted up the “floor” of dashboard skills which has, in effect, brought me down closer to average. Average! Me! No way.&lt;/p&gt;
&lt;p&gt;Now, you could push back here and suggest that maybe &lt;em&gt;I&lt;/em&gt; need to use the AI tools to become better at dashboards. Either improve the quality of the dashboards, or build them faster, or whatever. And that would be a fair pushback except &lt;em&gt;I already didn’t want to be doing dashboards.&lt;/em&gt; It’s one of many skills that I picked up because various employers needed me to. Using AI to get better at dashboards would just be filling in my gaps ✨ but with AI ✨ and &lt;em&gt;still&lt;/em&gt; at the expense of my spikes.&lt;/p&gt;
&lt;p&gt;(Besides, if I’m going to use AI tools to improve my skills, then why not use them at my spikes?)&lt;/p&gt;
&lt;h2&gt;Mid-Career Slump&lt;/h2&gt;
&lt;p&gt;I’m really glad that I specialized in mobile software so early in my career. It’s been fun and rewarding. I’m also glad that I branched out a few years in. Being able to fit into whatever shape a business needs has been very lucrative. The problem is that I’ve spent the past six years fitting into other shapes that I’ve lost a connection to my own intrinsic shape.&lt;/p&gt;
&lt;p&gt;It feels a little ironic to end up back where I started, specializing again. But I’m not really “back” here because I’m not the same person I was in 2019.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ashfurrow.com/blog/work-at-your-spikes/meme.jpg&quot; alt=&quot;The &amp;quot;bell curve&amp;quot; meme where the beginner and expert have the same opinion of &amp;quot;it&#39;s good to specialize&amp;quot; with the middle person saying &amp;quot;nooooo u need generalized skills&amp;quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I’ll offer some advice for software developers, advice I wish I had gotten sooner: specialize at first for a jump-start, then generalize quickly after that to accelerate your career. But re-specialize again as &lt;em&gt;soon&lt;/em&gt; as possible. Once you become “general enough” to specialize again, do it. Do it &lt;em&gt;before&lt;/em&gt; you feel ready.&lt;/p&gt;
&lt;p&gt;One of my best skills is being able to discern the most important thing I need to do for a business at any given time, and I’ve always prioritized the business need. Putting the business first is a great way to get rewarded, but I’m not working &lt;em&gt;just&lt;/em&gt; to collect a paycheque. I want to do great work! I’m lucky enough to &lt;em&gt;get&lt;/em&gt; to pursue a fulfilling career, so it’s time to prioritize my own satisfaction. It’s time to find a role where the business’ needs overlap with my own.&lt;/p&gt;
&lt;p&gt;My hope is to use this reflection like a gravity assist, &lt;em&gt;approaching&lt;/em&gt; a career as a generalist before spectacularly sling-shotting away towards a more specialized, more fulfilling career. Gravity assists are famously difficult courses to plot – you have to work backwards from the destination. My destination has been my mobile UX spike.&lt;/p&gt;
&lt;p&gt;I’ve found my next role in a larger organization where I’ll have a narrower focus. I’ll have an announcement about where I’m going soon. In my new role, I’ll get to leverage my expertise as a specialist again. Fewer dashboards, more mobile UI implementation. Less average, more spiky. And hopefully, a happier me.&lt;/p&gt;
</content:encoded>
    </item>
  </channel>
</rss>