{
  "authors": [
    {
      "name": "Joe McLaughlin",
      "url": "https://joemc.xyz/"
    }
  ],
  "description": "Writing from joe mclaughlin",
  "favicon": "https://joemc.xyz/images/favicons/favicon-32.png",
  "feed_url": "https://joemc.xyz/feed.json",
  "home_page_url": "https://joemc.xyz/",
  "icon": "https://joemc.xyz/images/favicons/favicon-192.png",
  "items": [
    {
      "content_html": "\u003cp\u003eI took my first college programming class in 2007, and had been dabbling with programming long before that.\u003c/p\u003e\n\u003cp\u003eAs I was learning the ins and outs of Visual Basic (lol)\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e, it was impossible to imagine the changes that would come to the technology landscape in a relatively short time. A year later I was learning Objective-C to write apps for the new iPhone, and eighteen years later I\u0026rsquo;m using an iPhone from 30k feet to instruct an LLM on my computer at home to fix a visual bug in my sports app Trophy\u003csup id=\"fnref:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e. I didn\u0026rsquo;t bring my laptop on this trip, but my computer thousands of miles away is sending me screenshots as it works on the layout fix.\u003c/p\u003e\n\u003cp\u003eThat isn\u0026rsquo;t a very long time, and we\u0026rsquo;ve gone from \u0026ldquo;there\u0026rsquo;s a real web browser on it\u0026rdquo; to \u0026ldquo;you can create apps from thousands of miles away by writing normal sentences instead of fixing missing semicolons.\u0026rdquo;\u003c/p\u003e\n\u003cp\u003eOkay, enough marveling, quick disclaimer: this isn\u0026rsquo;t my grand unified take on AI. I don\u0026rsquo;t have one.\u003c/p\u003e\n\u003cp\u003eLLMs clearly aren\u0026rsquo;t perfect. There are plenty of unanswered questions about the impact on humanity and the environment, copyright/ownership questions, and a whole bunch of other things we\u0026rsquo;ll need to figure out.\u003c/p\u003e\n\u003cp\u003eIn spite of those thoughts in the back of my head, building with LLMs right now feels pretty good in ways I didn\u0026rsquo;t really expect.\u003c/p\u003e\n\u003cp\u003eOne of the things I keep thinking is how much of programming used to be waiting for my hands to catch up with my head.\u003c/p\u003e\n\u003cp\u003eI don\u0026rsquo;t mean that in a \u0026ldquo;typing is the hard part\u0026rdquo; way. Typing has never really been the hard part. But so much of building software is surrounded by little bits of friction (\u003ca href=\"https://joemc.xyz/posts/yak-shaving/\"\u003eyak shaving\u003c/a\u003e, if you\u0026rsquo;ve been around here a while): remembering exactly how an API works, wiring up boilerplate, finding the right file, fixing the CSS thing that should take thirty seconds but somehow eats an hour, getting a local environment into the correct state, or fixing build issues while the idea in your head slowly loses momentum.\u003c/p\u003e\n\u003cp\u003eAt least for me, there are a lot of small ideas that never make it past the \u0026ldquo;that would be neat\u0026rdquo; phase. Not because they\u0026rsquo;re impossible, or even difficult, but because the startup cost is just a little too high or the potential return isn\u0026rsquo;t there. At work this has resulted in lots of small debug tools, like a macOS app that pulls the tracking code out of a shipping label. On this site it\u0026rsquo;s led to automating the deployment process, which I never bothered to spend time doing before.\u003c/p\u003e\n\u003cp\u003eInstead of an idea going into the notebook graveyard, I can try it (probably badly at first). I can ask the LLM for a rough version or ask for some explorations, look at it, recoil a little, explain what feels wrong, try another direction, delete half of it, tighten the layout, rename the confusing thing, and keep going. The first answer is rarely the final answer\u003csup id=\"fnref:3\"\u003e\u003ca href=\"#fn:3\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e3\u003c/a\u003e\u003c/sup\u003e, but that\u0026rsquo;s ok. That first pass helps me decide if it\u0026rsquo;s worth doing more on.\u003c/p\u003e\n\u003cp\u003eWhen \u003ca href=\"https://joemc.xyz/notes/2025/12/12/1347/\"\u003ethe distance\u003c/a\u003e between \u0026ldquo;I wonder if\u0026hellip;\u0026rdquo; and \u0026ldquo;huh, there it is\u0026rdquo; gets shorter, I try more things, throw more away, and polish little corners that I probably would have left alone. I chase ideas further than I used to, because each step costs a little less than it did before.\u003c/p\u003e\n\u003cp\u003eThis doesn\u0026rsquo;t mean the machine is magically doing the important part. If anything, using LLMs has made the importance of taste and judgment more obvious. The model can produce code. Lots of code. So much code. More code than anyone asked for, and often with the confidence of someone who has never once had to maintain anything.\u003c/p\u003e\n\u003cp\u003eThe hard part is knowing when the thing is overbuilt, or the interface feels wrong, or a function is too clever, or a layout is almost-but-not-quite there. Or when something solves the stated problem technically while completely missing the point. You still have to know what you\u0026rsquo;re trying to make. You still have to care whether it feels good.\u003c/p\u003e\n\u003cp\u003eI spend less time remembering how to express an idea to the computer, and more time deciding whether the idea is any good in the first place.\u003c/p\u003e\n\u003cp\u003eIt\u0026rsquo;s easier than ever to start something, but it\u0026rsquo;s still hard to \u003ca href=\"https://joemc.xyz/posts/real-artists-ship/\"\u003eship it\u003c/a\u003e\u003csup id=\"fnref:4\"\u003e\u003ca href=\"#fn:4\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e4\u003c/a\u003e\u003c/sup\u003e. Maybe harder in some ways, because now you can get to the messy middle so quickly. The first 80% of a project has always been more fun than the last 20%, and now the first 80% shows up fast enough that you can almost trick yourself into thinking the hard part is gone.\u003c/p\u003e\n\u003cp\u003eBut it isn\u0026rsquo;t gone. Once the idea starts to take shape, I can see what was wrong about my initial assumptions. I can notice the awkward parts, the missing pieces, the places where the idea didn\u0026rsquo;t account for the edge cases. Coding used to take long enough that I could keep noodling while I worked. Now I get to the next thinking checkpoint so quickly that I have to stop and think again.\u003c/p\u003e\n\u003cp\u003eAs I\u0026rsquo;ve been building Trophy I\u0026rsquo;ve tried at least a dozen navigation paradigms. Iterating on it with LLMs has allowed me to move big chunks of code around just to play around and see if it works as well as I think it will before I worry about the architecture.\u003c/p\u003e\n\u003cp\u003eI don\u0026rsquo;t know where all of this goes, or how much of my excitement will last once the novelty wears off.\u003c/p\u003e\n\u003cp\u003eFor now, I\u0026rsquo;m building more, abandoning fewer ideas, and having a ridiculous amount of fun while doing it. Oh, and the bug fix from the plane? My computer fell asleep and I had to wait until I got home to actually fix it.\u003c/p\u003e\n\u003cdiv class=\"footnotes\" role=\"doc-endnotes\"\u003e\n\u003chr\u003e\n\u003col\u003e\n\u003cli id=\"fn:1\"\u003e\n\u003cp\u003eOne of the first programs I ever wrote was a voting app in Visual Basic, in the wake of the \u0026ldquo;hanging chad\u0026rdquo; election coverage in 2000. I thought that recording votes electronically would be a good solution to the problem (I was nine).\u0026#160;\u003ca href=\"#fnref:1\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:2\"\u003e\n\u003cp\u003eI\u0026rsquo;m going to write more about Trophy soon. If you\u0026rsquo;re a sports fan and want an early look, I added 50 spots to \u003ca href=\"https://testflight.apple.com/join/cMVG9jRY\"\u003ethe beta\u003c/a\u003e.\u0026#160;\u003ca href=\"#fnref:2\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:3\"\u003e\n\u003cp\u003eAre you as tired as I am of seeing things that were \u0026ldquo;one-shot\u0026rdquo; by LLMs on social media? Some of the examples aren\u0026rsquo;t particularly good, and the ones that are usually involve a really detailed prompt/plan that the LLM iterated on for ~hours, sometimes with another thread acting as the \u0026ldquo;judge\u0026rdquo; to send the work back when it doesn\u0026rsquo;t pass. Like so many things online, it\u0026rsquo;s mostly theater.\u0026#160;\u003ca href=\"#fnref:3\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:4\"\u003e\n\u003cp\u003eNine months passed between showing a little teaser of Albums and writing \u003ca href=\"https://joemc.xyz/posts/albums/\"\u003ethe announcement post\u003c/a\u003e after shipping v1.1. Yes, some of that is my perfectionism, but I still believe the last 10-20% of building is the hardest.\u0026#160;\u003ca href=\"#fnref:4\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/div\u003e",
      "date_modified": "2026-06-24T19:00:00-06:00",
      "date_published": "2026-06-24T19:00:00-06:00",
      "id": "https://joemc.xyz/posts/building-at-the-speed-of-thought/",
      "summary": "LLMs are far from perfect, but right now I'm having more fun building and iterating on ideas than I ever have.",
      "tags": [
        "post"
      ],
      "title": "Building at the speed of thought",
      "url": "https://joemc.xyz/posts/building-at-the-speed-of-thought/"
    },
    {
      "content_html": "\u003cp\u003eI\u0026rsquo;ve made josephmclaughl.in my home on the internet for over ten years, hosting many iterations of my blog and personal website there.\u003c/p\u003e\n\u003cp\u003eThis year, I received an email letting me know that, in order to comply with \u003ca href=\"https://support.enom.com/support/solutions/articles/201000120141-nixi-in-domains-compliance-registrant-verification-process\"\u003enew regulations imposed by India\u003c/a\u003e, I\u0026rsquo;d need to provide documentation proving my (or my website\u0026rsquo;s) relationship to India if I wanted to keep the domain.\u003c/p\u003e\n\u003cp\u003eI\u0026rsquo;m aware this kind of thing has happened before. The \u003ccode\u003e.io\u003c/code\u003e situation caused a lot of disruption for people, but now that it\u0026rsquo;s affecting me specifically, it\u0026rsquo;s made me reflect on how absurd this whole arrangement can be. I\u0026rsquo;ve paid my rent on time for over a decade, built up some search placement, and grown this domain into my own little corner of the internet. Now I\u0026rsquo;m being kicked out of my own home.\u003c/p\u003e\n\u003cp\u003eI doubt anyone in India needs my domain. I\u0026rsquo;m not publishing anything that would be objectionable to the country or leadership of India, and I haven\u0026rsquo;t stopped paying my rent, but I\u0026rsquo;m still being forced to relocate.\u003c/p\u003e\n\u003cp\u003eI\u0026rsquo;m still setting things up, but my new home on the web will be my existing site at \u003ca href=\"https://joemc.xyz\"\u003ejoemc.xyz\u003c/a\u003e, with writing living at \u003ca href=\"https://joemc.xyz/writing/\"\u003ejoemc.xyz/writing/\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eUnfortunately, I won\u0026rsquo;t have a permanent forwarding address from this domain, so update your RSS subscriptions and/or bookmarks. Catch you on the other side!\u003c/p\u003e",
      "date_modified": "2026-05-28T00:00:00-06:00",
      "date_published": "2026-05-28T00:00:00-06:00",
      "id": "https://joemc.xyz/posts/im-being-evicted/",
      "tags": [
        "post"
      ],
      "title": "I'm Being Evicted",
      "url": "https://joemc.xyz/posts/im-being-evicted/"
    },
    {
      "content_html": "\u003cp\u003eI\u0026rsquo;ve been thinking lately that it might be one of the most exciting times to be a curious person.\u003c/p\u003e\n\u003cp\u003eI\u0026rsquo;ve been in the tech space for 20+ years now, and there was always this pattern: you\u0026rsquo;d have an idea, get excited, and then hit a wall. You\u0026rsquo;d need to learn to code, or buy software, or spend months picking up skills you didn\u0026rsquo;t have. So the ambitious ideas just\u0026hellip; sat there. Back burner. Daydream territory. It felt like that was just how it worked.\u003c/p\u003e\n\u003cp\u003eBut it feels like things are shifting. With all the AI tools now, it\u0026rsquo;s less about what you\u0026rsquo;re capable of building and more about what you can imagine and how much time you want to spend on it. The tooling isn\u0026rsquo;t the blocker it used to be.\u003c/p\u003e\n\u003cp\u003eI keep seeing people do wild stuff. Personal websites that \u003ca href=\"https://ryo.lu/\"\u003ereplicate entire operating systems\u003c/a\u003e. Interactive simulations of \u003ca href=\"https://www.raffi.zip/\"\u003etheir own phones/apps\u003c/a\u003e. Portfolios in the form of \u003ca href=\"https://worawork.vercel.app/\"\u003e3D games\u003c/a\u003e. Weekend projects that would\u0026rsquo;ve been month-long endeavors before. The distance between \u0026ldquo;I have an idea\u0026rdquo; and \u0026ldquo;I actually made it\u0026rdquo; is shorter than ever.\u003c/p\u003e\n\u003cp\u003eIt feels like you can just\u0026hellip; try things now. See what happens.  Take the leap.\u003c/p\u003e\n",
      "date_modified": "2025-12-12T13:47:00-07:00",
      "date_published": "2025-12-12T13:47:00-07:00",
      "id": "https://joemc.xyz/notes/2025/12/12/1347/",
      "summary": "It feels like you can just... try things now. See what happens.  Take the leap.",
      "tags": [
        "note"
      ],
      "title": "The Leap",
      "url": "https://joemc.xyz/notes/2025/12/12/1347/"
    },
    {
      "content_html": "\u003cp\u003eHot/lukewarm take: if you\u0026rsquo;re making good money, you should be reinvesting a reasonable amount into your health and wellness.\u003c/p\u003e\n\u003cp\u003eWhen LeBron spends $1M+ a year on his body we all say \u0026ldquo;wouldn\u0026rsquo;t that be nice\u0026rdquo;, but we won\u0026rsquo;t spend a proportional amount on our bodies/minds.\u003c/p\u003e\n",
      "date_modified": "2025-11-26T13:54:00-08:00",
      "date_published": "2025-11-26T13:54:00-08:00",
      "id": "https://joemc.xyz/notes/2025/11/26/1354/",
      "summary": "If you're making good money, you should be reinvesting a reasonable amount into your health and wellness.",
      "tags": [
        "note"
      ],
      "title": "Invest in Your Health",
      "url": "https://joemc.xyz/notes/2025/11/26/1354/"
    },
    {
      "content_html": "\u003cfigure class=\"float-right\"\u003e\u003cimg src=\"https://joemc.xyz/notes/images/albums2.png\"\n\t\t\talt=\"Marketing screenshot of Albums 2.0 showing multiple album covers and a now playing album\"\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eAlbums 2.0 is \u003ca href=\"https://apps.apple.com/us/app/albums-find-favorite-play/id1508599405\"\u003eavailable on the App Store\u003c/a\u003e! I\u0026rsquo;m biased, but it\u0026rsquo;s the best way to enjoy your album collection on iOS! 💿 If you listen to albums on Apple Music (including iTunes purchases), please check it out.\u003c/p\u003e\n\u003cp\u003eIt\u0026rsquo;s free to download, and if you love it, unlock the Deluxe Edition for life for just $10.\u003c/p\u003e\n\u003cp\u003eI also put the finishing touches on the new \u003ca href=\"https://zero1software.com/albums/\"\u003eAlbums marketing site\u003c/a\u003e. I\u0026rsquo;m overdue for an actual \u0026ldquo;company\u0026rdquo; website, but any extra time I have to work on side projects goes into the project itself 😂\u003c/p\u003e\n",
      "date_modified": "2025-11-19T07:54:00-08:00",
      "date_published": "2025-11-19T07:54:00-08:00",
      "id": "https://joemc.xyz/notes/2025/11/19/0754/",
      "summary": "Albums 2.0 is the best way to enjoy your album collection on Apple Music.",
      "tags": [
        "note"
      ],
      "title": "Albums 2.0 is Here!",
      "url": "https://joemc.xyz/notes/2025/11/19/0754/"
    },
    {
      "content_html": "\u003cp\u003ePeople pit Meta Ray-Ban vs Vision Pro as if there can only be one winner when they\u0026rsquo;re different paradigms. It\u0026rsquo;s more iPhone vs Mac than iPhone vs Android.\u003c/p\u003e\n\u003cp\u003eMeaning: even if both product lines \u0026ldquo;converge\u0026rdquo; at roughly the same spot, many people will still want both.\u003c/p\u003e\n",
      "date_modified": "2025-10-22T07:57:00-08:00",
      "date_published": "2025-10-22T07:57:00-08:00",
      "id": "https://joemc.xyz/notes/2025/10/22/0757/",
      "summary": "Meta Ray-Ban and Vision Pro are different paradigms, not direct competitors.",
      "tags": [
        "note"
      ],
      "title": "Ray-Ban vs Vision Pro: Different Paradigms",
      "url": "https://joemc.xyz/notes/2025/10/22/0757/"
    },
    {
      "content_html": "\u003cp\u003eAs the tedious parts of building software get cheaper, iteration gets easier. But that means that craft matters more.\u003c/p\u003e\n\u003cp\u003eAnyone can get to “working” faster now. The interesting part is still making something feel good.\u003c/p\u003e\n",
      "date_modified": "2025-10-06T14:31:00-08:00",
      "date_published": "2025-10-06T14:31:00-08:00",
      "id": "https://joemc.xyz/notes/2025/10/06/1431/",
      "summary": "As the tedious parts of building software get cheaper, craft matters more.",
      "tags": [
        "note"
      ],
      "title": "Craft Matters More",
      "url": "https://joemc.xyz/notes/2025/10/06/1431/"
    },
    {
      "content_html": "\u003cp\u003eone time someone gave me a compliment that \u0026ldquo;[my iOS app\u0026rsquo;s] sheet physics were perfect\u0026rdquo; (if you know, you know)\u003c/p\u003e\n\u003cp\u003ei was flattered, but the truth was actually cooler than mimicking the physics perfectly.\u003c/p\u003e\n\u003ch3 id=\"the-challenge-with-ios-sheets\"\u003eThe Challenge with iOS Sheets\u003c/h3\u003e\n\u003cp\u003eiOS devs have had a love/hate relationship with Apple’s sheet/drawer component because it has some weird limitations (like the same screen can’t present more than one sheet at a time).\u003c/p\u003e\n\u003cp\u003ethis has led many developers to build custom sheets for their apps even to replicate the UX of system apps (like Maps). but: there are a bunch of tiny details about how the system version works - animation curves, gesture responses, physics - and if they don\u0026rsquo;t match exactly yours will feel \u0026ldquo;off\u0026rdquo;.\u003c/p\u003e\n\u003cp\u003eso how did i get mine right?\u003c/p\u003e\n\u003cp\u003ethe answer was simple: i was actually using a native sheet 🙈\u003c/p\u003e\n\u003cp\u003eso why did they think i was using my own version? because i was very clearly presenting more than one sheet from the same screen, which as i said earlier, doesn’t work.\u003c/p\u003e\n\u003cp\u003eunless… 🤔\u003c/p\u003e\n\u003ch3 id=\"enter-uiwindow\"\u003eEnter UIWindow\u003c/h3\u003e\n\u003cp\u003ethere’s a component on iOS called a window, and it’s just like a window on your computer. iOS copied a lot of the underlying functionality from macOS when it was built, including the concept of multiple windows.\u003c/p\u003e\n\u003cp\u003emost iOS developers don’t need to use windows for their apps, and i’d guess many don’t even realize you can have more than one window. we tend to think about the “screen” in apps, not the window that the screen is showing, because they’re often 1:1.\u003c/p\u003e\n\u003cp\u003ereturning to my implementation. it probably would\u0026rsquo;ve been easier to build my own custom sheet, but i felt like that would lead to a weird \u0026ldquo;almost native\u0026rdquo; feel. i wanted this app to feel right at home with the built-in apps. like it was built by Apple, but better.\u003c/p\u003e\n\u003cp\u003eso i did it the hard way: i added a second window to my app that would float over the rest of the app and show a sheet. it could be accessed from any screen while not preventing other sheets throughout the app (perfect use for a window).\u003c/p\u003e\n\u003cp\u003ebecause i used a built-in sheet, its continued to “feel right” even as Apple has updated iOS, and the various default animation timings and curves that can make or break how things feel (often subconsciously).\u003c/p\u003e\n\u003ch3 id=\"details-matter\"\u003eDetails Matter\u003c/h3\u003e\n\u003cp\u003eapp development is full of these types of problems that people will only notice if you get it wrong. if it feels “right”, the assumption is that it’s built-in functionality, even if it took days or weeks of careful tweaking, tuning, and building to nail it.\u003c/p\u003e\n\u003cp\u003ei don’t share any of this to complain, i’ve been building iOS apps since iPhone OS 2.0 in 2008, and it’s been the best job ever! making things that people love to use every day is awesome, and i hope i can keep doing it for many more years.\u003c/p\u003e\n\u003cp\u003eif you made it this far and want to check out the app for yourself, it\u0026rsquo;s available for free on \u003ca href=\"https://apps.apple.com/us/app/albums-find-favorite-play/id1508599405\"\u003ethe App Store\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003elet me know if you have any questions or feedback. thank you, and enjoy!\u003c/p\u003e",
      "date_modified": "2025-09-23T09:00:00-07:00",
      "date_published": "2025-09-23T09:00:00-07:00",
      "id": "https://joemc.xyz/posts/sweating-the-details/",
      "summary": "a technical deep dive into one of the tiny details that make apps feel right",
      "tags": [
        "post"
      ],
      "title": "Sweating the Details",
      "url": "https://joemc.xyz/posts/sweating-the-details/"
    },
    {
      "content_html": "\u003cp\u003eMy biggest takeaway from living on iOS 26 since β1 is that interruptible animations are more important than ever. Most people are talking about the looks, but the morphing views and menus are a bigger deal.\u003c/p\u003e\n\u003cp\u003eEven if you don\u0026rsquo;t adopt liquid glass, make your animations fluid.\u003c/p\u003e\n",
      "date_modified": "2025-09-08T09:35:00-08:00",
      "date_published": "2025-09-08T09:35:00-08:00",
      "id": "https://joemc.xyz/notes/2025/09/08/0935/",
      "summary": "Interruptible animations are more important than ever in iOS 26.",
      "tags": [
        "note"
      ],
      "title": "iOS 26 and Interruptible Animations",
      "url": "https://joemc.xyz/notes/2025/09/08/0935/"
    },
    {
      "content_html": "\u003cp\u003ewhat a great reminder from \u003ca href=\"https://x.com/asallen\"\u003eAndy Allen\u003c/a\u003e of \u003ca href=\"https://notboring.software\"\u003e!Boring\u003c/a\u003e:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eAll of your work will be lost to time.\u003c/p\u003e\n\u003cp\u003eAll that remains is impact.\u003cbr\u003e\nDo it for the culture.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003ei\u0026rsquo;m fired up!\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.notboring.software/words/for-the-culture\"\u003e→ notboring.software\u003c/a\u003e\u003c/p\u003e",
      "date_modified": "2025-08-05T09:51:00-06:00",
      "date_published": "2025-08-05T09:51:00-06:00",
      "external_url": "https://www.notboring.software/words/for-the-culture",
      "id": "https://joemc.xyz/links/2025/08/for-the-culture/",
      "tags": [
        "link"
      ],
      "title": "For the Culture",
      "url": "https://joemc.xyz/links/2025/08/for-the-culture/"
    },
    {
      "content_html": "\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/posts/images/after-yahoo/whats-next.png\"\n\t\t\talt=\"a Yahoo purple app icon shape with the iconic lowercase \u0026#39;y!\u0026#39; logo in it, with a hand drawn arrow pointing to another app icon shaped yellow square with a question mark on it.\"\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eThree years ago, I joined a scrappy Series A startup named Commonstock. The journey was full of twists and turns I never could have anticipated: we navigated the sudden \u003ca href=\"https://en.wikipedia.org/wiki/Collapse_of_Silicon_Valley_Bank\"\u003erun on SVB\u003c/a\u003e (our bank at the time), the dramatic end of the \u003ca href=\"https://en.wikipedia.org/wiki/Zero_interest-rate_policy\"\u003eZIRP\u003c/a\u003e era, and waves of tech layoffs reshaping the industry.\u003c/p\u003e\n\u003cp\u003eDespite these headwinds, we found a path forward when \u003ca href=\"https://www.yahooinc.com/press/yahoo-acquires-commonstock-to-expand-community-deepen-insights-for-yahoo-finance-users\"\u003eYahoo Finance acquired Commonstock\u003c/a\u003e nearly two years ago. Transitioning overnight\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e from a tight-knit team of fewer than 20 people to becoming part of one of the internet\u0026rsquo;s oldest and most iconic companies was an experience I\u0026rsquo;ll never forget.\u003c/p\u003e\n\u003cp\u003eAt Yahoo Finance, I\u0026rsquo;m incredibly proud of the work we accomplished — especially \u003ca href=\"https://finance.yahoo.com/community/\"\u003elaunching social features\u003c/a\u003e\u003csup id=\"fnref:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e that encourage investors of all backgrounds to connect, learn, and grow together. Seeing a vibrant community begin to flourish on such an established platform reinforced my belief in the power of community-driven products.\u003c/p\u003e\n\u003cp\u003eBut startup life has been calling me back. The opportunity to build from the ground up, rapidly iterate, and directly impact users (and the business) at scale is hard to resist.\u003c/p\u003e\n\u003cp\u003eSo, today was my last day at Yahoo Finance. I\u0026rsquo;ll be taking a couple weeks off to reset, and then I\u0026rsquo;m excited to be joining the team at \u003ca href=\"https://www.whatnot.com\"\u003eWhatnot\u003c/a\u003e! 🥳🎉\u003c/p\u003e\n\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/posts/images/after-yahoo/whatnot.png\"\n\t\t\talt=\"The Whatnot brand lockup, containing the Whatnot \u0026#39;w\u0026#39; icon and the \u0026#39;Whatnot\u0026#39; wordmark stylized in warm black on a whatnot yellow background.\"\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eWhen I connected with some of the awesome folks at Whatnot, it felt like the perfect intersection of my past experiences in e-commerce and my more recent passion for building consumer social applications. On top of that, everyone I met was thoughtful and genuine, and I appreciated the intentionality throughout the process.\u003c/p\u003e\n\u003cp\u003eWhatnot\u0026rsquo;s vision of creating the best community-driven marketplace resonates with me, and I\u0026rsquo;m looking forward to helping contribute to that vision. I\u0026rsquo;ll be joining the team focused on logistics and fulfillment, building tools that help sellers on the platform prepare and ship orders to their customers quickly and easily.\u003c/p\u003e\n\u003cp\u003eI\u0026rsquo;m grateful for everything I\u0026rsquo;ve learned and experienced at Yahoo Finance, and equally excited to jump back into the world of high-growth startups with Whatnot.\u003csup id=\"fnref:3\"\u003e\u003ca href=\"#fn:3\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e3\u003c/a\u003e\u003c/sup\u003e\u003c/p\u003e\n\u003cp\u003eHere\u0026rsquo;s to the next chapter!\u003c/p\u003e\n\u003cdiv class=\"footnotes\" role=\"doc-endnotes\"\u003e\n\u003chr\u003e\n\u003col\u003e\n\u003cli id=\"fn:1\"\u003e\n\u003cp\u003eLiterally, we had a celebratory video call to pop some champagne on Friday afternoon, logged off for the weekend, and the following Monday we were sitting in a virtual onboarding call with the Yahoo team. It has been the most unique \u0026ldquo;job change\u0026rdquo; of my career (so far).\u0026#160;\u003ca href=\"#fnref:1\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:2\"\u003e\n\u003cp\u003eThe \u003ca href=\"https://finance.yahoo.com/community/\"\u003ecommunity\u003c/a\u003e is in early beta right now, but growing rapidly. Feel free to check it out!\u0026#160;\u003ca href=\"#fnref:2\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:3\"\u003e\n\u003cp\u003eAlso: \u003ca href=\"https://jobs.whatnot.com/\"\u003ewe\u0026rsquo;re hiring\u003c/a\u003e 👀\u0026#160;\u003ca href=\"#fnref:3\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/div\u003e",
      "date_modified": "2025-05-16T09:00:00-07:00",
      "date_published": "2025-05-16T09:00:00-07:00",
      "id": "https://joemc.xyz/posts/after-yahoo/",
      "image": "https://joemc.xyz/posts/images/after-yahoo/whats-next.png",
      "summary": "After three years combined at Commonstock + Yahoo Finance, it's time for something new.",
      "tags": [
        "post"
      ],
      "title": "My Next Chapter",
      "url": "https://joemc.xyz/posts/after-yahoo/"
    },
    {
      "content_html": "\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/notes/images/fight-club.gif\"\n\t\t\talt=\"a Yahoo purple app icon shape with the iconic lowercase \u0026#39;y!\u0026#39; logo in it, with a hand drawn arrow pointing to another app icon shaped yellow square with a question mark on it.\"\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eThe first rule of blogging is very similar to the first rule of Fight Club — if you ever write about:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eRecommitting to regular posting, or\u003c/li\u003e\n\u003cli\u003eHow much easier your new blogging setup makes posting,\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e…you’re guaranteed to abandon your blog for months. At least, that’s always been my experience 🙃\u003c/p\u003e\n\u003cp\u003eThe last \u003cem\u003e(checks notes – holy $%^#!)\u003c/em\u003e, \u003cstrong\u003eyear\u003c/strong\u003e has absolutely flown by. I won’t give you the play-by-play, but it’s been a good/wild ride.\u003c/p\u003e\n\u003cp\u003eLooking forward, I genuinely love this time of year in Utah. Everything is reaching peak shades of green, and the weather has finally settled into reliable shorts-and-t-shirt territory. Even better, golf and mountain biking season is back, bringing fresh energy into my life after the offseason.\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e\u003c/p\u003e\n\u003cp\u003eWithout making any promises, I hope when I’m writing another update in May 2026 that this upcoming year will be packed with at least half the fun and interesting experiences as this past year. If so the lack of blog posts will be worth it.\u003c/p\u003e\n\u003cdiv class=\"footnotes\" role=\"doc-endnotes\"\u003e\n\u003chr\u003e\n\u003col\u003e\n\u003cli id=\"fn:1\"\u003e\n\u003cp\u003eThis past winter, I experimented with an indoor golf simulator membership, which turned out to be a perfect escape during the cold, snowy months (and it even helped shave a few strokes off my handicap).\u0026#160;\u003ca href=\"#fnref:1\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/div\u003e\n",
      "date_modified": "2025-05-11T08:38:00-08:00",
      "date_published": "2025-05-11T08:38:00-08:00",
      "id": "https://joemc.xyz/notes/2025/05/11/0838/",
      "summary": "If you want to write more on your blog, don’t talk about writing more on your blog.",
      "tags": [
        "note"
      ],
      "title": "The First Rule of Blogging...",
      "url": "https://joemc.xyz/notes/2025/05/11/0838/"
    },
    {
      "content_html": "\u003cp\u003eThe simpler it is to write and publish content to your website, the more likely it is that you will. I don’t make the rules, that’s just human nature.\u003c/p\u003e\n\u003cp\u003eMost of the time I write on my MacBook, but there’s no technical reason preventing me from publishing from my iPad or iPhone, it just requires some setup the first time.\u003c/p\u003e\n\u003cp\u003eToday I picked up the new 13” iPad Pro and the matching Magic Keyboard, so I figured it was a great time to publish a little article from the new mobile setup with my first impressions of the new hardware and the apps I use to write on the go.\u003c/p\u003e\n\u003ch2 id=\"2024-ipad-pro\"\u003e2024 iPad Pro\u003c/h2\u003e\n\u003cp\u003eThe iPad is a device I want to love. It’s incredibly beautiful and capable hardware, but a lot of people (myself included) find it laying on a bookshelf or desk unused most of the time. This generation has a screen I absolutely couldn’t pass up, so I’m giving the iPad another try, maybe it’ll stick this time!\u003c/p\u003e\n\u003ch3 id=\"form-factor\"\u003eform factor\u003c/h3\u003e\n\u003cp\u003eApple didn’t exaggerate, this iPad is quite a bit thinner and lighter than the prior generations. It’s noticeable from the moment you pick it up, it feels nice. The 13” is still too big to comfortably use with one hand, but it’s a huge improvement. I played with the 11” version at the Apple store and while it is also thinner and lighter, it doesn’t feel like quite as much of a leap from the last generation\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e.\u003c/p\u003e\n\u003ch3 id=\"display\"\u003edisplay\u003c/h3\u003e\n\u003cp\u003eTaking a step back for a moment, the iPad Pro models have had incredible screens for many years. This year’s screen is no exception: it’s crisp, bright, and has great colors. In normal use, it’s business as usual. However, once you fire up a movie, it’s quite a step up! The blooming of the Mini LED display is gone, and the contrast and colors are exactly what you’d expect from a high quality OLED panel. HDR movie content is seriously impressive, the brights are really bright, and there’s good c. I fired up some of my go-to test movies\u003csup id=\"fnref:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e and they all looked amazing.\u003c/p\u003e\n\u003ch3 id=\"magic-keyboard\"\u003emagic keyboard\u003c/h3\u003e\n\u003cp\u003eAlthough it’s an accessory, I think the new Magic Keyboard is an important piece of this year’s upgrade story. It’s a really nice improvement over the previous version for the same [high] price. It feels really sturdy and the function row is a welcome addition, especially the media keys while multitasking. Right now I am writing full-screen in iA Writer while watching the Boston Red Sox play the Tampa Bay Rays, and having those controls right at my fingertips without needing to go to control center is super nice\u003csup id=\"fnref:3\"\u003e\u003ca href=\"#fn:3\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e3\u003c/a\u003e\u003c/sup\u003e.\u003c/p\u003e\n\u003ch2 id=\"writing-setup\"\u003ewriting setup\u003c/h2\u003e\n\u003cp\u003eThe way I set up my blog allows me to be device-agnostic to write and publish to it. It’s powered by a static site generator called \u003ca href=\"https://gohugo.io\"\u003eHugo\u003c/a\u003e that generates all of the HTML pages based off the templates I’ve set up, and it’s hosted on \u003ca href=\"https://www.netlify.com\"\u003eNetlify\u003c/a\u003e. Netlify is configured to observe changes to my site’s git repository so that the site is automatically built and published any time I push a new change. So as long as I can commit my writing to GitHub, I can publish articles.\u003c/p\u003e\n\u003cp\u003eOn my iPad, I’m using a few different apps to do this:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://apps.apple.com/us/app/working-copy-git-client/id896694807\"\u003eWorking Copy\u003c/a\u003e allows me to check out my site’s git repo and expose it to other apps as a normal folder on the filesystem using the “file provider” API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://apps.apple.com/us/app/ia-writer/id775737172\"\u003eiA Writer\u003c/a\u003e is my preferred writing environment – it has plenty of power but happily gets out of the way to let me write undistracted\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://apps.apple.com/us/app/runestone-text-editor/id1548193893\"\u003eRunestone\u003c/a\u003e is my go to for modifying any non-prose such as templates, styling, or configs\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThat’s all I need! It’s a little more involved than a platform like Wordpress or Medium, but for the control I have over my entire setup, it’s pretty straightforward and can be accessed from anywhere I have a network connection.\u003c/p\u003e\n\u003cdiv class=\"footnotes\" role=\"doc-endnotes\"\u003e\n\u003chr\u003e\n\u003col\u003e\n\u003cli id=\"fn:1\"\u003e\n\u003cp\u003eThe last generation of the 11” iPad Pro was the thinner of the two sizes, while this generation’s 13” leap-frogged it for the honors. One theory I have is since the 11” didn’t have the same Mini LED display that the 13” came with, some of the thickness gains of moving to the new Tandem OLED display weren’t there for the 11” model.\u0026#160;\u003ca href=\"#fnref:1\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:2\"\u003e\n\u003cp\u003eSpider-Man: Into the Spider-Verse is one of my favorites to test a screen as it has poppy, bright colors and fast-moving contrasting elements going from bright lights to really dark darks and everything in-between. Some other favorites are No Time to Die and The Dark Knight.\u0026#160;\u003ca href=\"#fnref:2\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:3\"\u003e\n\u003cp\u003eAnd it makes the iPad feel even more like a computer.\u0026#160;\u003ca href=\"#fnref:3\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/div\u003e",
      "date_modified": "2024-05-15T00:00:00-06:00",
      "date_published": "2024-05-15T00:00:00-06:00",
      "id": "https://joemc.xyz/posts/blogging-from-anywhere/",
      "summary": "How I’m write and publish blog posts from my mobile devices",
      "tags": [
        "post"
      ],
      "title": "Blogging From Anywhere",
      "url": "https://joemc.xyz/posts/blogging-from-anywhere/"
    },
    {
      "content_html": "\u003cp\u003e\u003ca href=\"https://lmnt.me/\"\u003eLouie Mantia\u003c/a\u003e has been on a roll lately in his prolific advocacy for making things on the Internet. He wrote a post a couple months ago titled \u003cem\u003e\u003ca href=\"https://lmnt.me/blog/make-a-damn-website.html\"\u003eMake a Damn Website\u003c/a\u003e\u003c/em\u003e and he followed it up today with the very practical \u003cem\u003e\u003ca href=\"https://lmnt.me/blog/how-to-make-a-damn-website.html\"\u003eHow to Make a Damn Website\u003c/a\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003cp\u003eWe overcomplicate what a website needs to be, and it gets in the way of actually making it. So take his (and now my) advice, and make a damn website.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://lmnt.me/blog/make-a-damn-website.html\"\u003e→ lmnt.me\u003c/a\u003e\u003c/p\u003e",
      "date_modified": "2024-03-25T12:10:00-06:00",
      "date_published": "2024-03-25T12:10:00-06:00",
      "external_url": "https://lmnt.me/blog/make-a-damn-website.html",
      "id": "https://joemc.xyz/links/2024/03/make-a-website/",
      "tags": [
        "link"
      ],
      "title": "Make a website",
      "url": "https://joemc.xyz/links/2024/03/make-a-website/"
    },
    {
      "content_html": "\u003cp\u003eSometimes I have thoughts along the lines of: “why am I blogging this if no one is reading it?” and on good mental days I’ll respond back\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e with something to the effect of: “my writing is primarily for me, and if someone else sees it and appreciates it, that’s an added bonus of writing it down publicly.”\u003c/p\u003e\n\u003cp\u003eToday as I was contemplating a few different posts that are rolling around in my head, I had one of these thoughts pop into the foreground, stopping me in my tracks. As I was working through it, justifying the blogging process to myself once again, I decided that blogging is a bit like gardening\u003csup id=\"fnref:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e.\u003c/p\u003e\n\u003cp\u003eTending to a garden is often a means to an end: you want to harvest the food you’re planting, or you want the plants and flowers to exist for the beauty they bring to the area. While those are valid reasons, gardening is also it’s own reward: you are carving out time and space to meditate and reflect, and over time it becomes a place that you made your own, the result of many different deliberate \u003cem\u003e(and accidental)\u003c/em\u003e decisions.\u003c/p\u003e\n\u003cp\u003eIf other people like the look of your garden, that’s great! However if you start ripping out plants that people don’t like, or adding in flowers that they said would look better, it would start to become a community garden, not your own. There’s nothing wrong with a community garden, and there’s nothing wrong with building consensus in a group, but there is \u003cem\u003ealso\u003c/em\u003e room in the world for your own space. Your own little corner of existence where you can pick, prune, and plant to your heart’s content.\u003c/p\u003e\n\u003cp\u003eThat’s what blogging is to me. It’s a place where I can write my own thoughts, and revel in the process of editing, rewriting, and publishing my posts.\u003c/p\u003e\n\u003cp\u003eIt’s my little garden on the Internet.\u003c/p\u003e\n\u003cdiv class=\"footnotes\" role=\"doc-endnotes\"\u003e\n\u003chr\u003e\n\u003col\u003e\n\u003cli id=\"fn:1\"\u003e\n\u003cp\u003eYes, I have conversations with myself, doesn\u0026rsquo;t everyone?\u0026#160;\u003ca href=\"#fnref:1\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:2\"\u003e\n\u003cp\u003eAfter I posted a link to this note on \u003ca href=\"https://hachyderm.io/@mclaughj\"\u003emy Mastodon account\u003c/a\u003e, \u003ca href=\"https://mister.computer/@kyle/112157331473382986\"\u003eKyle Hughes pointed out\u003c/a\u003e that I had stumbled upon the same terminology that many people have been using over the last few years, including \u003ca href=\"https://maggieappleton.com/garden-history\"\u003ethis \u003cem\u003ewonderful\u003c/em\u003e post\u003c/a\u003e  by Maggie Appleton on her website. I have a lot more to think about now!\u0026#160;\u003ca href=\"#fnref:2\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/div\u003e\n",
      "date_modified": "2024-03-25T09:20:00-06:00",
      "date_published": "2024-03-25T09:20:00-06:00",
      "id": "https://joemc.xyz/notes/2024/03/25/0920/",
      "tags": [
        "note"
      ],
      "title": "Blogging is a bit like gardening",
      "url": "https://joemc.xyz/notes/2024/03/25/0920/"
    },
    {
      "content_html": "\u003cfigure class=\"youtube\"\u003e\n  \u003ciframe src=\"https://www.youtube-nocookie.com/embed/86Gy035z_KA\" title=\"Apple Vision Pro Review from MKBHD\" loading=\"lazy\" allow=\"clipboard-write; encrypted-media; picture-in-picture; web-share; fullscreen\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen\u003e\u003c/iframe\u003e\n  \u003cfigcaption\u003e\u003ca href=\"https://www.youtube.com/watch?v=86Gy035z_KA\"\u003e▶\u0026#xFE0E; Apple Vision Pro Review from MKBHD\u003c/a\u003e\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eThis is MKBHD\u0026rsquo;s third video about the Vision Pro, and I agree with pretty much every point he makes. I think he does a good job of pointing out how most of the decisions that went into this device come with real tradeoffs, but in practice it’s still a really cool start for Apple’s foray into AR/VR/“spatial” and the tech on it’s own is still impressive.\u003c/p\u003e\n\u003cp\u003ePersonally, I am \u003cem\u003every\u003c/em\u003e interested to see what visionOS 2.0 brings, as the timeline of this device’s announcement and subsequent release lines up with what happened with iOS v1 → v2. My [educated] guess is that most of what is on visionOS right now is quite close to what was running on the media demo devices at WWDC last June, and that most of the core visionOS development time has been spent on 2.0, not on polishing 1.0.\u003c/p\u003e\n\u003cp\u003eI’m sure there’s been a ton of polish work, and I’m sure some of the various app teams at Apple have been spending time porting their apps to visionOS, but new feature work on the core OS has likely been slated for v2 for quite some time.\u003c/p\u003e\n\u003cp\u003eWWDC \u0026lsquo;24 could bring a lot of cool quality of life things that make this version of the hardware even better.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.youtube.com/watch?v=86Gy035z_KA\"\u003e→ youtube.com\u003c/a\u003e\u003c/p\u003e",
      "date_modified": "2024-02-04T12:14:00-07:00",
      "date_published": "2024-02-04T12:14:00-07:00",
      "external_url": "https://www.youtube.com/watch?v=86Gy035z_KA",
      "id": "https://joemc.xyz/links/2024/02/tomorrows-ideas/",
      "tags": [
        "link"
      ],
      "title": "Tomorrow's Ideas, Today's Tech",
      "url": "https://joemc.xyz/links/2024/02/tomorrows-ideas/"
    },
    {
      "content_html": "\u003cp\u003eCan I vent for a second? The Apple Vision Pro reviews are out, and this is the part of the review cycle I forgot I hated so much\u0026hellip;\u003c/p\u003e\n\u003cp\u003eIs this the first augmented reality goggle or platform? No, far from it. Is it a fundamentally different approach to AR compared to other headsets? Only partially (due to the eye tracking + finger controls).\u003c/p\u003e\n\u003cp\u003eBut almost every single review is reviewing this headset by pointing out all of the shortcomings:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026ldquo;there are almost no native apps for it”\u003c/li\u003e\n\u003cli\u003e“it’s heavy”\u003c/li\u003e\n\u003cli\u003e“the battery is clunky”\u003c/li\u003e\n\u003cli\u003e“the screens aren’t as good as looking at the world through your own eyes”\u003c/li\u003e\n\u003cli\u003e“Personas aren’t good”\u003c/li\u003e\n\u003cli\u003e“the EyeSight screen on the front is awful, and a waste of tech/money/weight/battery power”\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThose takes are all incredibly uninteresting to me and super easy to make. Just like when Apple laminated the glass on the iPhone and it seemed like you were directly touching the screen, or when we went to “Retina” density displays, or ProMotion brought smoother scrolling, or OLED for better battery life and color accuracy… this device is a first generation product offering, and it \u003cem\u003ewill\u003c/em\u003e get better.\u003c/p\u003e\n\u003cp\u003eI totally understand that most reviewers are trying to answer the same question from consumers: “is this thing worth $Y of my hard earned money?”, and I’m totally ok with the answer to that question being a flat “no”, but it’s just depressing to me that the AR platform space gets a huge push forward by Apple and almost every single person who gets their hands on it is falling over themselves to be a negative ned.\u003c/p\u003e\n",
      "date_modified": "2024-01-31T11:16:00-07:00",
      "date_published": "2024-01-31T11:16:00-07:00",
      "id": "https://joemc.xyz/notes/2024/01/31/1116/",
      "tags": [
        "note"
      ],
      "title": "Negative reviews of the Vision Pro are boring",
      "url": "https://joemc.xyz/notes/2024/01/31/1116/"
    },
    {
      "content_html": "\u003cp\u003eThis post from \u0026ldquo;Matrix Agent\u0026rdquo; came across my Mastodon feed, and I couldn\u0026rsquo;t agree more:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ethere is NO reason any of us should have to \u0026ldquo;thrive in a fast paced environment\u0026rdquo; or \u0026ldquo;work well under pressure.\u0026rdquo; most of our daily work is not an emergency and our culture of fake urgency and immediacy just to make more profit for people in the c-suite is burning people out.\u003c/p\u003e\n\u003cp\u003estop sending people into fight or flight and expecting them to bend over backward because you dont know how plan or manage resources properly\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eI often need to remind myself that most things at work are not worth stressing over. It doesn\u0026rsquo;t really matter if something is a little late and it\u0026rsquo;s definitely not worth your health. Work can wait.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://mastodon.ie/@vitaminsludge/111826960182390123\"\u003e→ mastodon.ie\u003c/a\u003e\u003c/p\u003e",
      "date_modified": "2024-01-28T20:17:00-07:00",
      "date_published": "2024-01-28T20:17:00-07:00",
      "external_url": "https://mastodon.ie/@vitaminsludge/111826960182390123",
      "id": "https://joemc.xyz/links/2024/01/work-can-wait/",
      "tags": [
        "link"
      ],
      "title": "Work can wait.",
      "url": "https://joemc.xyz/links/2024/01/work-can-wait/"
    },
    {
      "content_html": "\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/posts/images/the-app-store/app-store.jpg\"\n\t\t\talt=\"An image showing the iOS, Safari, and App Store logos (source: Apple\u0026#39;s press release about the DMA)\"\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eThere has been a \u003cem\u003elot\u003c/em\u003e of press around changes to the App Store lately.\u003c/p\u003e\n\u003cp\u003eFirst there was a US court decision that forced Apple into allowing apps to include an \u0026ldquo;\u003ca href=\"https://9to5mac.com/2024/01/16/apple-revises-us-app-store-rules-to-let-developers-link-to-outside-payment-methods-but-it-will-still-charge-a-commission/\"\u003ealternate payment link\u003c/a\u003e\u0026rdquo;, and just yesterday they announced a sweeping set of \u003ca href=\"https://www.apple.com/newsroom/2024/01/apple-announces-changes-to-ios-safari-and-the-app-store-in-the-european-union/\"\u003echanges coming to the EU App Store\u003c/a\u003e due to the Digital Markets Act (DMA) that is scheduled to come into effect in March.\u003c/p\u003e\n\u003cp\u003eBoth of these legally mandated changes are being implemented in such a way as to do the absolute bare minimum required \u003cstrong\u003eand\u003c/strong\u003e make everyone who decides to use the new options pay for it.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAlternate payment links have to be approved by Apple, can only appear in one place in your app, and require devs pay the same commission they currently pay for in-app purchases minus 3% (which coincidentally is a fairly standard credit card processing fee). At best you\u0026rsquo;re paying the same cut of your sales, which is likely going to lead to almost no one utilizing the system.\u003c/li\u003e\n\u003cli\u003eThe EU rule changes are too numerous to list here, but in almost all cases, the alternate options that Apple is providing to comply with the DMA are seemingly designed to dissuade anyone from opting in, even providing a \u003ca href=\"https://developer.apple.com/support/fee-calculator-for-apps-in-the-eu/\"\u003ehandy calculator\u003c/a\u003e that helps you realize that your current \u003cdel\u003eprotection money\u003c/del\u003e App Store commission is a \u0026ldquo;good deal\u0026rdquo; in comparison.\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eTo sum this up: the way they\u0026rsquo;re \u0026ldquo;complying\u0026rdquo; with these legal directives is by grumbling \u0026ldquo;we\u0026rsquo;ll show them\u0026rdquo;, and then proceeding to take it out on the people and teams that are trying to build software for a platform they care about, that have contributed to making Apple one of the most valuable companies in the world.\u003c/p\u003e\n\u003cp\u003ePolitical maneuvering at it\u0026rsquo;s finest [as long as we end up mad at the legislators and judges, and not the angry mob boss trying to convince us they\u0026rsquo;re trying to help].\u003c/p\u003e\n\u003ch2 id=\"whats-the-solution\"\u003eWhat\u0026rsquo;s the solution?\u003c/h2\u003e\n\u003cp\u003eIn my opinion, Apple can fix this. Instead of doing the minimum their legal teams are advising them they can get away with, how about rethinking the way the Apple to Developer relationship works all the way to the core. Instead of justifying why 15-30% is a fair fee, open up the market and offer a compelling service that people will line up to pay for.\u003c/p\u003e\n\u003cp\u003eThere are plenty of things I would gladly pay Apple for as an indie developer:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA good development environment, including first party frameworks, documentation, development apps, test harnesses, etc.\u003c/li\u003e\n\u003cli\u003eListing my apps in the worldwide App Store directory, including impartial search rankings, being displayed as a related app, and hosting of all the app metadata including screenshots, videos, descriptions, and reviews.\u003c/li\u003e\n\u003cli\u003eHosting my app binaries for easy multi-region downloads without relying on a third-party solution like Amazon S3 or Google Cloud.\u003c/li\u003e\n\u003cli\u003eAutomatic updating of my apps, allowing my customers to easily use the best versions of my software.\u003c/li\u003e\n\u003cli\u003ePayment solutions, including credit card processing, chargeback support, software licenses, receipt validation, and more.\u003c/li\u003e\n\u003cli\u003eEditorial content about my app, including best-of lists, topical round-ups, or developer spotlights.\u003c/li\u003e\n\u003cli\u003ePreferential search treatment or placement for my apps in the App Store.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWith the exception of preferential search placement\u003csup id=\"fnref:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e, this is arguably most of what Apple currently provides as part of their App Store commission (15-30% of revenue). The problem is, if I want to ship an iPhone app, I don\u0026rsquo;t have a choice to use a competing service for most of these offerings.\u003c/p\u003e\n\u003cp\u003eIf Apple\u0026rsquo;s in-app purchase flow is better for a customer than say, a Stripe checkout page, it should be able to stand on it\u0026rsquo;s own merits. Before working on iPhone apps, I spent some time working in eCommerce and checkout conversion is one of the main things you work to optimize. If Apple was able to offer an in-app checkout flow that converted 10% better than a Stripe flow, I would use Apple\u0026rsquo;s and pay them a similar cut to what Stripe would charge me.\u003c/p\u003e\n\u003cp\u003eThe same goes for any other thing I listed (and I\u0026rsquo;m sure many more):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf Apple’s store required a listing fee (even as a percentage of my sales), but that listing fee was leading to consistently finding customers for my apps, I would pay to list my app in that store.\u003c/li\u003e\n\u003cli\u003eIf Apple\u0026rsquo;s app hosting CDN was just as fast (or faster) for my customers to download and update from, and it was competitively priced with other hosting offerings, I would use the built in offering.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI could go on and on, but the point is the same: If Apple is providing such a compelling service to developers, why are they shielding themselves from competition by continuing to operate in a monopolistic way?\u003c/p\u003e\n\u003cp\u003eAnd again, because it can\u0026rsquo;t be said enough: the plethora of good apps available for Apple platforms is a boon, not a burden for Apple. Apple is able to continue selling their devices for record profits year after year in part because of the vibrant third-party app ecosystem enabled by the very developers and teams they\u0026rsquo;re scorning.\u003c/p\u003e\n\u003cdiv class=\"footnotes\" role=\"doc-endnotes\"\u003e\n\u003chr\u003e\n\u003col\u003e\n\u003cli id=\"fn:1\"\u003e\n\u003cp\u003eAnd to be clear, my take that they are intentionally dissuading people from the new pricing structure is \u003cem\u003egenerous\u003c/em\u003e to Apple. Once you opt in to the new pricing structure, you are unable to opt out, meaning that it\u0026rsquo;s likely many developers will opt into the new pricing only to end up paying much more than they would under the current terms, and have no real options.\u0026#160;\u003ca href=\"#fnref:1\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:2\"\u003e\n\u003cp\u003eWhich they will sell you for additional fees in the form of different App Store ad units.\u0026#160;\u003ca href=\"#fnref:2\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/div\u003e",
      "date_modified": "2024-01-26T15:00:00-07:00",
      "date_published": "2024-01-26T15:00:00-07:00",
      "id": "https://joemc.xyz/posts/the-app-store/",
      "image": "https://joemc.xyz/posts/images/the-app-store/app-store.jpg",
      "tags": [
        "post"
      ],
      "title": "Can we talk about the App Store?",
      "url": "https://joemc.xyz/posts/the-app-store/"
    },
    {
      "content_html": "\u003cp\u003eThere are people who’s “brand” is deliberately missing the point. Doesn’t matter what the issue, they’ll find a way to get it wrong. Rather than assume they’re unintelligent, it’s helpful to ask yourself why they might want to get something wrong in such a public venue… 🤔 (hint: social media interactions with “dumb” posts is always 10x higher than scientists or authors making well-reasoned points)\u003c/p\u003e\n\u003cp\u003eThe truth since the beginning of the internet: don’t feed the trolls. 🫡\u003c/p\u003e\n",
      "date_modified": "2024-01-22T13:26:00-07:00",
      "date_published": "2024-01-22T13:26:00-07:00",
      "id": "https://joemc.xyz/notes/2024/01/22/1326/",
      "tags": [
        "note"
      ],
      "title": "Don't feed the trolls",
      "url": "https://joemc.xyz/notes/2024/01/22/1326/"
    },
    {
      "content_html": "\u003cp\u003eDavid Pierce, writing for The Verge:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eAt first, the open web is Apple’s best chance to make its headset a winner. Because at least so far, it seems developers are not exactly jumping to build new apps for Apple’s new platform.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eThere are many strong points made in this article, but as much as I\u0026rsquo;m bummed that Netflix, YouTube, and others are opting out of having their apps available at launch, I don\u0026rsquo;t think this is a harbinger of general support for the platform.\u003c/p\u003e\n\u003cp\u003eI don\u0026rsquo;t know how many Vision Pro developer kits were sent out, but by all accounts it was a small number, and based on what I know I wouldn\u0026rsquo;t be surprised if Netflix didn\u0026rsquo;t get one. One of the requirements (among a long list of somewhat onerous restrictions) of getting a dev kit for the Vision Pro was a commitment to launch an app on day one. It wasn\u0026rsquo;t enough to want to explore how your app would feel or to test out various ideas and get a head start on supporting the platform, you needed to be a launch partner.\u003c/p\u003e\n\u003cp\u003eDisney and Microsoft are clearly launch partners for the device, and Netflix and Google are not. We\u0026rsquo;ll see how long it lasts.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.theverge.com/2024/1/20/24044343/apple-vision-pro-safari-killer-app\"\u003e→ theverge.com\u003c/a\u003e\u003c/p\u003e",
      "date_modified": "2024-01-22T12:47:00-07:00",
      "date_published": "2024-01-22T12:47:00-07:00",
      "external_url": "https://www.theverge.com/2024/1/20/24044343/apple-vision-pro-safari-killer-app",
      "id": "https://joemc.xyz/links/2024/01/visionos-safari/",
      "tags": [
        "link"
      ],
      "title": "Safari is the killer visionOS app at launch",
      "url": "https://joemc.xyz/links/2024/01/visionos-safari/"
    },
    {
      "content_html": "\u003cp\u003eMark Gurman shared some cool details about Vision Pro launch day procedures:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eIn-store pickup customers who order online can either take the device and leave, go through the in-store demo or do a 1:1 set up with an employee to verify size/fit. If needed, customers can swap sizes of individual parts.\u003c/p\u003e\n\u003cp\u003eIf a customer sets up their device at home and there’s a sizing issue, they can come back to the store for a swap.\u003c/p\u003e\n\u003cp\u003eEmployees are piecing together the boxes with the right component sizes to order.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eI\u0026rsquo;ve run through the sizing on two devices multiple times and have been told the same headband size all but once (with the same light seal every time).\u003c/p\u003e\n\u003cp\u003eEven with the consistency of the scan, it\u0026rsquo;s comforting to know that the preorders are \u003cem\u003emainly\u003c/em\u003e securing your Vision Pro model (by storage size), not the unique combination SKU representing the headband size, light seal, and storage tier.\u003c/p\u003e\n\u003cp\u003eSeems like they learned from the original Apple Watch launch.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eThe packaging is giant - like about the size of two Mac Studio boxes or a large shoe box. The headset comes pre attached to the Solo Knit Band. There are also commemorative shopping bags - like with the original iPhone.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eThe hype is real for this thing. Commemorative shopping bags don\u0026rsquo;t matter to me, but Apple is trying to make this launch special.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://twitter.com/markgurman/status/1749199540723535949\"\u003e→ twitter.com\u003c/a\u003e\u003c/p\u003e",
      "date_modified": "2024-01-21T07:28:00-07:00",
      "date_published": "2024-01-21T07:28:00-07:00",
      "external_url": "https://twitter.com/markgurman/status/1749199540723535949",
      "id": "https://joemc.xyz/links/2024/01/vision-pro-launch/",
      "tags": [
        "link"
      ],
      "title": "Apple Vision Pro Launch Day Details",
      "url": "https://joemc.xyz/links/2024/01/vision-pro-launch/"
    },
    {
      "content_html": "\u003cp\u003eWhen I created this site, I decided I wanted to have some of my favorite tweets live alongside my blog posts. After all, Twitter started out as a microblogging platform, so my tweets were mini blog posts anyway. Then things changed, Twitter stopped being Twitter, and posting there didn’t feel the same. Then at some point they weren’t even technically tweets (Xeets?).\u003c/p\u003e\n\u003cp\u003eI still post tweet-like content on some platforms (mainly \u003ca href=\"https://hachyderm.io/@mclaughj\"\u003eMastodon\u003c/a\u003e), but I wanted a place to share something longer than a tweet/toot/thread, but shorter than a blog post.\u003c/p\u003e\n\u003cp\u003eEnter \u003ca href=\"https://joemc.xyz/notes/\"\u003enotes\u003c/a\u003e. Sitting right in the same feed as my posts and links\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e, I’ve relocated all of my old tweets to be notes, and will start posting short-ish content here on my own site. Sometimes it may be a repost of something I said elsewhere, but it will also be a place where I share \u003cem\u003eexclusive\u003c/em\u003e notes, like \u003ca href=\"https://joemc.xyz/notes/2024/01/19/1600/\"\u003ethis one\u003c/a\u003e I posted a little earlier as the inaugural native note on this site.\u003c/p\u003e\n\u003cdiv class=\"footnotes\" role=\"doc-endnotes\"\u003e\n\u003chr\u003e\n\u003col\u003e\n\u003cli id=\"fn:1\"\u003e\n\u003cp\u003eEach content type also has it’s own feed, linked in the footer in order of [probable] length: \u003ca href=\"https://joemc.xyz/links/\"\u003enotes\u003c/a\u003e, \u003ca href=\"https://joemc.xyz/links\"\u003elinks\u003c/a\u003e, and \u003ca href=\"https://joemc.xyz/posts/\"\u003eposts\u003c/a\u003e.\u0026#160;\u003ca href=\"#fnref:1\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/div\u003e\n",
      "date_modified": "2024-01-19T16:23:00-07:00",
      "date_published": "2024-01-19T16:23:00-07:00",
      "id": "https://joemc.xyz/notes/2024/01/19/1623/",
      "tags": [
        "note"
      ],
      "title": "Tweets are now Notes",
      "url": "https://joemc.xyz/notes/2024/01/19/1623/"
    },
    {
      "content_html": "\u003cp\u003eWe live life day by day, hour by hour, minute by minute, breath by breath. There’s no way to change that. Sometimes though, we wish away time, looking forward to the next thing: the weekend, the party, the trip. When we do that, we shift from living into enduring. The time still passes the same way, but it’s no longer valuable time to us. It is simply time that we need to get through in order to arrive at the moment we \u003cem\u003eactually\u003c/em\u003e care about.\u003c/p\u003e\n\u003cp\u003eThat’s a recipe for regret. Do that enough times and you’ll look back at weeks, months, and years spent wishing away the present for a future that simply came and went.\u003c/p\u003e\n\u003cp\u003eBack to the grind. Back to enduring. Back to waiting for time to pass.\u003c/p\u003e\n\u003cp\u003eInstead I’m trying to value every breath I take, living every moment with intention. In the moments I find myself wishing for a better future, I will come back to the present where I will find a life being lived.\u003c/p\u003e\n",
      "date_modified": "2024-01-19T16:00:00-07:00",
      "date_published": "2024-01-19T16:00:00-07:00",
      "id": "https://joemc.xyz/notes/2024/01/19/1600/",
      "tags": [
        "note"
      ],
      "title": "Life should be lived, not endured",
      "url": "https://joemc.xyz/notes/2024/01/19/1600/"
    },
    {
      "content_html": "\u003cp\u003e\u003cem\u003e\u003cstrong\u003eUpdate:\u003c/strong\u003e This post is out of date, as I decided to return the Air and keep my 16\u0026quot; M1 Pro MacBook Pro instead. When it came time to mail my trade-in, I couldn\u0026rsquo;t part with it, it\u0026rsquo;s still such an awesome machine. Maybe sometime in the future I\u0026rsquo;ll revisit the Air. I\u0026rsquo;m leaving the post up because it\u0026rsquo;s still accurate information, but I no longer have the machine.\u003c/em\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003eI side-graded my 2021 16\u0026quot; MacBook Pro to the 15\u0026quot; MacBook Air. I\u0026rsquo;ve been doing a bit more travel lately, and I\u0026rsquo;m getting tired of lugging the bigger 16\u0026quot; beast around with me. The smaller machine is a tradeoff in a few areas compared to the Pro, but it shaves 1.4lbs (0.59kg) of weight off, is significantly thinner, and slightly smaller.\u003c/p\u003e\n\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/posts/images/15-macbook-air/macbook-air.jpg\"\n\t\t\talt=\"a photo of the 15 inch MacBook Air stacked on tof the 16 inch MacBook Pro\"\u003e\u003cfigcaption\u003e\n\t\t\t\u003cp\u003eThe 15\u0026quot; Air stacked on top of the 16\u0026quot; Pro to illustrate relative size.\u003c/p\u003e\n\t\t\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eI haven\u0026rsquo;t had the opportunity to take a trip with it yet, but in some trial runs throwing it in my backpack, the difference is already feeling nice.\u003c/p\u003e\n\u003ch2 id=\"background\"\u003eBackground\u003c/h2\u003e\n\u003cp\u003eThis was a really difficult decision, as I\u0026rsquo;ve said many times previously that the 16\u0026quot; MacBook Pro is my favorite laptop of all time. I stand by that. The 16\u0026quot; MacBook Pro is an amazing machine despite the weight and if I had to choose a single machine from Apple\u0026rsquo;s lineup, I would choose the latest 16\u0026quot; Pro laptop. That being said, I\u0026rsquo;m in a position where I don\u0026rsquo;t have a single machine, which opened me up to some of Apple\u0026rsquo;s other offerings.\u003c/p\u003e\n\u003cp\u003ePrior to doing this switch, I had three different Macs (as covered in my \u003ca href=\"https://joemc.xyz/posts/office-2023/\"\u003ein-depth home office post\u003c/a\u003e):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA Mac Studio that belongs to \u003ca href=\"https://zero1software.com/\"\u003emy small software company\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eM1 Ultra, 64GB RAM, 4TB SSD\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eA work 16\u0026quot; MacBook Pro issued to me by my employer (Yahoo)\n\u003cul\u003e\n\u003cli\u003eM1 Pro, 32GB RAM, 512GB SSD\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eA personal 16\u0026quot; MacBook Pro\n\u003cul\u003e\n\u003cli\u003eM1 Pro, 32GB RAM, 2TB SSD\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFrom a theoretical perspective the Studio and MacBook Pro overlap in capability by quite a margin. In raw power, the Ultra has the Pro beat, but what the Studio provides in speed it lacks in portability. In addition to that, the Studio (and my work-issued MacBook Pro) are company owned and subject to their own usage rules. Effectively, my personal MacBook Pro was used for light web duties, web development, writing, photo editing, and general computing tasks. Occasionally while working remotely (as opposed to from home), I would use my personal machine to work on \u003ca href=\"https://zero1software.com/albums/\"\u003eAlbums\u003c/a\u003e or other things, but I really wasn\u0026rsquo;t using the full computing power of the M1 Pro.\u003c/p\u003e\n\u003ch2 id=\"comparison-time\"\u003eComparison Time\u003c/h2\u003e\n\u003cp\u003eI\u0026rsquo;ve been playing with the idea of going to a smaller/lighter machine for travel for a while, so I had a general idea of the options I had, but it was time to sit down and do all the research I could on the specs and try to make a decision.\u003c/p\u003e\n\u003cp\u003eAfter doing a deep dive into all the specs, configs, price points, and some main reviewer\u0026rsquo;s opinions I settled in on either getting the new 14\u0026quot; M3 Pro MacBook Pro or the 15\u0026quot; M2 MacBook Air. Both are significantly lighter than the 16\u0026quot; MacBook Pro, but beyond that the pros and cons got a lot more interesting. For me, the differences came down to three main areas: \u003cstrong\u003edisplay\u003c/strong\u003e, \u003cstrong\u003epower\u003c/strong\u003e, and \u003cstrong\u003eprice\u003c/strong\u003e.\u003c/p\u003e\n\u003ch4 id=\"displays\"\u003eDisplays\u003c/h4\u003e\n\u003cp\u003eThis one is big for me. In general, I prefer bigger screens over smaller screens and higher pixel density over lower pixel density. The comparison between the Pro and Air put those two into conflict, and I had to decide which one was more important to me. In addition to size and PPI, the Pro has a MiniLED display with better contrast ratio, higher brightness (supporting HDR video), and ProMotion.\u003c/p\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eModel\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eNative Resolution\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003ePPI\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eBrightness\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eProMotion\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eMacBook Pro (14.2\u0026quot;)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e3024×1964\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e254\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e1000 nits\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eYes\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eMacBook Air (15.3\u0026quot;)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e2880×1864\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e224\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e500 nits\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eNo\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eAfter spending some time side by side with the Air and the MacBook Pro, the difference isn\u0026rsquo;t substantial enough to overcome the larger display size of the Air for me, making it my preferred choice for display between the two.\u003c/p\u003e\n\u003cp\u003eOne extra detail is that native display resolution is not the only element that comes into play when using modern Macs. They all offer scaling options to display a non-native resolution and many ship without the simple pixel doubling resolution that was initially a defining characteristic of a \u0026ldquo;Retina display\u0026rdquo;.\u003c/p\u003e\n\u003cp\u003eThe default display scaled resolution for the 14\u0026quot; MacBook Pro is pixel accurate, with a UI resolution of 1512×982 (exactly half the raw display size in each dimension), meaning that each logical pixel is represented by 4 physical pixels. Meanwhile, the 15\u0026quot; MacBook Air ships with a default display scaled resolution of 1710×1107 which means that each logical pixel is represented by ~3.37 physical pixels. If you want to read more about the side effects of display scaling, I highly recommend \u003ca href=\"https://bjango.com/articles/macexternaldisplays2/\"\u003eBjango\u0026rsquo;s article on external monitor options\u003c/a\u003e, which dives into the details and shows some neat illustrations of the side-effects.\u003c/p\u003e\n\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/posts/images/15-macbook-air/scaled-resolutions.png\"\n\t\t\talt=\"The 15\u0026#34; Air ships with a default scaled resolution of 1710×1107\"\u003e\u003cfigcaption\u003e\n\t\t\t\u003cp\u003eThe 15\u0026quot; Air ships with a default scaled resolution of 1710×1107\u003c/p\u003e\n\t\t\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eAside from reduced sharpness, the main thing that comes with display scaling is the physical size of UI elements. By default, a window of a fixed size is bigger on the 14\u0026quot; MacBook Pro than it is on the 15\u0026quot; MacBook Air. That means that the screen of the MacBook Air fits much more than just the extra 1.1\u0026quot; of diagonal screen size would allow if you don\u0026rsquo;t change anything. In fact, with the default scaling settings the MacBook Air\u0026rsquo;s 15\u0026quot; screen shows just 18×10 fewer logical pixels than the 16\u0026quot; MacBook Pro (which renders 1728×1117 at 2× scale).\u003c/p\u003e\n\u003cp\u003eOf course you can choose to run a scaled resolution on any of the machines, but for my eyes, scaling any smaller results in noticeable eye fatigue. As much as I\u0026rsquo;d love to run a perfectly pixel-doubled resolution, the added real estate is a reasonable trade-off on the Air.\u003c/p\u003e\n\u003ch4 id=\"power\"\u003ePower\u003c/h4\u003e\n\u003cp\u003eThis is the area that every YouTuber will have you believe the Air can\u0026rsquo;t hang. Because the Air is fanless, it will get throttled for thermal reasons any time you\u0026rsquo;re doing sustained workloads like exporting videos, rendering 3D models, and compiling code. Here\u0026rsquo;s what they don\u0026rsquo;t tell you though: if you\u0026rsquo;re not doing those types of things, the Air is perfectly capable. And I\u0026rsquo;ll go one step further: even if you are doing those things, the Air is perfectly capable. It will \u003cem\u003enot\u003c/em\u003e rival the speed of desktop-class hardware, but it will still be able to do most things in a reasonable amount of time.\u003c/p\u003e\n\u003cp\u003eLike I said previously, if I was choosing one machine to \u0026ldquo;do it all\u0026rdquo;, I would go with the MacBook Pro. It offers desktop-class power with great portability and battery life. However, for my use cases this laptop will sail through any task I try to perform with room to spare. As I\u0026rsquo;m writing this article, I took a peek at iStat Menu\u0026rsquo;s CPU usage chart and I haven\u0026rsquo;t gone over ~50% utilization since I started using it. With a bunch of apps running, I\u0026rsquo;m hovering around 10% usage.\u003c/p\u003e\n\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/posts/images/15-macbook-air/cpu-graph.png\"\n\t\t\talt=\"A screenshot of the CPU utilization of my 15\u0026#34; MacBook Air over the prior 24 hour period showing average utilization between 15 and 25 percent\"\u003e\u003cfigcaption\u003e\n\t\t\t\u003cp\u003eA screenshot of the CPU utilization of my 15\u0026quot; MacBook Air over the prior 24h period\u003c/p\u003e\n\t\t\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eThe bottom line here: if you \u003cem\u003eknow\u003c/em\u003e you have a high CPU, GPU, and/or RAM intensive workload, you should definitely be leaning towards the beefier machine. If you\u0026rsquo;re mainly doing basic computing tasks with a splash of spikey high-intensity flows, the Air seems to be up to the challenge.\u003c/p\u003e\n\u003ch4 id=\"price\"\u003ePrice\u003c/h4\u003e\n\u003cp\u003eIt would be great if price was a straight-across number to look at, but with all the configuration options available, you really need to approach pricing from a standpoint of: what base specs am I looking to hit?\u003c/p\u003e\n\u003cp\u003eFor my purposes, I felt like ~16GB of RAM and a 1TB SSD was the lowest I was willing to go, and if I was going with the Pro I wanted to feel like I was making a good long term investment, so I opted for the M3 Pro chip, not the base M3. With those options selected, the MacBook Air was $1,899 and the MacBook Pro was $2,399. This is \u003cem\u003enot\u003c/em\u003e a direct comparison though, as you can configure the base M3 MacBook Pro to be only $200 more with the same RAM and SSD options, but that configuration would\u0026rsquo;ve been a compromise on screen size \u003cem\u003eand\u003c/em\u003e power, which didn\u0026rsquo;t make much sense to me. I decided I was either going to get a powerful machine with a smaller screen or I was going to optimize for portability at the expense of power.\u003c/p\u003e\n\u003ch2 id=\"conclusion\"\u003eConclusion\u003c/h2\u003e\n\u003cp\u003eSo after doing all the number crunching, back and forth, and reading/watching reviews I settled on the 14\u0026quot; MacBook Pro. For about a day.\u003c/p\u003e\n\u003cp\u003eI weighed all the pros and cons and come up with the 14\u0026quot; MacBook Pro being the right machine to move to until I bought one and started using it. That\u0026rsquo;s when I realized I didn\u0026rsquo;t love the smaller screen size and really didn\u0026rsquo;t need the performance. So I bought the MacBook Air and immediately fell in love. It\u0026rsquo;s exactly what I wanted it to be. It feels like I\u0026rsquo;m using my M1 16\u0026quot; MacBook Pro, but much thinner and lighter. Technically the screen is smaller, technically the screen PPI is lower, and technically it\u0026rsquo;s not as capable. But in everyday use I don\u0026rsquo;t notice any of those things and I\u0026rsquo;m left with a extremely light and responsive Mac.\u003c/p\u003e\n\u003cp\u003eIf you, like me, have been hoping to shed a little bit of weight from your [probably overloaded] backpack, the MacBook Air might be the same breath of fresh air it\u0026rsquo;s been for me.\u003c/p\u003e",
      "date_modified": "2024-01-10T00:00:00-07:00",
      "date_published": "2024-01-10T00:00:00-07:00",
      "id": "https://joemc.xyz/posts/15-macbook-air/",
      "image": "https://joemc.xyz/posts/images/15-macbook-air/macbook-air.jpg",
      "summary": "I sidegraded from the 16\" M1 MacBook Pro to the 15\" M2 MacBook Air",
      "tags": [
        "post"
      ],
      "title": "15\" MacBook Air",
      "url": "https://joemc.xyz/posts/15-macbook-air/"
    },
    {
      "content_html": "\u003cp\u003eIt’s been about a year and a half since I wrote my last home office post and while much of it has stayed the same, I’ve updated and moved things around quite a bit and felt it was time to write about my current setup and share some new pictures.\u003c/p\u003e\n\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/posts/images/office-2023/desk.jpeg\"\n\t\t\talt=\"A photograph of the desk and surrounding art in my home office\"\u003e\u003cfigcaption\u003e\n\t\t\t\u003cp\u003eA photograph of the desk and surrounding art in my home office (October 2023).\u003c/p\u003e\n\t\t\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eI’ve been working remotely since mid-2016 – now in my eighth year. The majority of that time I was working for Bleacher Report/Turner Sports, then remotely for Apple\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e before joining a startup named Commonstock. After a little over a year at Commonstock, we were acquired by Yahoo\u003csup id=\"fnref:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e where I now work as a principal software engineer on the \u003ca href=\"https://apps.apple.com/us/app/yahoo-finance-stocks-news/id328412701\"\u003eYahoo Finance iOS app\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eOver the years I’ve written a couple posts (and countless tweets) about my home office with commentary about remote work before it was cool.\u003c/p\u003e\n\u003cp\u003eIf you’re interested in checking out the older stuff, here are some links:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://joemc.xyz/posts/working-remotely/\"\u003eWorking remotely\u003c/a\u003e – a look at my first remote gig with Bleacher Report after three years with some tips from personal experience working remotely (May 2019)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://joemc.xyz/posts/2022-Home-Office/\"\u003eMy home office\u003c/a\u003e – an updated look at my home office from last year while I was working remotely for Apple (Feb 2022)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://joemc.xyz/links/2022/08/about-pajamas/\"\u003eIs it really about pajamas?\u003c/a\u003e – a mini rant about remote work productivity and belonging directed toward Malcom Gladwell after some comments he made on a podcast (Aug 2022)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis year I have a lot to share, including some fun pictures and breakdowns of some of the individual pieces that make up my office. I’ve broken the post into three different sections: \u003ca href=\"#the-layout\"\u003ethe layout\u003c/a\u003e, \u003ca href=\"#the-gear\"\u003ethe gear\u003c/a\u003e, and \u003ca href=\"#the-furniture--decor\"\u003ethe furniture \u0026amp; decor\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eA few disclaimers before we dive in:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eI’m a strong advocate of remote work and believe that when supported at the team and organization levels, it can be a powerful tool to improve diversity, equity, and inclusion in the workforce as well as allowing people to prioritize things in their lives outside of work. I apologize if any of my thoughts or opinions come across as anything other than constructive.\u003c/li\u003e\n\u003cli\u003eI have been building apps on and for Apple platforms since 2008, and I’m a bit of an Apple fanboy. My office is a reflection of that, so be warned there are many Apple products featured in this post. Proceed at your own risk, and/or hide your wallet now 💸\u003c/li\u003e\n\u003cli\u003eWhen linking to Amazon I\u0026rsquo;ve included affiliate links, so if you make a qualifying purchase I earn a commission. This doesn\u0026rsquo;t cost you anything and helps support me and this site.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"the-layout\"\u003ethe layout\u003c/h2\u003e\n\u003cp\u003eIf you work remotely and do some portion of your work on video calls, there are two primary views you think about when arranging the workspace: your view, and the camera’s view.\u003c/p\u003e\n\u003cp\u003eOver the years I’ve tried to place some cool story pieces in clear view of my webcam so people joining a video call with me for the first (or 20th) time have something cool to look at or comment on. It helps to convey a bit of who I am and hopefully leads to them feeling more comfortable on a call with me. When working remotely, any effort to bring some humanity to the little 2D rectangle that represents you on a call goes a long way.\u003c/p\u003e\n\u003cp\u003eIn the last iteration of my office, I skewed too heavily toward what was seen from my web cam and had a rather sparse view from my desk. I had a couple pictures and a few toys, but they were all placed on the desktop which ended up feeling too confined day after day.\u003c/p\u003e\n\u003cp\u003eSo this year I flipped my office layout, moving my desk to the old video background wall, which I’ve absolutely loved. Over the years I’ve collected quite a few pieces of art that I’ve hung around my office, and with a big blank wall in front of my desk I’ve been able to display many of them for my own enjoyment, which visually expands my workspace beyond my desk to the rest of the wall.\u003c/p\u003e\n\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/posts/images/office-2023/desk-direct.jpeg\"\n\t\t\talt=\"a photograph of my desk wall, showing my desk with various computer items on it, and a wall with a snowboard and various framed pieces of artwork displayed\"\u003e\u003cfigcaption\u003e\n\t\t\t\u003cp\u003eA photograph of the desk wall of my home office (October 2023).\u003c/p\u003e\n\t\t\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eNow as I’m sitting at my desk on a work call, or taking a moment to think through a problem, I take a little breath to look around. The photos, art, and snowboards bring a little smile to my face and help to center me. There are more important things in life than work, and that perspective helps me to not stress about the little things.\u003c/p\u003e\n\u003ch2 id=\"the-gear\"\u003ethe gear\u003c/h2\u003e\n\u003cp\u003eOver the years that I’ve worked from home, I’ve put together a nice collection of tech, furniture, and accessories that help make my office a productive and inviting space. Here’s a breakdown of the tech gear I’m currently using, when it was added to my setup, and the price.\u003c/p\u003e\n\u003cp\u003eKeep reading for my thoughts on most items, or jump to the ones you care about using the arrows to the writeup (↓) or the product page (↗). Where possible I\u0026rsquo;ve included links to the products, however some have been discontinued or are no longer available.\u003c/p\u003e\n\u003ch4 id=\"table-of-gear\"\u003etable of gear\u003c/h4\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003edevices\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eadded\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eprice\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003ePro Display XDR (with Pro Stand) \u003ca href=\"#pro-display-xdr\"\u003e↓\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eJan, 2021\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$6k\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eMac Studio (M1 Ultra, 64GB RAM, 4TB SSD) \u003ca href=\"#mac-studio\"\u003e↓\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eApr, 2022\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$5k\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eMacBook Pro (M1 Pro, 32GB RAM, 2TB SSD) \u003ca href=\"#16-macbook-pros\"\u003e↓\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eNov, 2021\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$3.5k\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eiPhone 15 Pro Max (256GB) \u003ca href=\"#iphones\"\u003e↓\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eSep, 2023\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$1.2k\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eiPad Pro (12.9\u0026quot;, M2, 256GB) \u003ca href=\"#ipad-pro\"\u003e↓\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eMar, 2023\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$1.2k\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eApple Watch Ultra \u003ca href=\"#apple-watch-ultra\"\u003e↓\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eSep, 2022\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$800\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eperipherals\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eadded\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eprice\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eAirPods Max \u003ca href=\"#airpods\"\u003e↓\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eDec, 2020\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$550\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eAirPods Pro 2 \u003ca href=\"#airpods\"\u003e↓\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eJul, 2023\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$250\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eMagic Trackpad \u003ca href=\"#mouse-and-keyboard\"\u003e↓\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eMar, 2018\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$130\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eMiniVan Mechanical Keyboard \u003ca href=\"#mouse-and-keyboard\"\u003e↓\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eDec, 2017\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$400\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eLogitech 4K Pro Magnetic Webcam \u003ca href=\"#logitech-magnetic-webcam\"\u003e↓\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eJan, 2021\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$200\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003emusic\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eadded\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eprice\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eAudio-Technica Turntable \u003ca href=\"#turntable--speakers\"\u003e↓\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eJul, 2021\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$350\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eKlipsch R-51PM Speakers \u003ca href=\"#turntable--speakers\"\u003e↓\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eOct, 2018\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$350\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eBelkin SoundForm Connect \u003ca href=\"#soundform-connect\"\u003e↓\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eJul, 2021\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$100\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eother accessories\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eadded\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eprice\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eSVALT Cooling Dock DHCR \u003ca href=\"#svalt-cooling-dock\"\u003e↓\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eSep, 2023\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$280\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eSABRENT Thunderbolt 4 KVM Switch \u003ca href=\"https://amzn.to/45XRyGE\"\u003e↗\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eSep, 2023\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$300\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eNomad Base One MagSafe Charger \u003ca href=\"https://nomadgoods.com/products/base-one-silver\"\u003e↗\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eSep, 2023\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$100\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eAnker USB-C to Gigabit Ethernet Adapter \u003ca href=\"https://amzn.to/47jkAl6\"\u003e↗\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eSep, 2023\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$20\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eAnker 12 Outlet Power Strip \u003ca href=\"https://amzn.to/46WLJup\"\u003e↗\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eSep, 2023\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$23\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eeero Pro 6 Mesh Wifi System \u003ca href=\"https://amzn.to/49pTR8n\"\u003e↗\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eDec, 2020\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$550\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eElevationLab QuickDraw (x2) \u003ca href=\"https://amzn.to/46Wrixn\"\u003e↗\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eApr, 2022\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$25\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eElevationLab Headphone Anchor \u003ca href=\"https://amzn.to/49ohX3m\"\u003e↗\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eMar, 2016\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$12\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eMoleskine Soft Cover XL Notebook \u003ca href=\"https://amzn.to/473nhaD\"\u003e↗\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eVarious\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$30\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eMuji 0.38 Gel Ink Pens \u003ca href=\"https://amzn.to/3QhLpza\"\u003e↗\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eVarious\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$18\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch4 id=\"pro-display-xdr\"\u003ePro Display XDR\u003c/h4\u003e\n\u003cp\u003eFront and center on my desk is one of my favorite tech purchases, and the screen I’ve looked at the most in the last three plus years: the Pro Display XDR. At the time it was a ridiculous purchase (it still is), but I don’t regret it one bit. I’m dreading the day when Apple inevitably releases a ProMotion version of the display, because that’s the one feature I miss compared to working on my laptops. I don’t know if I’ll be strong enough to resist upgrading to that theoretical display.\u003c/p\u003e\n\u003cfigure class=\"float-right\"\u003e\u003cimg src=\"https://joemc.xyz/posts/images/office-2023/xdr.jpeg\"\n\t\t\talt=\"A photograph of the back of my computer monitor, the Apple Pro Display XDR\"\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eI went with the standard (glossy) display instead of the matte nano-texture version. The lighting in my office is pretty controlled, with blackout blinds on each of the three windows, so I didn\u0026rsquo;t feel the need to shell out the extra $1,000. In addition I was worried when the support documents were released, as it seemed like the nano-texture was going to require extra care to avoid scratches.\u003c/p\u003e\n\u003cp\u003eThis year, I was finally able to address one of the biggest downsides to the Pro Display for my setup: multiple input support. The Pro Display only has a single TB4 port to connect a machine to it, which probably works well for most people, but I have three different Macs that I switch between for different contexts: a work-issued MacBook Pro, a Mac Studio for indie app development\u003csup id=\"fnref:3\"\u003e\u003ca href=\"#fn:3\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e3\u003c/a\u003e\u003c/sup\u003e, and a personal MacBook Pro.\u003c/p\u003e\n\u003cp\u003eA month ago I lamented on Mastodon that even though there are many Thunderbolt and USB-C hubs, I hadn’t seen a Thunderbolt KVM. My friend \u003ca href=\"https://mastodon.social/@davedelong/110974229503908255\"\u003eDave DeLong\u003c/a\u003e replied with a \u003ca href=\"https://amzn.to/45XRyGE\"\u003elink to one\u003c/a\u003e that had just come out, and I immediately ordered it. Switching machines isn’t instantaneous, but I’m happy to report that it works extremely well and allows me to keep both my Mac Studio and a MacBook Pro plugged in to the Pro display. \u003ca href=\"#table-of-gear\"\u003e↩\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"mac-studio\"\u003eMac Studio\u003c/h4\u003e\n\u003cp\u003eI used to do most of my work on a 27″ iMac, which was great for my needs. It had great performance, a gorgeous display (during the period of time Apple didn’t offer an external display), and a reasonable price point. The Mac Pro (while enviable) was generally overkill for developers, and MacBook Pros are always a performance tradeoff for the mobility. When Apple released the Pro Display XDR there wasn’t a desktop that really checked all of the boxes for me, so I went back to a MacBook Pro plugged into the XDR.\u003c/p\u003e\n\u003cp\u003eThankfully that all changed when Apple unveiled the Mac Studio, which I’ve absolutely loved. I ordered mine with the M1 Ultra, 64GB RAM, and a 4TB SSD, which has been a great spec for everything I’ve thrown at it. I don’t foresee needing to upgrade for several more years. \u003ca href=\"#table-of-gear\"\u003e↩\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"16-macbook-pros\"\u003e16\u0026quot; MacBook Pro(s)\u003c/h4\u003e\n\u003cp\u003eI can’t believe that I haven’t written a post about the latest iteration of the MacBook Pro design. It’s my favorite form factor of the machine ever, and the battery life + performance are incredible. I have two almost identical M1 MacBook Pros configs, one work-issued and one personal, and they’re both great to work on. Both of mine have the M1 Pro with 32GB RAM, and my personal machine has a 2TB SSD.\u003c/p\u003e\n\u003cp\u003eMost of the time I use the work laptop in clamshell mode on the \u003ca href=\"#svalt-cooling-dock\"\u003eSvalt cooling dock\u003c/a\u003e, but I often use my personal machine as a laptop and love the ProMotion display. As I mentioned above, I’d love to have ProMotion added to a future iteration of the Pro display once it’s feasible.\u003c/p\u003e\n\u003cp\u003eAs much as I’d love the year over year improvements of the M2 and M3 chips, the M1 is still plenty fast and the battery life is holding strong. Although the M3 chips look great, I’ll be waiting for the M4 or M5 chips to upgrade. \u003ca href=\"#table-of-gear\"\u003e↩\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"iphones\"\u003eiPhones\u003c/h4\u003e\n\u003cp\u003eNo iPhone app developer’s gear list is complete without mentioning the various iOS devices they have sitting on their desk on any given day. Currently I have four phones hanging around:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eiPhone 15 Pro Max (natural titanium)\n\u003cul\u003e\n\u003cli\u003eMy daily carry phone, and my favorite iPhone of all time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eiPhone 14 (purple)\n\u003cul\u003e\n\u003cli\u003eMy work-issued phone (purple for Yahoo).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eiPhone 13 mini (Green)\n\u003cul\u003e\n\u003cli\u003eI love the mini form factor, so before I left Apple I used my discount to pick one of them up. I’ve swapped my eSIM over to it a few times and carried it, but it’s mostly a test phone to verify interfaces work on the smaller screen.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eiPhone SE (Gen 2, White)\n\u003cul\u003e\n\u003cli\u003eThe last vestige of the home button, great test device for top and bottom spacing of apps without the extra space allotted for the notch/island and bottom home indicator.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI don’t think you can go wrong with any of the iPhones Apple sells nowadays. They all have great specs, great cameras, and will last several years. Most of the time it comes down to price and size. However, the iPhone 15 Pro Max has been an exceptional upgrade, and really feels like the pinnacle of this form factor. Perhaps I’ll write a longer post after the honeymoon period wears off, but I \u003ca href=\"https://hachyderm.io/@mclaughj/111111564894018118\"\u003eposted my first impressions\u003c/a\u003e on Mastodon. \u003ca href=\"#table-of-gear\"\u003e↩\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"ipad-pro\"\u003eiPad Pro\u003c/h4\u003e\n\u003cp\u003eI love the 12.9″ iPad Pro. It’s something I can’t quite put into words, but the combination of the thin case and the expansive bright screen makes it such a \u003cem\u003epure\u003c/em\u003e device. My one complaint about the iPad is that the software hasn’t been able to keep up with the hardware. There are “pro” apps that utilize the chip to export video or play games, but over the years third party developers have been hamstrung by app review, preventing innovative uses of the hardware.\u003c/p\u003e\n\u003cp\u003eI hope one day we’ll see the iPad get to live up to it’s potential as a device. \u003ca href=\"#table-of-gear\"\u003e↩\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"apple-watch-ultra\"\u003eApple Watch Ultra\u003c/h4\u003e\n\u003cp\u003eOne of the under-appreciated things that Apple has done over the last decade is change a generation (or more) of people who gave up on watches back into watch wearers. I’ve owned [almost] every generation of Apple Watch and they’ve all been great, but the Ultra was the first one where I thought “Oh yeah, this is going to be awesome”.\u003c/p\u003e\n\u003cp\u003eThe larger screen, the improvements to watchOS, and the gorgeous titanium case make it my favorite watch ever, and I’m looking forward to the future generations of Ultras. \u003ca href=\"#table-of-gear\"\u003e↩\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"airpods\"\u003eAirPods\u003c/h4\u003e\n\u003cfigure class=\"float-right\"\u003e\u003cimg src=\"https://joemc.xyz/posts/images/office-2023/airpods.jpeg\"\n\t\t\talt=\"A photograph of my AirPods Max in Space Gray, plugged into an iPod Video with an AirPods Pro 2 to the side. They\u0026#39;re all laid haphazardly on a checked wool blanket.\"\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eI have too many pairs of AirPods, but the two I use the most at my desk are the \u003ca href=\"https://amzn.to/47drxVj\"\u003eAirPods Max\u003c/a\u003e in Space Gray and the \u003ca href=\"https://amzn.to/3Mqpy7B\"\u003eAirPods Pro 2\u003c/a\u003e. Usually I lean towards the AirPods Max for music and the Pros for video calls, but they’re both really good at what they do. For me, too much time wearing the in-ear pros can get tiring for my ears, whereas I can go several hours wearing the Max with no issues.\u003c/p\u003e\n\u003cp\u003eI’m [not-so] patiently waiting for the next generation of the AirPods Max not because these need to be replaced, but because I wish I would’ve chosen the silver color. My MacBook Pros are space gray, but the Pro Display and Mac Studio are more prominent on my desk and silver. USB-C and lossless audio would be nice too. \u003ca href=\"#table-of-gear\"\u003e↩\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"mouse-and-keyboard\"\u003eMouse and Keyboard\u003c/h4\u003e\n\u003cp\u003eI’m probably weird, but I use a trackpad full time on macOS. I’ve tried the Logitech MX Master and the like, but I always find myself missing the fluid gestural control that I “grew up on” in college as Apple was making their trackpads bigger and better. I will admit that part of what makes it easy for me to use a trackpad is that I’m a heavy keyboard user, and try to do most things using keyboard shortcuts. There are times that I’m doing repetitive mouse tasks that get annoying with a trackpad, but those times are so infrequent that I’ve stuck on the trackpad for the last decade.\u003c/p\u003e\n\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/posts/images/office-2023/mouse-keyboard.jpeg\"\n\t\t\talt=\"A photograph of my keyboard and trackpad on my desk\"\u003e\u003cfigcaption\u003e\n\t\t\t\u003cp\u003eA photograph of my keyboard and trackpad on my desk.\u003c/p\u003e\n\t\t\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eI built this particular keyboard almost six years ago, and I have several others that have the same layout. I wrote a bit about my introduction to \u003ca href=\"https://joemc.xyz/posts/hammerspoon/\"\u003ethe MiniVan keyboard\u003c/a\u003e in a post a couple years ago if you’re curious. This build uses a special edition white powder coated aluminum case, \u003ca href=\"https://trashman.wiki/pcbs/low-rider\"\u003eLow Rider USB-C PCB\u003c/a\u003e, \u003ca href=\"https://zealpc.net/products/zilent?variant=5894832324646\"\u003eZilent 67g switches\u003c/a\u003e, \u003ca href=\"https://zealpc.net/products/zealstabilizers?variant=27196398790\"\u003eZeal screw-in stabilizers\u003c/a\u003e, and \u003ca href=\"https://omnitype.com/products/gmk-dracula-v2-0-keycaps\"\u003eGMK Dracula keycaps\u003c/a\u003e. \u003ca href=\"#table-of-gear\"\u003e↩\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"logitech-magnetic-webcam\"\u003eLogitech Magnetic Webcam\u003c/h4\u003e\n\u003cfigure class=\"float-right\"\u003e\u003cimg src=\"https://joemc.xyz/posts/images/office-2023/photo-booth.jpeg\"\n\t\t\talt=\"A photograph of me and the items behind me, depicting what others see on a video call\"\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eI don’t know, it works? I upgraded to this webcam when I bought the Pro display because it has a cool magnetic attachment mechanism designed specifically for the Pro display. Other than Logitech’s software being a total mess, the camera works well. I used to have the Logitech software installed to manage the frame and other features, but now I rely on the system to do whatever it wants and I haven’t had any issues. The image is an unedited photo from the webcam on a bit of a cloudy afternoon (mirrored so it looks like it does in video calls). Some day I\u0026rsquo;d love to try out the \u003ca href=\"https://opalcamera.com/\"\u003eOpal C1\u003c/a\u003e, but so far I\u0026rsquo;ve been holding out. \u003ca href=\"#table-of-gear\"\u003e↩\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"turntable--speakers\"\u003eTurntable \u0026amp; Speakers\u003c/h4\u003e\n\u003cp\u003eYears ago I decided to try out listening to vinyls. I\u0026rsquo;m [just] young enough that I wasn\u0026rsquo;t doing it because of nostalgia, more because I was curious about what I had missed. I don\u0026rsquo;t tend to jump into anything halfway, so I bought the well-reviewed \u003ca href=\"https://amzn.to/40oveEX\"\u003eAudio-Technia LP120 turntable\u003c/a\u003e\u003csup id=\"fnref:4\"\u003e\u003ca href=\"#fn:4\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e4\u003c/a\u003e\u003c/sup\u003e and a pair of studio monitors and immediately fell in love with the analog sound, warmth, and dynamic range of vinyl. Since then I\u0026rsquo;ve always kept my vinyl listening setup in my office and slowly grown my collection.\u003c/p\u003e\n\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/posts/images/office-2023/turntable.jpeg\"\n\t\t\talt=\"A photograph of the turntable in my office playing Revisions by The Glitch Mob\"\u003e\u003cfigcaption\u003e\n\t\t\t\u003cp\u003eA photograph of the turntable in my office playing Revisions by The Glitch Mob (2023)\u003c/p\u003e\n\t\t\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eIn 2018, I wanted to streamline the appearance of my setup, and upgraded my speakers to the \u003ca href=\"https://amzn.to/3QzuLeG\"\u003eKlipsch R-51PM\u003c/a\u003e powered bookshelf speakers, removing the need for a bulky receiver on my shelves. They\u0026rsquo;ve been tremendous in terms of sound quality, appearance, and features. They also have bluetooth, which was nice for the times when I wanted to listen to music that I didn\u0026rsquo;t own on vinyl. \u003ca href=\"#table-of-gear\"\u003e↩\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"soundform-connect\"\u003eSoundForm Connect\u003c/h4\u003e\n\u003cp\u003eThe \u003ca href=\"https://amzn.to/40oBPit\"\u003eSoundForm Connect\u003c/a\u003e is one of those pieces of tech that becomes invisible because it works so well. Because I have a [small] vinyl collection that I listen to in my office, I have a set of bookshelf speakers instead of a smart speaker setup. When Belkin announced this little device that allowed you to turn any speakers into an AirPlay destination, I was able to have my cake and eat it too. I have this wired into my Klipsch speakers via an optical cable and the sound quality over AirPlay is awesome. \u003ca href=\"#table-of-gear\"\u003e↩\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"svalt-cooling-dock\"\u003eSVALT Cooling Dock\u003c/h4\u003e\n\u003cp\u003eI’m not an expert in thermodynamics, but based off how Apple (and others) have explained the cooling system on their laptops, it makes sense that when you’ve closed the screen you’re limiting the airflow out of the machine. Enter the \u003ca href=\"https://svalt.com/products/cooling-dock-dhcr\"\u003eSVALT cooling dock\u003c/a\u003e, which acts as an external heatsink directly outside the bottom of the laptop case where the logic board sits. In my experience the M-series laptops run \u003cem\u003emuch\u003c/em\u003e cooler than the last generation of Intel MacBook Pros, but if you feel the bottom of the machine after a while it’s definitely still warm.\u003c/p\u003e\n\u003cfigure class=\"float-right\"\u003e\u003cimg src=\"https://joemc.xyz/posts/images/office-2023/svalt.jpeg\"\n\t\t\talt=\"A photograph of the SVALT cooling dock\"\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eI had the first generation of this cooling dock (designed for the Intel machines), and it definitely seemed to help increase the long-run performance of the machines when running in clamshell mode. This new iteration is even cooler, with big heatsink fins on the back and a “thermally conductive interface” to draw heat out of the laptop to keep it cool.\u003c/p\u003e\n\u003cp\u003eAgain, I’m not an expert but my anecdotal experience is that these things work. Svalt also has a \u003ca href=\"https://svalt.com/blogs/svalt/performance\"\u003ecool writeup\u003c/a\u003e breaking down sustained performance of M1 Max machines with each model.\u003c/p\u003e\n\u003cp\u003ePerformance aside, they look really cool and serve as a great place to rest your laptop to dock, I highly recommend them. \u003ca href=\"#table-of-gear\"\u003e↩\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"the-furniture--decor\"\u003ethe furniture \u0026amp; decor\u003c/h2\u003e\n\u003cp\u003eEqually important to the gear in my office is the furniture and decor that really makes it mine. This is the type of stuff you\u0026rsquo;re never really going to be able to have in a typical office environment, unless you\u0026rsquo;re the CEO.\u003c/p\u003e\n\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/posts/images/office-2023/bookshelf.jpeg\"\n\t\t\talt=\"a photograph of the back wall of my office, showing my bookshelves, decor, and a lounge chair\"\u003e\u003cfigcaption\u003e\n\t\t\t\u003cp\u003eA photograph of the back wall of my home office (2023).\u003c/p\u003e\n\t\t\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003ch4 id=\"table-of-furniture--decor\"\u003etable of furniture \u0026amp; decor\u003c/h4\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003efurniture\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eadded\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eprice\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eFully Jarvis Standing Desk \u003ca href=\"#jarvis-standing-desk\"\u003e↓\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eMar, 2018\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$680\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eHerman Miller Cosm \u003ca href=\"#herman-miller-cosm\"\u003e↓\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eJan, 2020\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$1.6k\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eReplica Eames Lounge Chair \u003ca href=\"#replica-eames-lounge-chair\"\u003e↓\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eOct, 2020\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$1.4k\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eBurrow Bookcase and Console \u003ca href=\"#burron-bookcase-and-console\"\u003e↓\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eSep, 2023\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$1.3k\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eFluidStance Level Balance Board \u003ca href=\"#fluidstance-balance-board\"\u003e↓\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eSep, 2023\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$300\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eart \u003ca href=\"#art\"\u003e↓\u003c/a\u003e\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eadded\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eprice\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eGrid Framed iPhones \u003ca href=\"https://gridstudio.cc/collections/iphone\"\u003e↗\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e2021-2022\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$550\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eWasatch Central Range Map \u003ca href=\"https://andyearlcreative.bigcartel.com/product/wasatch-map\"\u003e↗\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eJun, 2019\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$85\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eBaseball Stadium Infographics \u003ca href=\"https://thirty81press.com/collections/thirty81-collection\"\u003e↗\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eMar, 2017\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$60\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eHand Drawn Utah Map \u003ca href=\"https://lordofmaps.com/products/utah-version-2?variant=40701382721584\"\u003e↗\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eMay, 2020\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$50\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eVault Alarm A–Z Print \u003ca href=\"https://simplebits.shop/collections/goods/products/vault-alarm-a-z-print\"\u003e↗\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAug, 2023\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$15\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eIllustrated Star Wars Prints (by \u003ca href=\"https://rog.ie/\"\u003eRogie\u003c/a\u003e)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e2016-2018\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$100\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eApple Special Event Logos Print \u003ca href=\"https://www.etsy.com/listing/1297820685/apple-logo-poster-180-apple-event-logos\"\u003e↗\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eSep, 2023\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$70\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eGolden Gate Bridge In Type \u003ca href=\"http://cameronmoll.bigcartel.com/product/goldengatebridge\"\u003e↗\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eSep, 2023\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$90\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003esnowboards \u003ca href=\"#snowboards\"\u003e↓\u003c/a\u003e\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eadded\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eprice\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eJones Mountain Twin \u003ca href=\"https://amzn.to/45ZkDkX\"\u003e↗\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eDec, 2021\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$550\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eJones Tweaker – Limited Edition \u003ca href=\"https://amzn.to/3MqLYWc\"\u003e↗\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eApr, 2022\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$530\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eJones Frontier \u003ca href=\"https://amzn.to/461jmKe\"\u003e↗\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eSep, 2023\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$500\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003etoys\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eadded\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eprice\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eLegos \u003ca href=\"#legos\"\u003e↓\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eVarious\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$1k+\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eDestiny Figurines\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eVarious\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$150\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eTidbyt \u003ca href=\"https://tidbyt.com/\"\u003e↗\u003c/a\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eDec, 2022\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e$170\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch4 id=\"jarvis-standing-desk\"\u003eJarvis Standing Desk\u003c/h4\u003e\n\u003cp\u003eI\u0026rsquo;ve had this desk for almost six years, and it\u0026rsquo;s been excellent. I went with the large 78\u0026quot;x30\u0026quot; bamboo desktop. I love having space on either side of me, even though sometimes it gets cluttered. I\u0026rsquo;d [still] like to upgrade the top to a thicker reclaimed walnut slab someday, but the bamboo has held up tremendously well over the years and it\u0026rsquo;s hard to justify the cost for almost purely aesthetic reasons. \u003ca href=\"#table-of-furniture--decor\"\u003e↩\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"herman-miller-cosm\"\u003eHerman Miller Cosm\u003c/h4\u003e\n\u003cp\u003eThis desk chair, like most in the Herman Miller catalog, is definitely pricey. I used to have a \u003ca href=\"https://amzn.to/3FRlSrz\"\u003eHerman Miller Embody\u003c/a\u003e, but I took a gamble on the \u003ca href=\"https://amzn.to/3QJMgtK\"\u003eCosm\u003c/a\u003e and it\u0026rsquo;s supposed \u0026ldquo;no adjustments necessary\u0026rdquo; design and I\u0026rsquo;ve been impressed. It\u0026rsquo;s definitely my favorite desk chair, and I love the full mesh design. I went with the high-back design with the leaf arms (which I love) in graphite. \u003ca href=\"#table-of-furniture--decor\"\u003e↩\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"replica-eames-lounge-chair\"\u003eReplica Eames Lounge Chair\u003c/h4\u003e\n\u003cp\u003eThe famed Eames Lounge Chair and Ottoman have been on my office \u0026ldquo;must-have\u0026rdquo; list forever. It was only a matter of time before I sought out a high quality replica. If I ever won the lottery I might pay full price for an official one, but this one is extremely high quality and I haven\u0026rsquo;t regretted it one bit. \u003ca href=\"#table-of-furniture--decor\"\u003e↩\u003c/a\u003e\u003c/p\u003e\n\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/posts/images/office-2023/eames.jpeg\"\n\t\t\talt=\"a photograph of the back wall of my office, showing my bookshelves, decor, and a lounge chair\"\u003e\u003cfigcaption\u003e\n\t\t\t\u003cp\u003eA photograph of my replica Eames Lounge Char and Ottoman (2023).\u003c/p\u003e\n\t\t\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003ch4 id=\"burrow-bookcase-and-console\"\u003eBurrow Bookcase and Console\u003c/h4\u003e\n\u003cp\u003eOne of the newest additions to my office are \u003ca href=\"https://burrow.com/shelves-and-storage/index-bookcase\"\u003ethese bookshelves\u003c/a\u003e from Burrow. They aren\u0026rsquo;t \u003cem\u003esupposed\u003c/em\u003e to go together (the console is a little deeper than the bookcase), but I really like how the fill the space and have lots of open space for books, LEGOs, and vinyls. I\u0026rsquo;m hoping to put a custom neon sign in the open space above the bookcase, but haven\u0026rsquo;t been able to get it made yet. Stay tuned! 👀 \u003ca href=\"#table-of-furniture--decor\"\u003e↩\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"fluidstance-balance-board\"\u003eFluidStance Balance Board\u003c/h4\u003e\n\u003cfigure class=\"float-right\"\u003e\u003cimg src=\"https://joemc.xyz/posts/images/office-2023/fluidstance.jpeg\"\n\t\t\talt=\"a photograph of the fluidstance balance board on it\u0026#39;s storage stand\"\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eI bought \u003ca href=\"https://amzn.to/470ragA\"\u003ea cheaper version\u003c/a\u003e of \u003ca href=\"https://fluidstance.com/products/the-level-balance-board-for-standing-desk\"\u003ethis balance board\u003c/a\u003e years ago when I was looking around for a solution to pain while standing at my desk. I\u0026rsquo;m not a doctor, but based off my understanding it\u0026rsquo;s not the \u003cem\u003esitting\u003c/em\u003e at a desk all day that\u0026rsquo;s that bad part, it\u0026rsquo;s the \u003cem\u003eall day\u003c/em\u003e part. Enter standing desks, which allow us to switch between sitting in a stationary position, and standing in a stationary position. In other words, it\u0026rsquo;s not really doing much for us since we\u0026rsquo;re still mostly static or stationary.\u003c/p\u003e\n\u003cp\u003eThat\u0026rsquo;s where the balance board comes in, encouraging and facilitating lots of micro movements while standing at our desks. In my opinion it doesn\u0026rsquo;t require a ton of balance to stand on it, but it\u0026rsquo;s just enough to keep your body doing small adjustments. If you\u0026rsquo;d like to do some reading from FluidStance, they have a \u003ca href=\"https://fluidstance.com/pages/benefits\"\u003enice page on their site\u003c/a\u003e diving into the benefits and research on the subject.\u003c/p\u003e\n\u003cp\u003ePlus I like to think it helps keep my snowboard balance improving year-round! 🏂\u003c/p\u003e\n\u003ch4 id=\"art\"\u003eArt\u003c/h4\u003e\n\u003cp\u003eI love buying artwork, framing it, and hanging it around me. It inspires me in so many ways and I love being able to support artists in a small way. I have purchased and framed many prints over the years, and I want to continue to grow my collection.\u003c/p\u003e\n\u003cp\u003eI also love printing out and framing my photos, bringing them out of their digital form and being able to admire them in the physical space. I wish I had more space to hang things, because I\u0026rsquo;m starting to run out!\u003c/p\u003e\n\u003cp\u003eI\u0026rsquo;ve framed most of the art in my office using \u003ca href=\"https://www.levelframes.com/?ref=79917b255f\"\u003eLevel Frames\u003c/a\u003e, who have consistently delivered great looking frames for what I feel like is a reasonable price. I\u0026rsquo;ve also ordered many printed photos from them, and have loved how they\u0026rsquo;ve turned out. If you\u0026rsquo;re looking for frames (or printed and framed photos), they have a referral program that gives you $15 for creating an account that you can use toward your first purchase (which then gives me some credits for my next purchase). \u003ca href=\"#table-of-furniture--decor\"\u003e↩\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"snowboards\"\u003eSnowboards\u003c/h4\u003e\n\u003cp\u003eAfter growing up in Colorado, and living in Utah for over a decade, you\u0026rsquo;d think I\u0026rsquo;d have started snow sports as a kid. However I only took up snowboarding a few years ago but I\u0026rsquo;ve wasted no time acquiring several snowboards that make a great addition to my office during the offseason.\u003c/p\u003e\n\u003cp\u003eI\u0026rsquo;m really fond of the Jones boards from a ride feel and aesthetic, and have three of them around my office. I\u0026rsquo;m excited to take the \u003ca href=\"https://amzn.to/461jmKe\"\u003enewest one\u003c/a\u003e out for it\u0026rsquo;s maiden trip in a matter of weeks. \u003ca href=\"#table-of-furniture--decor\"\u003e↩\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"legos\"\u003eLegos\u003c/h4\u003e\n\u003cfigure class=\"float-right\"\u003e\u003cimg src=\"https://joemc.xyz/posts/images/office-2023/legos.jpeg\"\n\t\t\talt=\"A photograph of some of the legos on my bookshelves\"\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eI\u0026rsquo;m not a full blown LEGO collector, but I do have quite a few sets in my office. My younger self would be extremely disappointed that I have multiple sets still in the box waiting for me to build, but I\u0026rsquo;m quickly running out of space to display the finished sets.\u003c/p\u003e\n\u003cp\u003eI am particularly fond of the car sets, and have multiple Porsche 911 models in my office:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://amzn.to/3SvYDuP\"\u003eIcons 911\u003c/a\u003e (in the Turbo configuration)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://amzn.to/3tYzr62\"\u003eTechnic 911 RSR Race Car\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://amzn.to/46UZGJ6\"\u003eTechnic 911 GT3 RS\u003c/a\u003e (my absolute favorite LEGO of all time)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI also have a handful of small Star Wars sets, the full-size \u003ca href=\"https://amzn.to/3tXbw6Z\"\u003eR2-D2\u003c/a\u003e and \u003ca href=\"https://amzn.to/3QHopLg\"\u003eBB-8\u003c/a\u003e models, \u003ca href=\"https://amzn.to/40mcXbf\"\u003eGroot\u003c/a\u003e, and \u003ca href=\"https://amzn.to/47ga9yA\"\u003eWall-E\u003c/a\u003e on display. I will have to rearrange things for when the upcoming \u003ca href=\"https://amzn.to/49kgCud\"\u003eDune Royal Ornithopter\u003c/a\u003e set is released next year, because that\u0026rsquo;s definitely going on display. \u003ca href=\"#table-of-furniture--decor\"\u003e↩\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"in-closing\"\u003ein closing\u003c/h2\u003e\n\u003cp\u003eIt\u0026rsquo;s really fun to continue iterating on my office to make it a place that\u0026rsquo;s productive and inviting for me to do my best work. As I\u0026rsquo;ve been writing and compiling this post I\u0026rsquo;ve marveled at being able to work for four different companies from this same room. Equipment and furniture has changed, company-issued machines have come and gone, but I\u0026rsquo;ve been able to \u0026ldquo;commute\u0026rdquo; into the same room through it all. I\u0026rsquo;m thankful for companies that are open to remote employees so that people like me who thrive in their own environment can do great work.\u003c/p\u003e\n\u003cp\u003eIf I missed anything you\u0026rsquo;d like to read more about, I\u0026rsquo;d love to hear from you! The best way to contact me is \u003ca href=\"https://x.com/mclaughj\"\u003eon Twitter\u003c/a\u003e\u003csup id=\"fnref:5\"\u003e\u003ca href=\"#fn:5\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e5\u003c/a\u003e\u003c/sup\u003e, but you can probably find my email somewhere if you’d prefer to reach me that way.\u003c/p\u003e\n\u003cdiv class=\"footnotes\" role=\"doc-endnotes\"\u003e\n\u003chr\u003e\n\u003col\u003e\n\u003cli id=\"fn:1\"\u003e\n\u003cp\u003eI joined Apple remotely, before most teams transitioned back to in-office work. While the original plan was for me to relocate to be near an Apple office, when the time came it ended up being better for me and my family to not relocate, which led to me exploring employers that were open to remote work.\u0026#160;\u003ca href=\"#fnref:1\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:2\"\u003e\n\u003cp\u003eI’d like to write a little about my experience going through this acquisition and joining Yahoo, but for now here’s the \u003ca href=\"https://www.axios.com/2023/08/23/commonstock-yahoo-social-investing-platform\"\u003eannouncement post from Axios\u003c/a\u003e.\u0026#160;\u003ca href=\"#fnref:2\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:3\"\u003e\n\u003cp\u003eIn my free time, I run a little app development studio named \u003ca href=\"https://zero1software.com\"\u003eZero1 Software\u003c/a\u003e where I build an iOS music app called \u003ca href=\"https://apps.apple.com/us/app/albums-music-player/Id1508599405\"\u003eAlbums\u003c/a\u003e among other things.\u0026#160;\u003ca href=\"#fnref:3\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:4\"\u003e\n\u003cp\u003eThe LP-120 has been replaced by the newer LP-120x, which I\u0026rsquo;ve linked to instead.\u0026#160;\u003ca href=\"#fnref:4\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:5\"\u003e\n\u003cp\u003eI refuse to call it X.\u0026#160;\u003ca href=\"#fnref:5\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/div\u003e",
      "date_modified": "2023-11-04T00:00:00-06:00",
      "date_published": "2023-11-04T00:00:00-06:00",
      "id": "https://joemc.xyz/posts/office-2023/",
      "image": "https://joemc.xyz/posts/images/office-2023/desk.jpeg",
      "summary": "A deep dive into my home office with pictures \u0026 links.",
      "tags": [
        "post"
      ],
      "title": "My Home Office (2023)",
      "url": "https://joemc.xyz/posts/office-2023/"
    },
    {
      "content_html": "\u003cp\u003eas we approach the first birthday of our dog \u003ca href=\"https://www.instagram.com/dutch.a.doodle/\"\u003eDutch\u003c/a\u003e, i wanted to look back on our time with him as a puppy with fondness and appreciation for what he\u0026rsquo;s taught us and the many fun things we\u0026rsquo;ve done with him.\u003c/p\u003e\n\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/posts/images/dutch-pt2/beach.jpeg\"\n\t\t\talt=\"A photograph of my dog Dutch and I at Del Mar dog beach in southern California, looking out over the ocean with a mostly clear blue sky\"\u003e\u003cfigcaption\u003e\n\t\t\t\u003cp\u003eA photo of Dutch and I at Del Mar dog beach in southern California.\u003c/p\u003e\n\t\t\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cp\u003ein june of last year we decided to \u003ca href=\"https://joemc.xyz/posts/meet-dutch/\"\u003ebring a puppy home\u003c/a\u003e. we had been talking about getting a dog at some point, then one day i ran into an old friend at the gym who had some puppies available from their litter of goldendoodles. we really weren\u0026rsquo;t planning on getting a puppy right then, but we saw this cute little ball of fluff with his unique silver and black coat and we fell in love. after a lot of discussion over a couple days we decided to take the plunge into puppy fueled depression and sleep deprivation.\u003c/p\u003e\n\u003cp\u003ethe first days were predictably up and down. one minute he was amazingly cute and adorable, and the next we were at our wits end trying to meet his needs while also satisfying the other demands in our lives.\u003c/p\u003e\n\u003cp\u003edays turned into weeks, and weeks into months. at some point i forgot to set my 1am, 3am, and 5am alarms and i woke up at 6am panicked that he probably soiled his crate. after rushing to let him out, it was clear that he had slept through the night without an accident.\u003c/p\u003e\n\u003cp\u003eit\u0026rsquo;s easy to look back on our time with Dutch with a focus on the things we couldn\u0026rsquo;t do, but the reality is that there are many things we did with Dutch that we wouldn\u0026rsquo;t have done otherwise. days that we were tired, but we still went on a fun hike in the hills. afternoon trips to Dutch Bros to \u003ca href=\"https://hachyderm.io/@mclaughj/109916143297833544\"\u003eget him a pup cup\u003c/a\u003e. cold evenings this winter when we went outside to run around in the snow together. all of these little moments brought so much joy and silliness to our lives that we may not have had otherwise.\u003c/p\u003e\n\u003csection class=\"photo-row\"\u003e\n\t\u003cimg src=\"https://joemc.xyz/posts/images/dutch-pt2/dutch-1.jpeg\" alt=\"A photograph of my dog Dutch looking patiently at the camera\" /\u003e\n\t\u003cimg src=\"https://joemc.xyz/posts/images/dutch-pt2/dutch-2.jpeg\" alt=\"A photograph of my dog Dutch leaning to the side looking at some unknown object in the distance (probably a bird)\" /\u003e\n\t\u003cimg src=\"https://joemc.xyz/posts/images/dutch-pt2/dutch-3.jpeg\" alt=\"A selfie of my dog Dutch and I on a sunny, windy day with greenery in the background with his tongue hanging out of his mouth\" /\u003e\n\t\u003cimg src=\"https://joemc.xyz/posts/images/dutch-pt2/dutch-4.jpeg\" alt=\"A photograph of my dog Dutch face down in the snow with his paw partially covering his tennis ball and his snout covered in fresh snow\" /\u003e\n\u003c/section\u003e\n\u003cp\u003eit\u0026rsquo;s been a growing and a learning experience to raise a puppy (and we\u0026rsquo;re not out of the woods yet), but Dutch has been the best addition to our little family that we could have asked for and i\u0026rsquo;m grateful for him in our lives. here\u0026rsquo;s to many more wonderful and silly adventures with him hanging his tongue out the car window and wagging his tail emphatically.\u003c/p\u003e",
      "date_modified": "2023-03-21T00:00:00-06:00",
      "date_published": "2023-03-21T00:00:00-06:00",
      "id": "https://joemc.xyz/posts/dutch-pt2/",
      "image": "https://joemc.xyz/posts/images/dutch-pt2/beach.jpeg",
      "summary": "appreciation for what Dutch has taught us and the many fun things we’ve done with him as he turns a year old",
      "tags": [
        "post"
      ],
      "title": "Dutch (part two)",
      "url": "https://joemc.xyz/posts/dutch-pt2/"
    },
    {
      "content_html": "\u003cp\u003ei haven\u0026rsquo;t written about my new app \u003ca href=\"https://apple.co/3XmlZlf\"\u003eAlbums\u003c/a\u003e on this site, which is a little bit intentional and a little bit of an oversight. let me explain.\u003c/p\u003e\n\u003cp\u003ei don\u0026rsquo;t know who reads this blog. intentionally. i have no analytics, no email subscription list, nothing. if i had to guess, the number of people that read any given article is more than five and less than one hundred. i\u0026rsquo;m not sure if that\u0026rsquo;s me being dismissive of my own reach or trying to be somewhat realistic about the deluge of content we wade through every day.\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e\u003c/p\u003e\n\u003cp\u003eso back to not writing about my new app here. it\u0026rsquo;s a bit of an oversight because this is my \u0026ldquo;official\u0026rdquo; website. it\u0026rsquo;s the one that bears my name and the one that has some reasonably important announcements on it. it should probably contain at least some reference to my first indie iOS app in over a decade. as for it being intentional, i don\u0026rsquo;t consider the app to be \u0026ldquo;finished\u0026rdquo; yet. it\u0026rsquo;s still missing functionality that i desperately wanted to put into the first release, but somehow convinced my perfectionistic ADHD brain to push below the line. i stubbornly didn\u0026rsquo;t want to announce the app in a long-form post until it was \u0026ldquo;ready\u0026rdquo;.\u003c/p\u003e\n\u003cp\u003ebut that\u0026rsquo;s kinda silly since as we\u0026rsquo;ve established: i\u0026rsquo;m not sure if any significant number of people read this blog and even if they do, is an app ever truly finished? i may be waiting a long time.\u003c/p\u003e\n\u003cp\u003eso without further delay: i shipped version 1.0 (and 1.1) of my first indie app in over 12 years. it\u0026rsquo;s called \u003ca href=\"https://apple.co/3XmlZlf\"\u003eAlbums\u003c/a\u003e, and it\u0026rsquo;s one of the things i\u0026rsquo;m most proud of building.\u003c/p\u003e\n\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/posts/images/albums/albums-screenshots.png\"\n\t\t\talt=\"Some screenshots from my new app \u0026lsquo;Albums\u0026rsquo; displaying a portion of my music library.\"\u003e\u003cfigcaption\u003e\n\t\t\t\u003cp\u003eSome screenshots from my new app \u0026lsquo;Albums\u0026rsquo; displaying a portion of my music library.\u003c/p\u003e\n\t\t\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003ch2 id=\"the-origin-story\"\u003ethe origin story\u003c/h2\u003e\n\u003cp\u003eforgive me, i see myself as a bit of a story teller. let me share how this all began.\u003c/p\u003e\n\u003cp\u003ei love music. i grew up taking piano lessons, then took up the violin, and layered on a bit of trumpet for good measure. but the violin is where i spent the most time and energy growing up. as a kid, my parents convinced me to audition for the Pikes Peak Youth Symphony after taking violin lessons for a short time. my audition was a success and i made it in to the all-strings group named \u0026ldquo;Amadeus\u0026rdquo;. that year with a bit of luck and a lot of hard work, i was given the role of first chair in the first violin section – the \u0026ldquo;concert master\u0026rdquo;.\u003c/p\u003e\n\u003cp\u003ei really enjoyed that year with the youth symphony and as i listened to and performed music, it became an integral part of me. when i listened to music it was always more than the sum of it\u0026rsquo;s parts – it was a beautiful, complex, and wonderful construction that was powerful and moving.\u003c/p\u003e\n\u003cp\u003efast forward a few years and we entered the MP3 player wars. Walkman, Creative, Zune, and of course the iPod. i had several iPods over the years, and as the storage in them grew, so did my music collection. my iPod was always stuffed to capacity with music. having grown up playing mostly classical music, i was used to musical works being long dramatic stories, with different movements and moods throughout the piece. that led me to really appreciate the craft that some artists put into the composition of their albums. i\u0026rsquo;ll never forget listening to Linkin Park\u0026rsquo;s Meteora album for the first time, where each track seamlessly transitioned into the next to tell one complete story.\u003c/p\u003e\n\u003cp\u003emy love for albums never really waned, and although i\u0026rsquo;ll definitely listen to a catchy single or the occasional playlist, most of my music listening is done \u0026ldquo;the old fashioned way\u0026rdquo;. despite the \u0026ldquo;iTunes top charts\u0026rdquo; and the new ability to purchase singles from an album, i still preferred listening to complete albums in tracklist order.\u003c/p\u003e\n\u003cp\u003eso let\u0026rsquo;s skip forward again, to Rdio, Spotify, and Apple Music. fundamentally, nothing had changed – you could still go and add an album to your collection and listen to the whole thing through. but subtly, little by little, the priorities of the apps themselves were geared more toward discovery and synthetic groupings. trending songs, playlists by mood, and of course the two words that signal an algorithm: \u0026ldquo;for you\u0026rdquo;.\u003c/p\u003e\n\u003cp\u003eat some point, enough was enough. Apple\u0026rsquo;s Music app shed any pretense of caring about my music collection, and instead focused on upselling all of the different content the platform had to offer. yes, you could still dig in and find your carefully curated collection, but even that functionality started to decay as it was deprioritized. you could no longer edit metadata, the ability to sort your collection differently was taken away, even the density of albums on a single screen was diminished.\u003csup id=\"fnref:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e\u003c/p\u003e\n\u003cp\u003eso after putting up with yet another iOS release in 2019 that caused the Music app to drift further away from how i wanted it to work, i decided to do something about it. over the holiday break in 2019 i dove into the music apis that were provided on iOS and had the core premise of the app working. i finally had an app that opened up to my collection of music, just like my iPod did originally.\u003c/p\u003e\n\u003cp\u003ei continued to tinker and build out the app, and was using it every day to listen to my collection. i thought it would be fun to release it and started putting in some customization options so people could use the app in a way that made sense to them.\u003c/p\u003e\n\u003cp\u003ethen… march, 2020 happened.\u003c/p\u003e\n\u003ch2 id=\"dont-call-it-a-comeback\"\u003edon\u0026rsquo;t call it a comeback\u003c/h2\u003e\n\u003cp\u003esummer of last year i was leaving my position at Apple and was feeling motivated to \u003ca href=\"https://joemc.xyz/posts/real-artists-ship/\"\u003ework on Albums again\u003c/a\u003e. although it had been almost three years since i had started working on the app – and several other iOS music apps had been released in the interim – i still felt like it was a good concept that wasn\u0026rsquo;t represented in any of the other offerings.\u003c/p\u003e\n\u003cp\u003eover the years i had continued to use and refine the core concept despite it not being anywhere near finished. but over the last several months i\u0026rsquo;ve put countless hours into design and development of the app to take it from a \u0026ldquo;working concept\u0026rdquo; to version 1.1. like i said at the outset, it\u0026rsquo;s one of the things i\u0026rsquo;m most proud of shipping in my career.\u003c/p\u003e\n\u003cp\u003eyou can read more about some of the current features (and upcoming roadmap) on \u003ca href=\"https://zero1software.com/albums/\"\u003ethe app\u0026rsquo;s product page\u003c/a\u003e\u003csup id=\"fnref:3\"\u003e\u003ca href=\"#fn:3\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e3\u003c/a\u003e\u003c/sup\u003e, but i also want to dive into a few things here and then share a bit of my underlying decision making process for the app.\u003c/p\u003e\n\u003ch2 id=\"what-gives-me-the-right\"\u003ewhat gives me the right?\u003c/h2\u003e\n\u003cp\u003ein Christopher Nolan\u0026rsquo;s \u0026lsquo;The Dark Knight\u0026rsquo;, there\u0026rsquo;s an iconic exchange at the beginning of the movie where some Batman copycat vigilantes are bailed out by [the real] Batman. They ask him:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eWhat gives you the right? What\u0026rsquo;s the difference between you and me?!\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eto which Batman responds:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;I\u0026rsquo;m not wearing hockey pads.\u0026rdquo;\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003ei always got a kick out of this exchange, and i think it gives me an opportunity to explain why i believe Albums is different than Apple Music and what my vision for the app is and how i will grow the app over time without allowing it to repeat the issues of Apple\u0026rsquo;s Music app (et al).\u003c/p\u003e\n\u003cp\u003eso here\u0026rsquo;s the difference between Albums and Apple\u0026rsquo;s Music app or Spotfiy – my guiding principles so to speak.\u003c/p\u003e\n\u003ch3 id=\"i-care-about-music\"\u003ei care about music\u003c/h3\u003e\n\u003cp\u003ethis may seem obvious, and i\u0026rsquo;m not dismissing other apps as coming from people who don\u0026rsquo;t care about music, but year after year it seems like the big music distribution platforms care more about their profits than the music. music is art, and it deserves to be enjoyed how the artists intended and the listener desires. that will always be top of mind for me with Albums.\u003c/p\u003e\n\u003ch3 id=\"i-care-about-albums-theyre-a-first-class-citizen\"\u003ei care about albums, they\u0026rsquo;re a first-class citizen\u003c/h3\u003e\n\u003cp\u003ei \u003cem\u003erarely\u003c/em\u003e listen to playlists, and often if i\u0026rsquo;m listening to a single, it\u0026rsquo;s because i\u0026rsquo;m mixing it into my listening of the rest of the artist\u0026rsquo;s works. the big apps lean towards discovery through playlists, curated discovery mechanisms, and top charts (singles). those all have a place, but Albums will be focused on albums as the main grouping of music.\u003c/p\u003e\n\u003ch3 id=\"simple-yet-powerful\"\u003esimple, yet powerful\u003c/h3\u003e\n\u003cp\u003ei believe the best apps are easy to use for the core job[s] of the app, but provide additional functionality at arms reach if you need it. i think apps should require minimal set up and close to no training to dive in and do what you want it to do, but as you start to poke around and experiment you\u0026rsquo;ll find powerful features beneath the surface. as i add functionality to Albums i will strive to strike this balance.\u003c/p\u003e\n\u003ch3 id=\"customizable-but-opinionated\"\u003ecustomizable, but opinionated\u003c/h3\u003e\n\u003cp\u003esimilarly, i believe the best apps allow customization, but take a stance on core tenets. it\u0026rsquo;d be foolish of me to say that my way of organizing or reasoning about my music collection is the only \u0026ldquo;right\u0026rdquo; way to do it. however, i think it\u0026rsquo;s very easy to find yourself on the other end of the spectrum with a setting for every possible thing in the app. i plan to maintain and build Albums as an opinionated piece of software, but allow ample customization where possible.\u003c/p\u003e\n\u003ch3 id=\"meticulously-crafted\"\u003emeticulously crafted\u003c/h3\u003e\n\u003cp\u003esome of the best apps i\u0026rsquo;ve ever used are mostly custom, but they don\u0026rsquo;t seem that way. the best apps feel like they \u0026ldquo;belong\u0026rdquo; on the platform in every way, but also sweat all the details and care about the entire experience which leads to custom implementations of things to really nail it. much of Albums is the same way – it should seem entirely native and unoriginal, but almost every single piece of the interface is carefully thought through and implemented.\u003c/p\u003e\n\u003cp\u003ei\u0026rsquo;m planning on diving into some of these things in future blog posts, but i\u0026rsquo;ll share one here. would you believe me if i told you the volume bar – although it looks similar to volume bars you\u0026rsquo;ve seen in other apps, including Apple Music – is entirely custom? it took hours of work to get it to look, feel, and act like \u0026ldquo;any other volume scrubber\u0026rdquo;. there isn\u0026rsquo;t some drag and drop element for it, and to really nail all the little interactions\u003csup id=\"fnref:4\"\u003e\u003ca href=\"#fn:4\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e4\u003c/a\u003e\u003c/sup\u003e takes an inordinate amount of work and attention to detail.\u003c/p\u003e\n\u003ch3 id=\"your-library-comes-first-music-discovery-comes-second\"\u003eyour library comes first, music discovery comes second\u003c/h3\u003e\n\u003cp\u003ethis is one of the hardest differentiators to convey well. i want Albums to be a full-featured music player on iOS, but i\u0026rsquo;m not necessarily going to add functionality just because it can be done. put another way: i\u0026rsquo;m planning on adding the ability to search for new albums from Apple Music, but it shouldn\u0026rsquo;t take priority over the core focus on your existing music library.\u003c/p\u003e\n\u003ch3 id=\"api-limitations\"\u003eapi limitations\u003c/h3\u003e\n\u003cp\u003eApple doesn\u0026rsquo;t give full access to their api to third-party developers. Albums will need to work within those constraints and sometimes functionality will be limited due to those restrictions. however, i\u0026rsquo;m choosing to see this as a strength: Albums can\u0026rsquo;t exist entirely on it\u0026rsquo;s own, some functionality will need to be outsourced to the Music app. because this outsourcing is necessary, it allows me to be picky about the functionality that goes into the app. i don\u0026rsquo;t want to bolt on a feature just because it technically can be done, i want to stay true to the focus of the app.\u003c/p\u003e\n\u003ch2 id=\"in-closing\"\u003ein closing\u003c/h2\u003e\n\u003cp\u003ei hope this gives a bit more insight into why music is so important to me, why i\u0026rsquo;m building Albums, and what my guiding principles are for the app going forward.\u003c/p\u003e\n\u003cp\u003eif any of this resonates with you, i\u0026rsquo;d love if you\u0026rsquo;d \u003ca href=\"https://apple.co/3XmlZlf\"\u003echeck  out Albums\u003c/a\u003e on the App Store. it\u0026rsquo;s available for $4.99\u003csup id=\"fnref:5\"\u003e\u003ca href=\"#fn:5\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e5\u003c/a\u003e\u003c/sup\u003e which i believe is fair for an app of it\u0026rsquo;s caliber and feature set. i\u0026rsquo;ve been building apps for Apple platforms in one form or another since 2008 when Apple first announced the App Store, and i\u0026rsquo;ve been using every bit of that know-how to build the best app i can for the love of music.\u003c/p\u003e\n\u003cp\u003ethanks for reading! i\u0026rsquo;m on \u003ca href=\"https://hachyderm.io/@mclaughj\"\u003eMastodon\u003c/a\u003e, \u003ca href=\"https://instagram.com/mclaughj\"\u003eInstagram\u003c/a\u003e, and \u003ca href=\"https://twitter.com/mclaughj\"\u003eTwitter\u003c/a\u003e\u003csup id=\"fnref:6\"\u003e\u003ca href=\"#fn:6\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e6\u003c/a\u003e\u003c/sup\u003e if you want to follow me or say hi.\u003c/p\u003e\n\u003cdiv class=\"footnotes\" role=\"doc-endnotes\"\u003e\n\u003chr\u003e\n\u003col\u003e\n\u003cli id=\"fn:1\"\u003e\n\u003cp\u003ewhich is only getting worse with the rise of \u003cdel\u003eAIs\u003c/del\u003e LLMs vomiting prose all over the internet, but i digress.\u0026#160;\u003ca href=\"#fnref:1\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:2\"\u003e\n\u003cp\u003esince the moment in time i\u0026rsquo;m describing, particularly this year (2023), \u003cem\u003esome\u003c/em\u003e of these changes have been addressed in the Music app, but it\u0026rsquo;s still fallen quite a bit.\u0026#160;\u003ca href=\"#fnref:2\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:3\"\u003e\n\u003cp\u003ethe product page really needs some cleanup\u0026hellip; it reads like a blog post of it\u0026rsquo;s own, and i need to do a better job of highlighting what the app does, but that\u0026rsquo;s a job for another day.\u0026#160;\u003ca href=\"#fnref:3\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:4\"\u003e\n\u003cp\u003enot only interacting with the volume scrubber directly, but interacting with the device volume in other ways like the hardware buttons or control center.\u0026#160;\u003ca href=\"#fnref:4\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:5\"\u003e\n\u003cp\u003eor equivalent in your local currency as determined by Apple\u0026rsquo;s mappings.\u0026#160;\u003ca href=\"#fnref:5\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:6\"\u003e\n\u003cp\u003ealthough i\u0026rsquo;ve been on Twitter less and less over the last few months.\u0026#160;\u003ca href=\"#fnref:6\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/div\u003e",
      "date_modified": "2023-03-16T00:00:00-06:00",
      "date_published": "2023-03-16T00:00:00-06:00",
      "id": "https://joemc.xyz/posts/albums/",
      "image": "https://joemc.xyz/posts/images/albums/albums-screenshots.png",
      "summary": "a post about why music is so important to me, why i'm building Albums, and what my guiding principles are for the app going forward.",
      "tags": [
        "post"
      ],
      "title": "Albums",
      "url": "https://joemc.xyz/posts/albums/"
    },
    {
      "content_html": "\u003cp\u003eI haven\u0026rsquo;t generally agreed with Louie Mantia.\u003c/p\u003e\n\u003cp\u003eI\u0026rsquo;ve never met him in person, and I honestly don\u0026rsquo;t even know if we\u0026rsquo;ve interacted on the internet. He always seemed just a little bit too opinionated. A little too closed off to hearing from people who disagreed with him. But you know what, I\u0026rsquo;m coming around to the idea that maybe he\u0026rsquo;s the one who has it figured out.\u003c/p\u003e\n\u003cp\u003eLet me back up\u0026hellip; in the wake of the whole \u0026ldquo;Twitter thing\u0026rdquo;, a lot of people (myself included) have found ourselves asking if we should continue participating on Twitter. Some are doing so to take a moral stand. Others are wondering if Twitter is the kind of place that brings out the best in us, or even simply whether it\u0026rsquo;s good for our mental health. I\u0026rsquo;m increasingly feeling like it\u0026rsquo;s not.\u003c/p\u003e\n\u003cp\u003eSo that brings me to what Louie wrote in the first post on his new blog back in November:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eAnd in 2004, I finally made my own website with my own domain name. That felt like a big step up. Now I had my own space that I controlled. I could do whatever I wanted here. [\u0026hellip;]\u003c/p\u003e\n\u003cp\u003eI got to be my \u003cstrong\u003eauthentic self.\u003c/strong\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eThat really resonates with me. I don\u0026rsquo;t want to stress about posting something because I\u0026rsquo;m worried about who\u0026rsquo;s going to misconstrue a point that I hastily made (or condensed because of a character limit). I\u0026rsquo;m not interested in chasing the little dopamine hits when a few people tap the like button. I just want to be me.\u003c/p\u003e\n\u003cp\u003eAgain, Louie:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eIt didn’t used to be like this. The web used to be a collection of independently-operated sites that we all individually controlled.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eSo for real this time\u0026hellip; 2023 is the year of going back to the open web. This site is unapologetically me.\u003c/p\u003e\u003cp\u003e\u003ca href=\"http://lmnt.me/post/teenage_web.html\"\u003e→ lmnt.me\u003c/a\u003e\u003c/p\u003e",
      "date_modified": "2023-01-21T00:00:00-07:00",
      "date_published": "2023-01-21T00:00:00-07:00",
      "external_url": "http://lmnt.me/post/teenage_web.html",
      "id": "https://joemc.xyz/links/2023/01/teenage-web/",
      "tags": [
        "link"
      ],
      "title": "Louie Mantia has the right idea about the web",
      "url": "https://joemc.xyz/links/2023/01/teenage-web/"
    },
    {
      "content_html": "\u003cp\u003eI\u0026rsquo;ve been through this \u0026ldquo;new year\u0026rdquo; thing a few times. Not as many as some, but more than others. The last few years I\u0026rsquo;ve gravitated toward \u0026ldquo;themes\u0026rdquo; instead of listing a bunch of unrelated goals/wishes. That way when I list out any specific goals, it becomes more about listing actionable steps to support a singular goal instead of a bunch of things I need to keep in my head throughout the year.\u003c/p\u003e\n\u003cp\u003eMy theme this year is \u0026ldquo;Consistently Show Up\u0026rdquo;.\u003c/p\u003e\n\u003cp\u003eConsistently showing up in all areas of my life that matter. Family. Hobbies. Work. Friendships.\u003c/p\u003e\n\u003cp\u003eLooking back on the last\u0026hellip; \u003cem\u003e\u0026lt;checks notes\u0026gt;\u003c/em\u003e\u0026hellip; \u003cem\u003e\u003cstrong\u003ethree\u003c/strong\u003e\u003c/em\u003e years, I think it\u0026rsquo;s safe to say most of us have experienced some level of burnout given everything that\u0026rsquo;s gone on. My hope this year is that instead of trying to go 110% and then revving down to 40-50% to recharge, I can maintain a consistent rate of 80% or so. Similar to a long distance runner, I\u0026rsquo;m pacing myself for the marathon distance, not a bunch of sprints.\u003c/p\u003e\n\u003cp\u003eSomething I\u0026rsquo;m experimenting with this year is that if a goal doesn\u0026rsquo;t have a defined cadence to it (it\u0026rsquo;s not something that I want to do daily, weekly, or monthly), the number I\u0026rsquo;m aiming for is 23. For example: go snowboarding 23 times, read 23 books, and write 23 posts this year. Depending on how that goes, I\u0026rsquo;ll stick with it and aim for 24 next year. Catch me in 2050 to see if I\u0026rsquo;m reading 50 books.\u003c/p\u003e\n\u003cp\u003eIf you\u0026rsquo;re interested in following along with my 2023 journey, I\u0026rsquo;ll be posting updates here, on \u003ca href=\"https://mastodon.social/@mclaughj\"\u003eMastodon\u003c/a\u003e, \u003ca href=\"https://www.instagram.com/mclaughj\"\u003eInstagram\u003c/a\u003e, and there\u0026rsquo;s a rollup of my activities on \u003ca href=\"https://joemc.xyz/\"\u003ejoemc.xyz\u003c/a\u003e. Please say \u0026ldquo;hi\u0026rdquo;, I\u0026rsquo;d love to check out what you\u0026rsquo;re up to as well!\u003c/p\u003e\n",
      "date_modified": "2023-01-02T00:00:00-07:00",
      "date_published": "2023-01-02T00:00:00-07:00",
      "id": "https://joemc.xyz/posts/my-2023-theme/",
      "tags": [
        "post"
      ],
      "title": "My 2023 Theme",
      "url": "https://joemc.xyz/posts/my-2023-theme/"
    },
    {
      "content_html": "\u003cp\u003eWhat an outstanding piece of writing. I felt like I was riding alongside \u003ca href=\"https://twitter.com/joshm\"\u003e@joshm\u003c/a\u003e in the back seat of the Chevy Tahoe as I was reading it.\u003c/p\u003e\n\u003cp\u003eSo many of the points and asides resonate with me. It’s as if Josh plucked the thoughts and feelings right out of my head and wrote about them for the world to read. I won\u0026rsquo;t begin quoting them because I will never be able to stop. The entire thing is wonderful and well worth the time.\u003c/p\u003e\n\u003cp\u003eEven though we start out trying to avoid “5 top line phrases with bullet points underneath”, we end up with some pretty great top line phrases (and some wonderful bullet points underneath):\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eShow up with heartfelt intensity\u003c/li\u003e\n\u003cli\u003eStart with ‘what could be?’\u003c/li\u003e\n\u003cli\u003eAssume you don’t know\u003c/li\u003e\n\u003cli\u003eYou’re on the hook for the team\u003c/li\u003e\n\u003cli\u003eMake them feel something\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eThese values (and the stories behind them) are powerful and inspiring. I hope to embody them in my own work at \u003ca href=\"https://commonstock.com/\"\u003ean early-stage startup\u003c/a\u003e and carry them with me into future endeavors throughout my life.\u003c/p\u003e\n\u003cp\u003eThank you Josh for writing them down and for taking us along with you on some of your road trips.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://thebrowser.company/values/\"\u003e→ thebrowser.company\u003c/a\u003e\u003c/p\u003e",
      "date_modified": "2022-10-16T00:00:00-06:00",
      "date_published": "2022-10-16T00:00:00-06:00",
      "external_url": "https://thebrowser.company/values/",
      "id": "https://joemc.xyz/links/2022/10/roadtrips/",
      "tags": [
        "link"
      ],
      "title": "Notes on 'Notes on Roadtrips'",
      "url": "https://joemc.xyz/links/2022/10/roadtrips/"
    },
    {
      "content_html": "\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/links/images/apple-watch-ultra.jpg\"\n\t\t\talt=\"Apple Watch Ultra (2022) on a would-be wrist model.\"\u003e\u003cfigcaption\u003e\n\t\t\t\u003cp\u003eApple Watch Ultra (2022) on a would-be wrist model.\u003c/p\u003e\n\t\t\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eI got the Apple Watch Ultra and if I could sum up my first impressions in one word, it’d be: awesome.\u003c/p\u003e\n\u003cp\u003eThe larger and brighter screen, the titanium case, the nice knobby crown, the new alpine band, the increased battery life, the dual-band GPS… I could go on and on. I was already in love with the potential of the Apple Watch platform as battery tech gets better, and this Watch furthers that love. I am enjoying every day with this iteration, and I’m extremely excited for what future iterations bring!\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.instagram.com/p/Ci_YnHhM0Hx/\"\u003e→ instagram.com\u003c/a\u003e\u003c/p\u003e",
      "date_modified": "2022-09-26T00:00:00-06:00",
      "date_published": "2022-09-26T00:00:00-06:00",
      "external_url": "https://www.instagram.com/p/Ci_YnHhM0Hx/",
      "id": "https://joemc.xyz/links/2022/09/apple-watch-ultra/",
      "tags": [
        "link"
      ],
      "title": "Apple Watch Ultra First Impressions",
      "url": "https://joemc.xyz/links/2022/09/apple-watch-ultra/"
    },
    {
      "content_html": "\u003cp\u003eEveryone\u0026rsquo;s talking about the battery percentage indicator on the iOS 16 beta, but that\u0026rsquo;s only because you haven\u0026rsquo;t turned on the keyboard haptics. (Under Sounds \u0026amp; Haptics, not Keyboard)\u003c/p\u003e\n\u003cp\u003eYes Android users, I\u0026rsquo;m aware you’ve had that for years, no need to @ me.\u003c/p\u003e\n",
      "date_modified": "2022-08-15T11:27:00-06:00",
      "date_published": "2022-08-15T11:27:00-06:00",
      "id": "https://joemc.xyz/notes/2022/08/15/1127/",
      "tags": [
        "note"
      ],
      "title": "iOS 16 keyboard haptics",
      "url": "https://joemc.xyz/notes/2022/08/15/1127/"
    },
    {
      "content_html": "\u003cp\u003eCan we all admit that without YouTubers pointing out the “defects” in Tesla’s manufacturing, most of the issues would go unnoticed. None of us ever checked panel gaps or paint depth on our Fords, Hondas, or Toyotas.\u003c/p\u003e\n\u003cp\u003eDisclaimer: I own shares of \u003ca href=\"https://commonstock.com/asset/TSLA:equity\"\u003e$TSLA\u003c/a\u003e \u0026amp; \u003ca href=\"(https://commonstock.com/asset/F:equity)\"\u003e$F\u003c/a\u003e \u003ca href=\"https://commonstock.com/jmc\"\u003ecommonstock.com/jmc\u003c/a\u003e\u003c/p\u003e\n",
      "date_modified": "2022-08-11T10:05:00-06:00",
      "date_published": "2022-08-11T10:05:00-06:00",
      "id": "https://joemc.xyz/notes/2022/08/11/1005/",
      "tags": [
        "note"
      ],
      "title": "Tesla manufacturing quality",
      "url": "https://joemc.xyz/notes/2022/08/11/1005/"
    },
    {
      "content_html": "\u003cp\u003eMalcom Gladwell recently slammed advocates of working from home on the \u003cem\u003eDiary of a CEO\u003c/em\u003e podcast. Among his quotable lines were this one about pajamas:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e“I know it’s a hassle to come into the office, but if you’re just sitting in your pajamas in your bedroom, is that the work life you want to live?”\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eAnd this great one about belonging to something:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e“If we don’t feel like we’re part of something important, what’s the point? If it’s just a paycheck, then it’s like what have you reduced your life to?”\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eThese questions are not only intellectually dishonest, but intentionally reductive.\u003c/p\u003e\n\u003cp\u003eForgive the sarcasm, but I have to ask: did you know that you can get dressed for the day when working from home?\u003c/p\u003e\n\u003cp\u003eSeriously, it’s true. You not only \u003cem\u003ecan\u003c/em\u003e shower and get dressed without going into an office, most of us did and still do despite having the option not to. And on the days (or weeks) that we don’t, I’m sure we had a good reason to be working in our pajamas or from the bedroom. You know, like the depression and anxiety that comes from a global pandemic affecting life and loved ones.\u003c/p\u003e\n\u003cp\u003eAnd taking this one step further, what if someone decides they do their best work in sweats? Maybe that \u003cem\u003eis\u003c/em\u003e the work life they want to live, and there’s nothing wrong with it.\u003c/p\u003e\n\u003cp\u003eAnd to the point of “belonging” or “feeling part of something important”: I’ve worked remotely for the last seven plus years for three different companies. I’ve been part of important teams and projects for all three, and have contributed at a high level to the success of the companies.\u003c/p\u003e\n\u003cp\u003eBut aside from the fact you \u003cem\u003ecan\u003c/em\u003e feel that purpose and belonging while working remotely, is it such a bad thing to want your work life to be a means to earning a paycheck? Is it so terrible to derive your self-worth and your happiness from things outside of work? I haven’t “reduced my life to [a paycheck]”, I’ve chosen to maximize my life by minimizing the sacrifices my paycheck demands of me, namely in limiting my commute and maximizing my productivity by controlling my work environment.\u003c/p\u003e\n\u003cp\u003eSo Mr. Gladwell – is it really about pajamas?\u003c/p\u003e\u003cp\u003e\u003ca href=\"https://youtu.be/mgEs61k2mxY?t=4659\"\u003e→ youtu.be\u003c/a\u003e\u003c/p\u003e",
      "date_modified": "2022-08-08T00:00:00-06:00",
      "date_published": "2022-08-08T00:00:00-06:00",
      "external_url": "https://youtu.be/mgEs61k2mxY?t=4659",
      "id": "https://joemc.xyz/links/2022/08/about-pajamas/",
      "tags": [
        "link"
      ],
      "title": "Is it really about pajamas?",
      "url": "https://joemc.xyz/links/2022/08/about-pajamas/"
    },
    {
      "content_html": "\u003cp\u003eYears ago, my friend \u003ca href=\"https://twitter.com/davedelong\"\u003eDave\u003c/a\u003e introduced me to a different way to rate movies: a seven-point scale using whole numbers only (no half stars). He goes into detail breaking down exactly why he advocates for it on his blog.\u003c/p\u003e\n\u003cp\u003eI recently updated \u003ca href=\"https://joemc.xyz/watching/\"\u003emy personal site\u003c/a\u003e to use the seven-point scale for my movie ratings, and part of the challenge was mapping Letterboxd ratings to a representative number on the seven point scale. So I briefly wanted to note down how I reasoned about the mapping and what I settled on.\u003c/p\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003e5-star\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e7-star\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eReason\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e0.5-1\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e1\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ePoint for trying I guess?\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e1.5\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e2\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eNot great\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e2-2.5\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e3\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eA below average movie\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e3-3.5\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e4\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAverage\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e4\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e5\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAn above average movie\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e4.5\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e6\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eA great movie\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e5\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e7\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eA perfect movie\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eI have found that I\u0026rsquo;m a little on the generous side when it comes to rating movies on a 5-star scale, so I wanted to lower the curve and have a bit more variation at the top of the scale. While 4/5 doesn\u0026rsquo;t say the same thing about a movie as 5/7, it feels right.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://davedelong.com/blog/2017/11/09/my-rating-system/\"\u003e→ davedelong.com\u003c/a\u003e\u003c/p\u003e",
      "date_modified": "2022-07-30T00:00:00-06:00",
      "date_published": "2022-07-30T00:00:00-06:00",
      "external_url": "https://davedelong.com/blog/2017/11/09/my-rating-system/",
      "id": "https://joemc.xyz/links/2022/07/movie-ratings/",
      "tags": [
        "link"
      ],
      "title": "Rating movies on a seven-point scale",
      "url": "https://joemc.xyz/links/2022/07/movie-ratings/"
    },
    {
      "content_html": "\u003cp\u003eI\u0026rsquo;ve been drawing a lot of inspiration from Steve Jobs recently. One quote that\u0026rsquo;s been bouncing around my head quite a bit is this one from 1983:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e“It’s better to be a pirate than to join the navy.”\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eI\u0026rsquo;m sure there were many meanings tucked away inside that simple phrase, but \u003ca href=\"https://www.folklore.org/StoryView.py?story=Pirate_Flag.txt\"\u003ethe story\u003c/a\u003e I\u0026rsquo;ve seen attributed to Andy Hertzfeld (who was at Apple in 1983) centers around resisting the bureaucratic nonsense that was increasing in the Mac group at Apple as they were growing. Don\u0026rsquo;t give up your scrappy, win-at-all-costs, counter-culture identity just to conform to \u0026ldquo;the system\u0026rdquo;.\u003c/p\u003e\n\u003cp\u003eThat message resonates with me.\u003c/p\u003e\n\u003cp\u003eI\u0026rsquo;ve always been a little resistant to bureaucracy or extra process. I\u0026rsquo;m much happier when I\u0026rsquo;m able to focus on getting the job done without the need to check extra boxes or jump through hoops. To build on the Navy metaphor, there\u0026rsquo;s a time and a place for that sort of process and chain of command. How is an aircraft carrier going to operate safely, smoothly, and efficiently if no one is handing down orders? Without some process and structure, there\u0026rsquo;s no guarantee all of the stations will be manned or all the jobs will be done.\u003c/p\u003e\n\u003cp\u003eBut if you\u0026rsquo;d rather have more control over everything that goes in to manning the boat, it may be better to be on a smaller more scrappy boat, or as Steve Jobs put it: \u0026ldquo;be a pirate\u0026rdquo;.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"time-to-be-a-pirate\"\u003eTime to be a Pirate\u003c/h2\u003e\n\u003cp\u003eWhen I wrote \u003ca href=\"https://joemc.xyz/posts/farewell-and-hello/\"\u003eabout joining Apple\u003c/a\u003e at the end of last year, I had no idea I\u0026rsquo;d be writing this followup post so soon, but I\u0026rsquo;ve made the difficult decision that it\u0026rsquo;s time for me to leave Apple and be a pirate again.\u003c/p\u003e\n\u003cp\u003eI\u0026rsquo;m not leaving Apple for any one specific reason, but I do want to touch on a few things that led to my decision.\u003c/p\u003e\n\u003ch3 id=\"remote-work\"\u003eRemote Work\u003c/h3\u003e\n\u003cp\u003eI\u0026rsquo;ve worked on distributed teams for over six years, and while I was originally planning on relocating to Austin, Texas to join part of my team later this year, half of my immediate team would have been distributed at other Apple campuses around the world. I was looking forward to continuing to embrace distributed work while being colocated with some of my team in Texas.\u003c/p\u003e\n\u003cp\u003eHowever, over the last eight months, many things have changed that caused us to reconsider whether moving was the right decision. I won\u0026rsquo;t go into all the details, but by the end of our deliberations, we felt very strongly that it was no longer a good move for our family.\u003c/p\u003e\n\u003cp\u003eI discussed the situation with my manager and although he was sympathetic to my circumstances, Apple has taken a stance against new remote work exceptions for anything other than approved medical exemptions. Since my reasons were not medical, it was decided that I would not be able to continue in my role without relocating.\u003c/p\u003e\n\u003ch3 id=\"the-pirate-life\"\u003eThe Pirate Life\u003c/h3\u003e\n\u003cp\u003eApple works at a scale that few companies on this planet ever have, and being a part of that massive operation is a huge learning opportunity, but there are also trade-offs. In many ways, Apple is the Navy now: tons of process, a massive number of people involved in most projects, high communication overhead, and much more.\u003c/p\u003e\n\u003cp\u003eWhen the decision was looming and it started to look like we\u0026rsquo;d decided against relocating, the potential of returning to the pirate life was invigorating to me. I thrive in work environments where I have a high level of ownership and trust and have the freedom and flexibility to mix work and life instead of being at a desk from 9-5.\u003c/p\u003e\n\u003cp\u003eAs I started to explore new teams and opportunities with those things in mind, I found several that were chasing the same goals and working on some pretty interesting challenges. The pirate life was calling.\u003c/p\u003e\n\u003ch3 id=\"personal-projects\"\u003ePersonal Projects\u003c/h3\u003e\n\u003cp\u003eApple famously doesn\u0026rsquo;t allow people to work on side projects. In practice there are many employees that take a \u0026ldquo;better to ask for forgiveness than permission\u0026rdquo; approach, keeping any side projects (including blogging) to themselves. I knew the rules when I joined, but as the months went on I kept wanting to \u003ca href=\"https://joemc.xyz/posts/real-artists-ship/\"\u003edive back into projects\u003c/a\u003e and work on fun things outside of my day job.\u003c/p\u003e\n\u003cp\u003eWhile this wasn\u0026rsquo;t a major reason for my departure, it was something that added to the pros list of leaving Apple.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"setting-sail\"\u003eSetting Sail\u003c/h2\u003e\n\u003cp\u003eI\u0026rsquo;ll be sharing more about what\u0026rsquo;s next for me soon; I\u0026rsquo;m excited to be joining a great team at an early-stage startup working on some fun challenges.\u003c/p\u003e\n\u003cp\u003eIn closing, here\u0026rsquo;s a tweet I sent last month that sums up how I\u0026rsquo;ve been feeling over the last few months as I\u0026rsquo;ve grappled with this decision:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eSometimes growth is achieved through the process of making your dreams reality. Other times, growth is achieved by letting go of dreams that are no longer serving you.\u003c/p\u003e\n\u003cp\u003eIt’s ok to change along the way and adjust what you’re looking for.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eJoining Apple and being a part of the incredible group of people that ship some of my favorite products year after year has been a longtime dream for me. Leaving that dream behind and acknowledging that it\u0026rsquo;s no longer the right fit for me has been difficult, but very freeing. I\u0026rsquo;m looking forward to future growth opportunities as I set sail into the unknown with a Jolly Roger on the mast.\u003c/p\u003e\n\u003cp\u003e🏴‍☠️\u003c/p\u003e",
      "date_modified": "2022-06-24T00:00:00-06:00",
      "date_published": "2022-06-24T00:00:00-06:00",
      "id": "https://joemc.xyz/posts/the-pirate-life/",
      "tags": [
        "post"
      ],
      "title": "The Pirate Life",
      "url": "https://joemc.xyz/posts/the-pirate-life/"
    },
    {
      "content_html": "\u003cp\u003eDutch is a 9-week old Goldendoodle, a frequent member of the \u0026ldquo;good dog\u0026rdquo; club, and lover of fetch. He\u0026rsquo;s named after our favorite coffee chain, Dutch Bros. Coffee\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e and as a nod to Dutch Formula 1 driver (and defending world champion), Max Verstappen.\u003c/p\u003e\n\u003cp\u003eHe\u0026rsquo;s the newest member of the family, and we love him so much!\u003c/p\u003e\n\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/posts/images/meet-dutch/1.jpeg\"\n\t\t\talt=\"Who\u0026rsquo;s a good boy?\"\u003e\u003cfigcaption\u003e\n\t\t\t\u003cp\u003eWho\u0026rsquo;s a good boy?\u003c/p\u003e\n\t\t\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cdiv class=\"footnotes\" role=\"doc-endnotes\"\u003e\n\u003chr\u003e\n\u003col\u003e\n\u003cli id=\"fn:1\"\u003e\n\u003cp\u003eFinancial disclosure, I own a [small] number of shares in Dutch Bros (\u003ca href=\"https://commonstock.com/asset/BROS:equity\"\u003e$BROS\u003c/a\u003e)\u0026#160;\u003ca href=\"#fnref:1\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/div\u003e\n",
      "date_modified": "2022-06-09T00:00:00-06:00",
      "date_published": "2022-06-09T00:00:00-06:00",
      "id": "https://joemc.xyz/posts/meet-dutch/",
      "tags": [
        "post"
      ],
      "title": "Meet Dutch",
      "url": "https://joemc.xyz/posts/meet-dutch/"
    },
    {
      "content_html": "\u003cp\u003eThere\u0026rsquo;s an aphorism that\u0026rsquo;s attributed to Steve Jobs that I\u0026rsquo;ve often used to spur on my own artistic endeavors:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u0026ldquo;Real artists ship.\u0026rdquo;\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eThose three simple words convey a whole host of underlying meaning, and personally I find it incredibly helpful to refocus my own efforts toward the end goal: shipping my art for the world to see.\u003c/p\u003e\n\u003cp\u003eI\u0026rsquo;ve had several pet projects I\u0026rsquo;ve been working on, in some cases for multiple years, that I keep tinkering away on with no end in sight. There\u0026rsquo;s nothing inherently wrong with that – it\u0026rsquo;s good to have side projects that sharpen your craft or serve as test beds for learning – but at least one of the projects has been eating away at me, calling out for me to ship it.\u003c/p\u003e\n\u003cp\u003eSo over the next little bit, I\u0026rsquo;ll put in the final touches of work needed to get it to v1.0, and ship it. Stay tuned!\u003c/p\u003e\n\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/posts/images/real-artists-ship/1.png\"\n\t\t\talt=\"A partial screenshot of \u0026lt;redacted\u0026gt; (I\u0026rsquo;ve already said too much!)\"\u003e\u003cfigcaption\u003e\n\t\t\t\u003cp\u003eA partial screenshot of \u0026lt;redacted\u0026gt; (I\u0026rsquo;ve already said too much!)\u003c/p\u003e\n\t\t\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n",
      "date_modified": "2022-06-02T00:00:00-06:00",
      "date_published": "2022-06-02T00:00:00-06:00",
      "id": "https://joemc.xyz/posts/real-artists-ship/",
      "tags": [
        "post"
      ],
      "title": "Real Artists Ship",
      "url": "https://joemc.xyz/posts/real-artists-ship/"
    },
    {
      "content_html": "\u003cp\u003eA couple weeks ago Airbnb announced a new \u003ca href=\"https://news.airbnb.com/airbnbs-design-to-live-and-work-anywhere/\"\u003eremote work program\u003c/a\u003e for their employees, and with that CEO Brian Chesky briefly touched upon their plan to have two major releases each year:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eThe backbone of how we operate will continue to be our single company calendar with our multi-year roadmap. \u003cem\u003eIt’s centered around two major product releases each year—a May release and a November release.\u003c/em\u003e Even though not everyone directly works on these product releases, we’re organizing our entire calendar around them to maintain company-wide alignment.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eThe first of these major product releases is now rolling out, and although many on Twitter are panning it as a letdown after \u003ca href=\"https://twitter.com/bchesky/status/1521583135758200834\"\u003eChesky teased\u003c/a\u003e that this announcement would include \u0026ldquo;the biggest change to Airbnb in a decade\u0026rdquo;, I think the bigger story is that Airbnb is switching up the typical fortnightly \u0026ldquo;bug fixes and updates\u0026rdquo; release notes with a strategy to make a bigger splash twice a year.\u003c/p\u003e\n\u003cp\u003eI appreciate their different approach.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.airbnb.com/2022-summer\"\u003e→ airbnb.com\u003c/a\u003e\u003c/p\u003e",
      "date_modified": "2022-05-11T00:00:00-06:00",
      "date_published": "2022-05-11T00:00:00-06:00",
      "external_url": "https://www.airbnb.com/2022-summer",
      "id": "https://joemc.xyz/links/2022/05/airbnb-releases/",
      "tags": [
        "link"
      ],
      "title": "Airbnb announces their ‘2022 Summer Release’",
      "url": "https://joemc.xyz/links/2022/05/airbnb-releases/"
    },
    {
      "content_html": "\u003cp\u003eSometimes growth is achieved through the process of making your dreams reality. Other times, growth is achieved by letting go of dreams that are no longer serving you.\u003c/p\u003e\n\u003cp\u003eIt’s ok to change along the way and adjust what you’re looking for.\u003c/p\u003e\n",
      "date_modified": "2022-05-10T10:32:00-06:00",
      "date_published": "2022-05-10T10:32:00-06:00",
      "id": "https://joemc.xyz/notes/2022/05/10/1032/",
      "tags": [
        "note"
      ],
      "title": "Growth through making space",
      "url": "https://joemc.xyz/notes/2022/05/10/1032/"
    },
    {
      "content_html": "\u003cp\u003eRemote work. Async-first work. Four-day work weeks. Pay based on value, not location.\u003c/p\u003e\n\u003cp\u003eIt’s awesome to see great experiments and culture shifts happening across the tech industry. These perks seem to center around employee trust and longevity rather than churn and burn.\u003c/p\u003e\n",
      "date_modified": "2022-05-04T10:28:00-06:00",
      "date_published": "2022-05-04T10:28:00-06:00",
      "id": "https://joemc.xyz/notes/2022/05/04/1028/",
      "tags": [
        "note"
      ],
      "title": "Remote work",
      "url": "https://joemc.xyz/notes/2022/05/04/1028/"
    },
    {
      "content_html": "\u003cp\u003eThe Mac Studio I ordered the day after launch finally arrived, and it\u0026rsquo;s been so worth it. It\u0026rsquo;s been an incredibly fast and responsive desktop, and I love that there\u0026rsquo;s now an Apple desktop that makes sense if the iMac doesn\u0026rsquo;t suit your needs (like if you own a Pro Display XDR). I decided to set it up from scratch as a new machine and document all of the things I did on day one to get it configured for my daily workflows, and wanted to write it all down.\u003c/p\u003e\n\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/posts/images/mac-studio-day-one/1.jpeg\"\n\t\t\talt=\"The 2022 Mac Studio in all it\u0026rsquo;s glory on my desk\"\u003e\u003cfigcaption\u003e\n\t\t\t\u003cp\u003eThe 2022 Mac Studio in all it\u0026rsquo;s glory on my desk\u003c/p\u003e\n\t\t\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eHere it all is, in list form.\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eInstalled \u003ca href=\"https://obdev.at/products/launchbar/index.html\"\u003eLaunchbar\u003c/a\u003e and replaced Spotlight as the default action for ⌘+Space\u003c/li\u003e\n\u003cli\u003eInstalled \u003ca href=\"https://www.macbartender.com\"\u003eBartender\u003c/a\u003e and hid as many of the system menu bar items as possible\u003c/li\u003e\n\u003cli\u003eChanged the trackpad settings to my preferences (enabled tap-to click, enabled silent clicking, changed \u0026ldquo;Swipe Between Pages\u0026rdquo; to three fingers)\u003c/li\u003e\n\u003cli\u003eEnabled full disk access for Terminal\u003c/li\u003e\n\u003cli\u003eEnabled iCloud Syncing for iMessage\u003c/li\u003e\n\u003cli\u003eEnabled iCloud Drive for Desktop and Documents folders\u003c/li\u003e\n\u003cli\u003eAuthorized the computer for \u003cdel\u003eiTunes\u003c/del\u003e Apple Music\u003c/li\u003e\n\u003cli\u003eInstalled \u003ca href=\"https://bjango.com/mac/istatmenus/\"\u003eiStat Menus\u003c/a\u003e (woah, so many CPU cores!), and fiddled around with the menu bar items some more\u003c/li\u003e\n\u003cli\u003eInstalled \u003ca href=\"https://github.com/RobotsAndPencils/XcodesApp\"\u003eXcodes\u003c/a\u003e, started downloading the latest version of Xcode\u003c/li\u003e\n\u003cli\u003eInstalled \u003ca href=\"https://replay.software/sleeve\"\u003eSleeve\u003c/a\u003e and set it up the way I like it (album art pinned to the bottom right corner of the desktop, floating on top of all windows when a track changes)\u003c/li\u003e\n\u003cli\u003eInstalled \u003ca href=\"https://tapbots.com/tweetbot/mac/\"\u003eTweetbot\u003c/a\u003e and authorized my account\u003c/li\u003e\n\u003cli\u003eInstalled \u003ca href=\"https://reflect.app\"\u003eReflect\u003c/a\u003e and signed in\u003c/li\u003e\n\u003cli\u003eInstalled Slack and signed in to the appropriate workspaces for this machine\u003c/li\u003e\n\u003cli\u003eInstalled \u003ca href=\"https://nova.app\"\u003eNova\u003c/a\u003e and configured the command line tool\u003c/li\u003e\n\u003cli\u003eInstalled \u003ca href=\"https://fishshell.com\"\u003eFish shell\u003c/a\u003e, set it to the default shell, copied over my fish config from my MacBook Pro and fiddled with Terminal settings\u003c/li\u003e\n\u003cli\u003eInstalled the \u003ca href=\"https://www.typography.com/fonts/operator/overview/\"\u003eOperator\u003c/a\u003e font and set it in Terminal and Nova\u003c/li\u003e\n\u003cli\u003eSet up my global git author/email information\u003c/li\u003e\n\u003cli\u003eCopied over my global git ignore file (be gone \u003ccode\u003e.DS_Store\u003c/code\u003e!)\u003c/li\u003e\n\u003cli\u003eSet up some SSH keys for various things\u003c/li\u003e\n\u003cli\u003eInstalled \u003ca href=\"https://kaleidoscope.app\"\u003eKaleidoscope\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInstalled \u003ca href=\"https://tapbots.com/pastebot/\"\u003ePastebot\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInstalled \u003ca href=\"https://culturedcode.com/things/\"\u003eThings\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBy this point I felt like the machine was in a pretty good spot, and I\u0026rsquo;ve definitely needed to tweak and install things since then, but now I have a playbook for the next time I need to set up a new machine from scratch.\u003c/p\u003e\n\u003cdiv class=\"footnotes\" role=\"doc-endnotes\"\u003e\n\u003chr\u003e\n\u003col\u003e\n\u003cli id=\"fn:1\"\u003e\n\u003cp\u003eThe config I went with is the M1 Ultra (20-core CPU, 48-core GPU) with 64GB of memory and 4TB of internal SSD storage 💸\u0026#160;\u003ca href=\"#fnref:1\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/div\u003e",
      "date_modified": "2022-04-25T00:00:00-06:00",
      "date_published": "2022-04-25T00:00:00-06:00",
      "id": "https://joemc.xyz/posts/mac-studio-day-one/",
      "tags": [
        "post"
      ],
      "title": "Mac Studio – Day One",
      "url": "https://joemc.xyz/posts/mac-studio-day-one/"
    },
    {
      "content_html": "\u003cp\u003eWe live so much of our lives being afraid. Afraid to try. Afraid to speak. Afraid to be different.\u003c/p\u003e\n\u003cp\u003eBut if we give into that fear, we’ll be left with something worse: regret.\u003c/p\u003e\n\u003cp\u003eSo do that thing, write that email, and be yourself. Even if you fail, you’ll be grateful you tried. ❤️\u003c/p\u003e\n",
      "date_modified": "2022-04-01T11:11:00-06:00",
      "date_published": "2022-04-01T11:11:00-06:00",
      "id": "https://joemc.xyz/notes/2022/04/01/1111/",
      "tags": [
        "note"
      ],
      "title": "We live so much of our lives being afraid",
      "url": "https://joemc.xyz/notes/2022/04/01/1111/"
    },
    {
      "content_html": "\u003cp\u003e“I have looked in the mirror every morning and asked myself: \u0026ldquo;If today were the last day of my life, would I want to do what I am about to do today?\u0026rdquo; And whenever the answer has been \u0026ldquo;No\u0026rdquo; for too many days in a row, I know I need to change something.”\u003c/p\u003e\n\u003cp\u003e– Steve Jobs\u003c/p\u003e\n",
      "date_modified": "2022-03-26T15:30:00-06:00",
      "date_published": "2022-03-26T15:30:00-06:00",
      "id": "https://joemc.xyz/notes/2022/03/26/1530/",
      "tags": [
        "note"
      ],
      "title": "Steve Jobs on living each day",
      "url": "https://joemc.xyz/notes/2022/03/26/1530/"
    },
    {
      "content_html": "\u003cp\u003eIt\u0026rsquo;s been almost three years since I \u003ca href=\"https://joemc.xyz/posts/working-remotely/\"\u003elast wrote\u003c/a\u003e about my remote work setup, and a \u003cem\u003elot\u003c/em\u003e has changed in everyone\u0026rsquo;s lives since then. It was time for me to post some new photos of my home office, and write about some of the things that help me do my best work. But first, let\u0026rsquo;s talk a little bit about remote work almost two years into the pandemic.\u003c/p\u003e\n\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/posts/images/2022-home-office/1.jpeg\"\n\t\t\talt=\"Wide-angle picture of my office in February, 2022\"\u003e\u003cfigcaption\u003e\n\t\t\t\u003cp\u003eWide-angle picture of my office in February, 2022\u003c/p\u003e\n\t\t\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003ch2 id=\"remote-work-in-a-pandemic\"\u003eRemote Work in a Pandemic\u003c/h2\u003e\n\u003cp\u003eSo\u0026hellip; a bunch of people have tried working remotely over the last two years. Or maybe we\u0026rsquo;ve all just been trying to survive, and work has been an occasional side effect of those attempts. Whatever the case, many people have needed to set up work-from-home \u0026ldquo;offices\u0026rdquo; wherever they could – the kitchen table, a spare bedroom, a closet, the living room couch, or maybe even in bed.\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e\u003c/p\u003e\n\u003cp\u003eI had the ultimate luxury going into the pandemic of already being on a remote-friendly team and having a dedicated space from which to sit down and work from. The pandemic has been far from easy for anyone, and for a lot of people, the \u0026ldquo;grand remote work experiment\u0026rdquo; of 2020-present\u003csup id=\"fnref:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e hasn\u0026rsquo;t been a bright spot, leaving a negative impression of working from home. Many people have written about the various contributing factors: lack of dedicated space, concurrently needing to perform at-home schooling, the general stresses of a global pandemic, etc. I\u0026rsquo;m not going to dive into all of those, but I do want to say that after six years of working from home, I still love it.\u003c/p\u003e\n\u003cp\u003eAs I\u0026rsquo;ve considered the pros and cons of returning to an office environment over the years, sometimes I\u0026rsquo;m swayed by the benefit of seeing coworkers or fewer latency-induced interruptions during meetings. But then I start to remember all of the trade-offs. The loud open office, harsh fluorescent lights, HVAC that\u0026rsquo;s always either too hot or too cold. Again, I fully admit that not everyone is in a situation where they can have a dedicated room in their house adorned perfectly for sole use as an office, but that \u003cem\u003eis\u003c/em\u003e the situation I have put myself in.\u003c/p\u003e\n\u003cp\u003eOver the six years I\u0026rsquo;ve worked primarily from my home office, I\u0026rsquo;ve added artwork, furniture, books, toys, and technology that makes it a perfect office environment for me. Going back to an office would be a trade down in almost every aspect for me. As a senior/lead software engineer at most companies, I would be given a desk or cubicle in an open office. If I was \u003cem\u003elucky\u003c/em\u003e, I\u0026rsquo;d be given a shared windowless office with 1-3 coworkers.\u003csup id=\"fnref:3\"\u003e\u003ca href=\"#fn:3\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e3\u003c/a\u003e\u003c/sup\u003e My home office is a large, private, well-lit, windowed, quiet room that I can arrange and adorn however I\u0026rsquo;d like.\u003c/p\u003e\n\u003cp\u003eSo to wrap up my soapbox monologue before we get to the fun stuff: if you didn\u0026rsquo;t like working remotely during the pandemic, you may not have seen the best sides of it. I urge you to give it a fair shake under better circumstances.\u003c/p\u003e\n\u003ch2 id=\"the-desk\"\u003eThe Desk\u003c/h2\u003e\n\u003cp\u003eOk, now onto the fun part of this post! I\u0026rsquo;ve broken this up into two sections: the desk, and the room. The desk is front and center in the room, and it\u0026rsquo;s what I see most of the time, so I\u0026rsquo;ve tried to make it as fun as possible while optimizing for how I work.\u003c/p\u003e\n\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/posts/images/2022-home-office/2.jpeg\"\n\t\t\talt=\"Picture of my office desk in February, 2022\"\u003e\u003cfigcaption\u003e\n\t\t\t\u003cp\u003ePicture of my office desk in February, 2022\u003c/p\u003e\n\t\t\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eI \u003cem\u003elove\u003c/em\u003e the current iteration of my desk. It\u0026rsquo;s big, usually has open space for me to set things down on, and has some fun little toys and LEGOs to bring a smile to my face. I wasn\u0026rsquo;t always a \u0026ldquo;toys on the desk\u0026rdquo; kind of guy, but it\u0026rsquo;s who I am now and it\u0026rsquo;s great. Here\u0026rsquo;s a list of the main things on the desk (with links, prices, and when I added it to my setup where possible):\u003c/p\u003e\n\u003ch3 id=\"apple-pro-display-xdr\"\u003eApple Pro Display XDR\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrice: \u003ca href=\"https://www.apple.com/pro-display-xdr/\"\u003e$6k\u003c/a\u003e / Added: January 2020\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eProbably the most criticized purchase I\u0026rsquo;ve ever made. The first thing anyone says when I tell them I have one is that it\u0026rsquo;s overpriced and I wasted my money. I\u0026rsquo;ve had it for over two years and I haven\u0026rsquo;t regretted it once. It\u0026rsquo;s the best display I\u0026rsquo;ve ever used. And yes, I got the Pro Stand.\u003c/p\u003e\n\u003ch3 id=\"2021-16-macbook-pro\"\u003e2021 16\u0026quot; MacBook Pro\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrice: \u003ca href=\"https://www.apple.com/macbook-pro-14-and-16/\"\u003e$3.5k\u003c/a\u003e / Added: November 2021\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI love this machine, easily the best laptop I\u0026rsquo;ve ever used. Fast, great battery life, awesome screen when I leave my desk, and the fans are never audible. I got the M1 Pro with 32GB of RAM and a 2TB drive.\u003c/p\u003e\n\u003ch3 id=\"minivan-mechanical-keyboard\"\u003eMiniVan Mechanical Keyboard\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrice: ~$400 / Added: December 2017\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI have several custom mechanical keyboards, but this is one of my favorites, and my current daily driver. It\u0026rsquo;s a 40% layout called the MiniVan, with Zilent 67g switches and GMK Dracula keycaps.\u003c/p\u003e\n\u003ch3 id=\"level-frames-tabletop-frames\"\u003eLevel Frames Tabletop Frames\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrice: \u003ca href=\"https://www.levelframes.com/frames/tabletop?ref=79917b255f\"\u003e$50\u003c/a\u003e (referral link) / Added: January 2021\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI have a ton of framed art around my house, and I love the quality of Level Frames. They introduced these tabletop frames a while back and I think they\u0026rsquo;re a great size + price + quality. (Not an ad, but you and I get some credit towards future purchases if you use my link.)\u003c/p\u003e\n\u003ch3 id=\"lego-porsche-911-turbo\"\u003eLEGO Porsche 911 Turbo\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrice: \u003ca href=\"https://www.lego.com/en-us/product/porsche-911-10295\"\u003e$150\u003c/a\u003e / Added: March 2021\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI have a few LEGOs in my office, including this Porsche 911 that I have front and center. I love Porsches, and have always been a fan of the classic 911 silhouette. As soon as they announced this set I ordered it.\u003c/p\u003e\n\u003ch3 id=\"jarvis-standing-desk\"\u003eJarvis Standing Desk\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrice: \u003ca href=\"https://www.fully.com/standing-desks/jarvis/jarvis-adjustable-height-desk-bamboo.html\"\u003e$680\u003c/a\u003e / Added: March 2018\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis standing desk has served me well, and although I would like to replace the top (maybe with a nice reclaimed walnut slab), it\u0026rsquo;s been really great in all other aspects. It\u0026rsquo;s sturdy, has a large surface area (I went with the 78x30 size), and the sit/stand functionality works great.\u003c/p\u003e\n\u003ch3 id=\"herman-miller-cosm-chair\"\u003eHerman Miller Cosm Chair\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrice: \u003ca href=\"https://www.hermanmiller.com/products/seating/office-chairs/cosm-chairs/\"\u003e$1.6k\u003c/a\u003e / Added: January 2020\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis desk chair, like most in the Herman Miller catalog, is definitely pricey. I used to have a Herman Miller Embody, but I took a gamble on the Cosm\u0026rsquo;s supposed \u0026ldquo;no adjustments necessary\u0026rdquo; design and I\u0026rsquo;ve been impressed. It\u0026rsquo;s definitely my favorite desk chair, and I love the full mesh design. It\u0026rsquo;s comfy and supportive all day long, and the mesh allows airflow so even on warmer days I don\u0026rsquo;t get sweaty. I went with the high-back design with the leaf arms (which I love) in graphite.\u003c/p\u003e\n\u003ch3 id=\"other-miscellaneous-items\"\u003eOther Miscellaneous Items\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLogitech 4K Pro Magnetic Webcam (\u003ca href=\"https://www.apple.com/shop/product/HMUC2ZM/A/logitech-4k-pro-magnetic-webcam-for-pro-display-xdr\"\u003e$200\u003c/a\u003e, January 2020)\u003c/li\u003e\n\u003cli\u003eApple Magic Trackpad 2 (\u003ca href=\"https://www.apple.com/shop/product/MK2D3AM/A/magic-trackpad\"\u003e$130\u003c/a\u003e, March 2018)\u003c/li\u003e\n\u003cli\u003eTwelve South StayGo USB-C Hub (\u003ca href=\"https://www.twelvesouth.com/products/staygo-usb-c-hub\"\u003e$100\u003c/a\u003e, July 2019)\u003c/li\u003e\n\u003cli\u003eGrovemade Desk Shelf \u0026amp; Accessories (\u003ca href=\"https://grovemade.com/desk-shelf-system/\"\u003e~$300\u003c/a\u003e, July 2018)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"the-room\"\u003eThe Room\u003c/h2\u003e\n\u003cp\u003eEven though most of the meat of my office is up on the desk, I love the back area of my office as well. Of course it serves as an epic background for WebEx calls, but it\u0026rsquo;s also a great place to sit down, relax, read, write, or listen to music.\u003c/p\u003e\n\u003cfigure\u003e\u003cimg src=\"https://joemc.xyz/posts/images/2022-home-office/3.jpeg\"\n\t\t\talt=\"Picture of the lounge area of my office in February, 2022\"\u003e\u003cfigcaption\u003e\n\t\t\t\u003cp\u003ePicture of the lounge area of my office in February, 2022\u003c/p\u003e\n\t\t\u003c/figcaption\u003e\n\u003c/figure\u003e\n\n\u003cp\u003eI won\u0026rsquo;t bore you with an exhaustive list of everything pictured, but I will call out a few general groupings of things that help make this office my favorite place to work.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eReplica Eames Lounge Chair\u003c/strong\u003e: I\u0026rsquo;ve always loved this chair. It\u0026rsquo;s comfortable, it looks great, and it makes me happy whenever I see it.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAudio-Technica Turntable\u003c/strong\u003e and a collection of vinyls. After working with computers all day, I love the analog sound and physical effort needed to listen to albums.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBooks, books, and more books\u003c/strong\u003e. So many books, not enough time.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eJones Mountain Twin Snowboard\u003c/strong\u003e. Living in Utah for almost a decade, it was only a matter of time before I took up snow sports.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eLEGOs\u003c/strong\u003e. The LEGO sets on this shelf rotate a bit, but currently Wall•E, BB-8, and the Flatiron building.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eArt pieces\u003c/strong\u003e. I love having cool art on the walls in my office. I have several \u003ca href=\"https://thirty81project.com/collections/thirty81-collection/products/baseball-s-many-physical-dimensions-poster?variant=756114545\"\u003ebaseball themed pieces\u003c/a\u003e, some Star Wars art by \u003ca href=\"https://twitter.com/rogie\"\u003eRogie King\u003c/a\u003e, and a great illustrated piece showcasing the middle portion of the \u003ca href=\"https://andyearlcreative.bigcartel.com/product/wasatch-map\"\u003eWasatch Front mountain range\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"in-conclusion\"\u003eIn Conclusion\u003c/h2\u003e\n\u003cp\u003eI love my home office, and even on bad days at work I love being in a comfortable environment surrounded by things that bring me happiness. I hope you enjoyed seeing a little slice of my day to day life and some of the things that I\u0026rsquo;ve collected over the years. Is there anything I didn\u0026rsquo;t cover that you have questions about? Let me know, I\u0026rsquo;m happy to chat!\u003c/p\u003e\n\u003cdiv class=\"footnotes\" role=\"doc-endnotes\"\u003e\n\u003chr\u003e\n\u003col\u003e\n\u003cli id=\"fn:1\"\u003e\n\u003cp\u003eI\u0026rsquo;m not here to judge people – if you made it this far, good job! 👏\u0026#160;\u003ca href=\"#fnref:1\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:2\"\u003e\n\u003cp\u003eI\u0026rsquo;m aware that some people didn\u0026rsquo;t work remotely during the pandemic, and some have already returned to offices.\u0026#160;\u003ca href=\"#fnref:2\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:3\"\u003e\n\u003cp\u003eI realize there are exceptions to this and that there are companies that have [small] private offices for employees at my level, but they are the exception in my experience, not the rule.\u0026#160;\u003ca href=\"#fnref:3\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/div\u003e",
      "date_modified": "2022-02-10T00:00:00-07:00",
      "date_published": "2022-02-10T00:00:00-07:00",
      "id": "https://joemc.xyz/posts/2022-home-office/",
      "tags": [
        "post"
      ],
      "title": "My Home Office",
      "url": "https://joemc.xyz/posts/2022-home-office/"
    },
    {
      "content_html": "\u003cp\u003eI wanted to have fun on the internet again. Around a decade ago (wow, time flies!), I remember lots of little landing pages built just for fun. There were no monetization strategies or traffic expectations. These were websites built simply to showcase fun content, play with fun technologies, or a combination of the two.\u003c/p\u003e\n\u003cp\u003eOver the holidays I threw together \u003ca href=\"https://joemc.xyz\"\u003ea little site\u003c/a\u003e in that category of fun personal websites, and I\u0026rsquo;ve been iterating on it over the last couple weeks in my spare time. I don\u0026rsquo;t \u003cem\u003ereally\u003c/em\u003e care if anyone looks at it, as I\u0026rsquo;m building it for myself, but I wanted to write up what has gone into it so far.\u003c/p\u003e\n\u003ch3 id=\"origins\"\u003eOrigins\u003c/h3\u003e\n\u003cp\u003eI thought it would be fun to have a personal landing page, something that showed what I was up to all over the internet, not just my blog posts, but also what I was listening to or reading. So I started coding up a little site, adding content section by section. I had always intended for it to be able to update on it\u0026rsquo;s own, my own personal social network aggregator, so I started by checking out the data from the public APIs (or RSS feeds) of the various services I wanted to display. That way I wouldn\u0026rsquo;t rely on some piece of data that wasn\u0026rsquo;t going to be accessible when I started to automate things.\u003c/p\u003e\n\u003cp\u003eI hand-coded the site in plain HTML and CSS, focusing on the content and styling. The first iteration looked something like this:\u003c/p\u003e\n\u003cimg src=\"https://joemc.xyz/posts/images/joemc-xyz/1.png\" /\u003e\n\u003cp\u003eI was liking how things were coming together, but after I published it, the hand-coded beginnings of the site became frustrating to maintain (as expected). If I listened to some music that was scrobbled to last.fm or tweeted, I would feel a need to go in and edit my website with the new album or tweet since it would no longer be accurate on my own landing page. It was time to make it more dynamic.\u003c/p\u003e\n\u003ch3 id=\"data-powered\"\u003eData Powered\u003c/h3\u003e\n\u003cp\u003eThe first step towards making my landing page self-sustaining was to templatize it. Instead of writing raw HTML, I decided to use \u003ca href=\"https://gohugo.io/\"\u003eHugo\u003c/a\u003e\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e to generate the pages based on JSON representations of the objects. For example, I can represent a tweet using this JSON:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-json\" data-lang=\"json\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e1\u003c/span\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e2\u003c/span\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;link\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;https:\\/\\/twitter.com\\/mclaughj\\/status\\/1475905340877148162\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e3\u003c/span\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;id\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;1475905340877148162\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e4\u003c/span\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;date\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;Dec 28, 2021\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e5\u003c/span\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;text\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;One of the fun things about getting into a new hobby is picking out the gear you’re going to get. 🏂\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e6\u003c/span\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eAnd I can render it to HTML using this snippet, using the various attributes of the tweet in the template:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-html\" data-lang=\"html\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e1\u003c/span\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e\u0026lt;\u003c/span\u003e\u003cspan class=\"nt\"\u003ediv\u003c/span\u003e \u003cspan class=\"na\"\u003eclass\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;tweet\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e2\u003c/span\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e\u0026lt;\u003c/span\u003e\u003cspan class=\"nt\"\u003ediv\u003c/span\u003e \u003cspan class=\"na\"\u003eclass\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;tweet-content\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e3\u003c/span\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"p\"\u003e\u0026lt;\u003c/span\u003e\u003cspan class=\"nt\"\u003espan\u003c/span\u003e \u003cspan class=\"na\"\u003eclass\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;text\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u003c/span\u003e{{ .text | markdownify }}\u003cspan class=\"p\"\u003e\u0026lt;/\u003c/span\u003e\u003cspan class=\"nt\"\u003espan\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e4\u003c/span\u003e\u003cspan class=\"cl\"\u003e\t{{ if ne .image nil }}\u003cspan class=\"p\"\u003e\u0026lt;\u003c/span\u003e\u003cspan class=\"nt\"\u003eimg\u003c/span\u003e \u003cspan class=\"na\"\u003esrc\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;{{ .image }}\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u003c/span\u003e{{ end }}\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e5\u003c/span\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e\u0026lt;/\u003c/span\u003e\u003cspan class=\"nt\"\u003ediv\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e6\u003c/span\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e\u0026lt;\u003c/span\u003e\u003cspan class=\"nt\"\u003ediv\u003c/span\u003e \u003cspan class=\"na\"\u003eclass\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;meta\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e7\u003c/span\u003e\u003cspan class=\"cl\"\u003e\t\u003cspan class=\"p\"\u003e\u0026lt;\u003c/span\u003e\u003cspan class=\"nt\"\u003ea\u003c/span\u003e \u003cspan class=\"na\"\u003ehref\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;{{ .link }}\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u003c/span\u003e{{ .date }}\u003cspan class=\"p\"\u003e\u0026lt;/\u003c/span\u003e\u003cspan class=\"nt\"\u003ea\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e8\u003c/span\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e\u0026lt;/\u003c/span\u003e\u003cspan class=\"nt\"\u003ediv\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e9\u003c/span\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e\u0026lt;/\u003c/span\u003e\u003cspan class=\"nt\"\u003ediv\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eAfter switching over to a templatized site with all of the various sections powered by JSON files, I was ready for the next step: dynamically fetching the data.\u003c/p\u003e\n\u003ch3 id=\"enter-swift\"\u003eEnter Swift\u003c/h3\u003e\n\u003cp\u003eThe language I\u0026rsquo;ve written the most code in over the last five or so years has been Swift, so it\u0026rsquo;s the language I decided to lean on for fetching the most recent data to power my little site.\u003c/p\u003e\n\u003cp\u003eA few services I wanted to pull data from had public APIs with fairly straightforward integration steps. Others didn\u0026rsquo;t have public APIs, but they did offer RSS feeds with my most recent data, so I parsed the XML from those feeds and translated them into the format I was already using on my website from the previous step.\u003c/p\u003e\n\u003cp\u003eIn all cases, once I had the data from the APIs or feeds, I needed to translate and assemble the data in a format that would work for my site. I wrote some simple \u003ccode\u003eCodable\u003c/code\u003e models that accepted my decoded Swift object in initializers to mold the data into the right formats. For example, here\u0026rsquo;s my \u003ccode\u003eBook\u003c/code\u003e model:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-swift\" data-lang=\"swift\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e 1\u003c/span\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kd\"\u003estruct\u003c/span\u003e \u003cspan class=\"nc\"\u003eBook\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003eCodable\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e 2\u003c/span\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003elet\u003c/span\u003e \u003cspan class=\"nv\"\u003etitle\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"nb\"\u003eString\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e 3\u003c/span\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003elet\u003c/span\u003e \u003cspan class=\"nv\"\u003eauthor\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"nb\"\u003eString\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e 4\u003c/span\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003elet\u003c/span\u003e \u003cspan class=\"nv\"\u003elink\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"nb\"\u003eString\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e 5\u003c/span\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003elet\u003c/span\u003e \u003cspan class=\"nv\"\u003eimage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"nb\"\u003eString\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e 6\u003c/span\u003e\u003cspan class=\"cl\"\u003e\t\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e 7\u003c/span\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003einit\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ewith\u003c/span\u003e \u003cspan class=\"n\"\u003egrBook\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003eGRBook\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e 8\u003c/span\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003etitle\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003egrBook\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003etitle\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e 9\u003c/span\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eauthor\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003egrBook\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eauthor\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e10\u003c/span\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003elink\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;https://www.goodreads.com/book/show/\u003c/span\u003e\u003cspan class=\"si\"\u003e\\(\u003c/span\u003e\u003cspan class=\"n\"\u003egrBook\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"si\"\u003e)\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e11\u003c/span\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eimage\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003egrBook\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eimage\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e12\u003c/span\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e13\u003c/span\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eOne that was a bit more fun was tweets, since I also needed to generate valid markdown for the template shown earlier. At a minimum, I needed to wrap URLs with markdown link syntax, but I also took this opportunity to replace the shortened t.co links with whatever the link text was that I used when I wrote the original tweet. I may do some additional modification here in order to display images inline (by default from the API they\u0026rsquo;re pic.twitter.com links), but for now I\u0026rsquo;m happy with this:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-swift\" data-lang=\"swift\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e 1\u003c/span\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kd\"\u003estruct\u003c/span\u003e \u003cspan class=\"nc\"\u003eTweet\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003eCodable\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e 2\u003c/span\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003elet\u003c/span\u003e \u003cspan class=\"nv\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"nb\"\u003eString\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e 3\u003c/span\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003elet\u003c/span\u003e \u003cspan class=\"nv\"\u003etext\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"nb\"\u003eString\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e 4\u003c/span\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003elet\u003c/span\u003e \u003cspan class=\"nv\"\u003elink\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"nb\"\u003eString\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e 5\u003c/span\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003elet\u003c/span\u003e \u003cspan class=\"nv\"\u003edate\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"nb\"\u003eString\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e 6\u003c/span\u003e\u003cspan class=\"cl\"\u003e\t\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e 7\u003c/span\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kd\"\u003einit\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ewith\u003c/span\u003e \u003cspan class=\"n\"\u003etTweet\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003eTTweet\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e 8\u003c/span\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"kd\"\u003evar\u003c/span\u003e \u003cspan class=\"nv\"\u003emodifiedText\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003etTweet\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003etext\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e 9\u003c/span\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"kd\"\u003elet\u003c/span\u003e \u003cspan class=\"nv\"\u003eentities\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003etTweet\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eentities\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e10\u003c/span\u003e\u003cspan class=\"cl\"\u003e           \u003cspan class=\"kd\"\u003elet\u003c/span\u003e \u003cspan class=\"nv\"\u003eurls\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eentities\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eurls\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e11\u003c/span\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"n\"\u003eurls\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eforEach\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"n\"\u003eurl\u003c/span\u003e \u003cspan class=\"k\"\u003ein\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e12\u003c/span\u003e\u003cspan class=\"cl\"\u003e              \u003cspan class=\"n\"\u003emodifiedText\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003emodifiedText\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ereplacingOccurrences\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eof\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"n\"\u003eurl\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003etCoUrl\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003ewith\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;[\u003c/span\u003e\u003cspan class=\"si\"\u003e\\(\u003c/span\u003e\u003cspan class=\"n\"\u003eurl\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003edisplayUrl\u003c/span\u003e\u003cspan class=\"si\"\u003e)\u003c/span\u003e\u003cspan class=\"s\"\u003e](\u003c/span\u003e\u003cspan class=\"si\"\u003e\\(\u003c/span\u003e\u003cspan class=\"n\"\u003eurl\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eexpandedUrl\u003c/span\u003e\u003cspan class=\"si\"\u003e)\u003c/span\u003e\u003cspan class=\"s\"\u003e)\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e13\u003c/span\u003e\u003cspan class=\"cl\"\u003e            \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e14\u003c/span\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e15\u003c/span\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003etext\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003emodifiedText\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e16\u003c/span\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003elink\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;https://twitter.com/mclaughj/status/\u003c/span\u003e\u003cspan class=\"si\"\u003e\\(\u003c/span\u003e\u003cspan class=\"n\"\u003etTweet\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"si\"\u003e)\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e17\u003c/span\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003edate\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003etTweet\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003edate\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e18\u003c/span\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eid\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003etTweet\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e19\u003c/span\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"ln\"\u003e20\u003c/span\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eOne other cool thing I implemented was diffing the new data against the data I already have on disk for my site. This avoids some followup API requests, and allows me to extend the life of the data (for example, clicking in to the most of the sections shows the archive of data, like \u003ca href=\"https://joemc.xyz/listening/\"\u003elistening\u003c/a\u003e, \u003ca href=\"https://joemc.xyz/reading/\"\u003ereading\u003c/a\u003e, and \u003ca href=\"https://joemc.xyz/watching/\"\u003ewatching\u003c/a\u003e). This is especially important with the sites that don\u0026rsquo;t have public APIs, as I\u0026rsquo;m relying on my profiles\u0026rsquo; RSS feeds, which only contain the most recent data. Without relying on the data I\u0026rsquo;ve already fetched and stored, I\u0026rsquo;ll lose the older data as it rolls off the feed.\u003c/p\u003e\n\u003ch3 id=\"ready-set-action\"\u003eReady, Set, Action!\u003c/h3\u003e\n\u003cp\u003eNow whenever I want to update my site, it\u0026rsquo;s a matter of running my little Swift program, which checks the various feeds, diffs against my local data source, parses and updates as needed, and then pushes the resulting changes (if any) to Netlify for rebuilding and publishing.\u003c/p\u003e\n\u003cp\u003eI even have it output some cool info as it\u0026rsquo;s running so I can see what was done on my behalf\u003csup id=\"fnref:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e.\u003c/p\u003e\n\u003cimg src=\"https://joemc.xyz/posts/images/joemc-xyz/2.png\" /\u003e\n\u003cp\u003eSo that\u0026rsquo;s about it! If no one cares and never visits, that\u0026rsquo;s totally fine\u003csup id=\"fnref:3\"\u003e\u003ca href=\"#fn:3\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e3\u003c/a\u003e\u003c/sup\u003e. But if you do get wondering: \u0026ldquo;What is Joe up to?\u0026rdquo;, I hope \u003ca href=\"https://joemc.xyz\"\u003ethis little pet project\u003c/a\u003e\u003csup id=\"fnref:4\"\u003e\u003ca href=\"#fn:4\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e4\u003c/a\u003e\u003c/sup\u003e will help answer that. If you have any suggestions for sections I could add, let me know!\u003c/p\u003e\n\u003cdiv class=\"footnotes\" role=\"doc-endnotes\"\u003e\n\u003chr\u003e\n\u003col\u003e\n\u003cli id=\"fn:1\"\u003e\n\u003cp\u003eThe same static-site generator that I use for this site\u0026#160;\u003ca href=\"#fnref:1\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:2\"\u003e\n\u003cp\u003eYes, I know the pluralization is wrong 🙈\u0026#160;\u003ca href=\"#fnref:2\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:3\"\u003e\n\u003cp\u003eI don\u0026rsquo;t have any site analytics set up, so I wouldn\u0026rsquo;t know even if you did visit\u0026#160;\u003ca href=\"#fnref:3\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:4\"\u003e\n\u003cp\u003eDo I have enough linkbacks to \u003ca href=\"https://joemc.xyz\"\u003ejoemc.xyz\u003c/a\u003e in this post?\u0026#160;\u003ca href=\"#fnref:4\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/div\u003e",
      "date_modified": "2022-01-16T00:00:00-07:00",
      "date_published": "2022-01-16T00:00:00-07:00",
      "id": "https://joemc.xyz/posts/joemc-xyz/",
      "tags": [
        "post"
      ],
      "title": "joemc.xyz",
      "url": "https://joemc.xyz/posts/joemc-xyz/"
    },
    {
      "content_html": "\u003cp\u003eRemember when we made cool webpages that showed what we were up to all over the Internet? I whipped one up over the holidays: \u003ca href=\"https://joemc.xyz\"\u003ejoemc.xyz\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIt includes what I’m listening to, tweeting, reading, and writing. What else should I add?\u003c/p\u003e\n",
      "date_modified": "2021-12-27T12:13:00-07:00",
      "date_published": "2021-12-27T12:13:00-07:00",
      "id": "https://joemc.xyz/notes/2021/12/27/1213/",
      "tags": [
        "note"
      ],
      "title": "Introducing joemc.xyz",
      "url": "https://joemc.xyz/notes/2021/12/27/1213/"
    },
    {
      "content_html": "\u003cp\u003eSometimes it hits me that I get to sit at my desk, write software, listen to music, and get paid for it. Today is one of those days. Feeling incredibly lucky and grateful.\u003c/p\u003e\n\u003cimg src=\"https://joemc.xyz/notes/images/office.jpeg\" /\u003e\n",
      "date_modified": "2021-12-16T12:42:00-07:00",
      "date_published": "2021-12-16T12:42:00-07:00",
      "id": "https://joemc.xyz/notes/2021/12/16/1242/",
      "tags": [
        "note"
      ],
      "title": "Feeling lucky and grateful",
      "url": "https://joemc.xyz/notes/2021/12/16/1242/"
    },
    {
      "content_html": "\u003cp\u003eA while ago, I got into mechanical keyboards. I was intrigued by a picture posted to Twitter by \u003ca href=\"https://twitter.com/garrettmurray\"\u003e@garrettmurray\u003c/a\u003e. All three of the keyboards he showed were interesting, but the bottom one – the little guy – was the one that caught my eye the most. I had to have it.\u003c/p\u003e\n\u003cblockquote class=\"twitter-tweet\" data-conversation=\"none\" data-theme=\"dark\"\u003e\u003cp lang=\"en\" dir=\"ltr\"\u003e•\u003ca href=\"https://twitter.com/SeanWarton?ref_src=twsrc%5Etfw\"\u003e@SeanWarton\u003c/a\u003e Pardon messy desk... \u003ca href=\"https://t.co/PSOKdtlpu5\"\u003epic.twitter.com/PSOKdtlpu5\u003c/a\u003e\u003c/p\u003e\u0026mdash; Garrett Murray (@garrettmurray) \u003ca href=\"https://twitter.com/garrettmurray/status/818949586161057792?ref_src=twsrc%5Etfw\"\u003eJanuary 10, 2017\u003c/a\u003e\u003c/blockquote\u003e \u003cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\n\u003cp\u003eThat keyboard is called a MiniVan, and it\u0026rsquo;s what\u0026rsquo;s referred to as a 40% in the mechanical keyboard world, which roughly means that it has 40% of the keys that would be found on a full-size keyboard. Most 40% keyboard layouts are limited to: a full set of letters, a bottom row of modifier keys, and ~one modifier key on each side of the letters.\u003c/p\u003e\n\u003cp\u003eI now own several 40% keyboards with variations of the MiniVan layout, and the first question I\u0026rsquo;m asked whenever anyone sees one on my desk is: \u0026ldquo;how do you type numbers?!\u0026rdquo;. Great question! The answer is a concept called \u0026ldquo;layers\u0026rdquo;. If you take a look at Garrett\u0026rsquo;s MiniVan, you can see that the top row of his keyboard isn\u0026rsquo;t actually QWERTY, but a full\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e number row. Those number keycaps are actually serving as a reminder for what\u0026rsquo;s \u0026ldquo;underneath\u0026rdquo; the top row of letters.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eUnderneath?!\u003c/strong\u003e What sorcery is this?\u003c/em\u003e 🤯\u003c/p\u003e\n\u003cp\u003eLayers are a mechanism that\u0026rsquo;s used to add additional functionality to your keyboard. In fact, every single person already has access to a layer you use every day: uppercase letters (and symbols above numbers). When you press and hold your shift key, you gain access to a new set of characters using the same set of keys. It\u0026rsquo;s magic! So what if you could add additional layers to your keyboard? You could fit additional functionality into the same set of keys, keeping functionality you use often right at your fingertips.\u003c/p\u003e\n\u003cp\u003eOn a 40% board, using layers is a necessity. You don\u0026rsquo;t have enough keys to fit all of the functionality of a full-size keyboard in unless some keys are pulling double (or triple) duty. The first thing I had to get used to on my new MiniVan was arrow keys. As a software engineer, I use my arrow keys \u003cem\u003ea lot\u003c/em\u003e. Retraining my muscle memory from reaching down to the little inverse \u0026ldquo;T\u0026rdquo; arrow cluster at the bottom right of my keyboard to a new configuration was rough. I adopted the arrow layout that the MiniVan\u0026rsquo;s creator uses, a modified vim\u003csup id=\"fnref:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e layout:\u003c/p\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003ekey combo\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003emapping\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003efn + j\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e↓\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003efn + k\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e↑\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003efn + l\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e←\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003efn + ;\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e→\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eWhile it may seem a little weird at first, I have gotten fully used to having access to all four directional keys without having to move my right hand off the home row. And I can layer the arrows with macOS modifers without thinking about it.\u003c/p\u003e\n\u003ch3 id=\"the-problem\"\u003eThe Problem\u003c/h3\u003e\n\u003cp\u003eSo with all of that introduction out of the way\u0026hellip; what are we talking about here and what is a \u0026ldquo;Hammerspoon\u0026rdquo;?\u003c/p\u003e\n\u003cp\u003eWell, having my arrow keys underneath my \u003ccode\u003ej/k/l/;\u003c/code\u003e keys became second nature to me, which was great! Unless I was using a different keyboard. As soon as I tried typing on my MacBook Pro keyboard, I\u0026rsquo;d run into all sorts of problems. For starters, on my MiniVan, I use my caps lock key location as my \u0026ldquo;fn\u0026rdquo; key to go to layer one. So on my Mac, I\u0026rsquo;d try to move my cursor by typing caps lock and k, which would result in a \u0026lsquo;K\u0026rsquo; being typed, not my cursor being moved. Minor inconveinance, I\u0026rsquo;ll just hit backspace, move my hand down to the arrow key cluster, and navigate like normal. But now caps lock is turned on, so the next thing I\u0026rsquo;d start typing would end up being \u003cdel\u003eLOUD\u003c/del\u003e loud. So then I\u0026rsquo;d need to turn off the caps lock, delete the word I started typing, and continue on. A major pain in the butt.\u003c/p\u003e\n\u003cp\u003eOne day I was fed up by this happening and decided to do something about it. I\u0026rsquo;d simply have to build in the arrow keys I wanted under my home row. There was no other way.\u003c/p\u003e\n\u003cp\u003eAfter some googling, I stumbled upon something that looked promising: Karabiner and Hammerspoon.\u003c/p\u003e\n\u003ch3 id=\"the-solution\"\u003eThe Solution\u003c/h3\u003e\n\u003cp\u003eSo what are Karabiner and Hammerspoon? \u003ca href=\"https://karabiner-elements.pqrs.org\"\u003eKarabiner\u003c/a\u003e is a system extension that creates a virtualized keyboard, essentially creating a software layer between your laptop keyboard and macOS. \u003ca href=\"https://www.hammerspoon.org\"\u003eHammerspoon\u003c/a\u003e is a system extension that allows you to automate macOS using a scripting language called lua, including what I was interested in: the keyboard.\u003c/p\u003e\n\u003cp\u003eAfter stumbling upon these two extensions on my own, I got pretty close to what I wanted, but then I found the icing on the cake: someone had already built something similar to what I wanted. \u003ca href=\"https://github.com/jasonrudolph/keyboard\"\u003eJason Rudolph\u0026rsquo;s keyboard\u003c/a\u003e repository on GitHub had a lot of similar functionality to what I wanted, so I could tweak what he already had to add some nice polish to my new software keyboard layer.\u003c/p\u003e\n\u003cp\u003eMy stripped down and extended version is published in my \u003ca href=\"https://github.com/mclaughj/dotfiles\"\u003edotfiles repo\u003c/a\u003e, with most of the functionality I\u0026rsquo;ve talked about here in \u003ca href=\"https://github.com/mclaughj/dotfiles/blob/main/hammerspoon/keyboard/fn-layer.lua\"\u003efn-layer.lua\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eNow whether I\u0026rsquo;m using a MiniVan or the built-in keyboard on my MacBook Pro, I have the same layered functionality on my keyboard, allowing me to switch between keyboards with much less cognative overhead and 100% fewer accidental caps-lock encounters.\u003c/p\u003e\n\u003cdiv class=\"footnotes\" role=\"doc-endnotes\"\u003e\n\u003chr\u003e\n\u003col\u003e\n\u003cli id=\"fn:1\"\u003e\n\u003cp\u003eFor the eagle-eyed: you\u0026rsquo;re right, it\u0026rsquo;s not a \u003cem\u003efull\u003c/em\u003e number row, it\u0026rsquo;s missing the dash and equals buttons due to the shortened width.\u0026#160;\u003ca href=\"#fnref:1\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli id=\"fn:2\"\u003e\n\u003cp\u003evim is a text editor that has an extremely passionate userbase and many different key mappings.\u0026#160;\u003ca href=\"#fnref:2\" class=\"footnote-backref\" role=\"doc-backlink\"\u003e\u0026#x21a9;\u0026#xfe0e;\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/div\u003e",
      "date_modified": "2021-12-06T00:00:00-07:00",
      "date_published": "2021-12-06T00:00:00-07:00",
      "id": "https://joemc.xyz/posts/hammerspoon/",
      "tags": [
        "post"
      ],
      "title": "Hammerspoon",
      "url": "https://joemc.xyz/posts/hammerspoon/"
    }
  ],
  "language": "en-us",
  "title": "joe mclaughlin",
  "version": "https://jsonfeed.org/version/1.1"
}