<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://seanmcloughl.in/feed.xml" rel="self" type="application/atom+xml" /><link href="https://seanmcloughl.in/" rel="alternate" type="text/html" /><updated>2026-03-01T14:36:56+00:00</updated><id>https://seanmcloughl.in/feed.xml</id><title type="html">Myopia to Clarity</title><subtitle>A blog for deciphering fuzzy thoughts. Written by Sean McLoughlin.</subtitle><author><name>Sean McLoughlin</name></author><entry><title type="html">When the machines win, what is gained and what is lost?</title><link href="https://seanmcloughl.in/when-the-machines-win-what-is-gained-and-what-is-lost/" rel="alternate" type="text/html" title="When the machines win, what is gained and what is lost?" /><published>2025-11-18T00:00:00+00:00</published><updated>2025-11-18T00:00:00+00:00</updated><id>https://seanmcloughl.in/when-the-machines-win-what-is-gained-and-what-is-lost</id><content type="html" xml:base="https://seanmcloughl.in/when-the-machines-win-what-is-gained-and-what-is-lost/"><![CDATA[<p>Yesterday, I finished watching DeepMind’s AlphaGo documentary. One of the things that stuck out to me about that documentary was how sad both Lee Sedol and the Korean people overall were that AlphaGo was able to win 4-1. The outpouring of emotion when Lee won game 4 was immense, in contrast to the silent melancholy that filled the press room after every other game.</p>

<p>There is something somber about seeing technology improve at something that we see as having a uniquely human element to it. Take the Luddites, for example. They were actively against labor automation technology to the point of physically destroying the machines. I don’t want to assume that I know all of the reasons that the Luddites did such a thing, but surely one of the reasons was that machines do not find meaning in the labor that they perform<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>.</p>

<p>And yet, the world today is arguably a better place in large part due to the automation of physical labor that machines have provided for us. Physical labor still exists, but we have machines that are able to assist us and make it easier – not entirely replace us. There may yet be a future where all physical labor is automated, but even with the incredible recent advancements of bipedal robots and drone swarms, it seems unlikely to me that <em>full</em> automation of all labor will happen anytime soon.</p>

<p>Take chess as another, more recent example. Chess has become incredibly popular since superhuman engines like Stockfish have came online<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup>, and neural network based engines have only improved on minimax algorithms like Stockfish. There are no humans that are able to beat these engines, but that does not mean that chess is a game that is not worth playing. On the contrary – people use these engines to optimize their own human play, and find new ways to enjoy the game.</p>

<p>I see AlphaGo and its successors similarly. Sure, it automates a process for us. But it can also be used as a tool for transcending and improving the human element of these tasks. The physical laborer can still find meaning in woodworking, whether they’re cutting the trees down from scratch or buying pre-cut lumber from a mill. And learning chess is now more scalable than ever – people can learn from chess engines where their mistakes were without having to get a human expert to analyze their games.</p>

<p>On the face of it, I can understand the despair that the Koreans had when seeing cold, lifeless AlphaGo defeat the greatest human player of their time. But in retrospect, Go has shared a similar fate to chess. Go surged in popularity since the AlphaGo/Lee Sedol tournament. The end of the documentary mentioned that there was a global shortage of Go boards after that competition. The game has more players than ever, especially in the West. Like chess, we can now use Go engines built with the same architecture AlphaGo to improve our own games. I know that personally, if it weren’t for AlphaGo, I might not have decided to try Go for myself. I am still a novice, but I find something beautiful and very enjoyable about the game.</p>

<hr />

<p>The AlphaGo/Lee Sedol tournament was back in 2016 – nearly a decade ago. And I’ve painted a very rosy picture of AI optimism with this story. But can we still paint such a picture with AI in 2025?</p>

<p>I fear not.</p>

<p>The modern internet is filled with swarms of bots run by LLMs, who are attempting to enrage people to increase platform engagement and to sell more ads. AI is used to optimize which ads you might click on, and to optimize engagement in vicious activities such as social media, porn, and gambling. They’re used to more easily find exploitative bugs in critical software and cause cyberattacks. They’ve caused a massive build out in data centers due to the insatiable demand of not only training smarter models, but also for fast inference for customers. This causes tension in communities where these data centers are built, and legitimate concerns are raised by those communities about the build out of this infrastructure<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">3</a></sup>.</p>

<p>That is not to say that contemporary AI technologies are not useful and that we need to revert to Luddism. I use LLMs like Claude multiple times a day for brainstorming and code generation. But the technology has diffused in such a way that it has made certain aspects of everyday life substantially worse. People are incentivized to release slop on the internet without any care for quality or correctness. It’s bullshit<sup id="fnref:4" role="doc-noteref"><a href="#fn:4" class="footnote" rel="footnote">4</a></sup> not in statements, but in output – there is no regard to the veracity, nor the quality of the output, because it is a profitable means of production as there is near-zero marginal cost.</p>

<p>This is not a commentary on the abilities of contemporary AI, or any moral or ethical concerns regarding the technology. It is a commentary on the negative cultural milieu we find ourselves in as these technologies become larger parts of our lives.</p>

<p>With AlphaGo, there was the naive depression of cold, calculating machines performing better than a human at something seen as uniquely human, followed by the hopeful realization that we can use these machines to transcend our limitations while maintaining our humanity. This is not present in contemporary AI. Our moment seems to be one of a hopeless anxiety as we see the unbelievable unchecked power of corporations being wielded to further push people into vicious cycles. Instead of transcending the human element of the things that provide us meaning, we transcend how much garbage we can consume while our meaning is stripped in the process. This is antithetical to the good life.</p>

<p>I want to go back to the world of hope that we had in 2016. It was easy to see how the naive fear of the machine could be combated with a positive, transcendental vision of the future. But in our current moment, the power dynamics at play deny me from seeing such a future.</p>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>There are likely many reasons why the Luddites disliked machines removing them from their jobs. One of the strongest ones is likely that they would no longer have a wage to live on. However, I don’t think it’s wise to downplay the loss of meaning that work provided for them, either. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:2" role="doc-endnote">
      <p>Along with other reasons, such as the COVID-19 pandemic providing free time, <em>The Queen’s Gambit</em> on Netflix, Twitch streamers, and r/anarchychess memes. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:3" role="doc-endnote">
      <p>Note that there is a lot of unfounded FUD in local communities that have bids for building data centers in them. That does not mean that all fears that are brought up by local communities are unfounded. <a href="#fnref:3" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:4" role="doc-endnote">
      <p>In the philosophical sense of <em>On Bullshit</em> by Harry G. Frankfurt. <a href="#fnref:4" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Sean McLoughlin</name></author><summary type="html"><![CDATA[Yesterday, I finished watching DeepMind’s AlphaGo documentary. One of the things that stuck out to me about that documentary was how sad both Lee Sedol and the Korean people overall were that AlphaGo was able to win 4-1. The outpouring of emotion when Lee won game 4 was immense, in contrast to the silent melancholy that filled the press room after every other game.]]></summary></entry><entry><title type="html">A book annotation system that works</title><link href="https://seanmcloughl.in/a-book-annotation-system-that-works/" rel="alternate" type="text/html" title="A book annotation system that works" /><published>2025-08-21T00:00:00+00:00</published><updated>2025-08-21T00:00:00+00:00</updated><id>https://seanmcloughl.in/a-book-annotation-system-that-works</id><content type="html" xml:base="https://seanmcloughl.in/a-book-annotation-system-that-works/"><![CDATA[<p>I’ve gone back and forth on my preferred reading medium over the years, between physical books and e-books. Surely, you can imagine the pros and cons of each medium at face-value. I find that both mediums have their place, depending on the situation. I prefer fiction to be a physical book, because I want to relax and unwind to a story without LEDs beaming into my eyes. For large works, an e-book works well for its portability and weight. However, I think that neither medium has fully solved my problems with annotations.</p>

<p>A reading setup that supports annotations well has follow two traits: <strong>persistence</strong>, and <strong>editability.</strong></p>

<p>Physical books are persistent because a physical copy persists – it will remain on my bookshelf for as long as I wish to keep it there. However, they are not editable. After I annotate on the physical book, I cannot remove the annotation (cleanly, at least). My only options are to write with a pencil and smudge out errors with an eraser (this doesn’t work), or to buy a new physical copy (this is cost-prohibitive).</p>

<p>On the other hand, e-books (as most people use them) provide editability in that you are able to remove annotations after they’re added. But they do not provide persistence because most people purchase and read e-books in a vendor locked application, such as Kindle or Apple iBooks. This denies you the ability to export your .epub files with annotations.<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup></p>

<p>I host a Calibre e-book library. This is how I use it:</p>

<ol>
  <li>Host a golden copy of an e-book with a Calibre server.</li>
  <li>Download a copy of that e-book from the server on the device they want to read on.</li>
  <li>Read the e-book on that device with whatever software they prefer.</li>
</ol>

<p>But because you’re reading a copy, this setup is still not persistent, as annotations are not synced back to Calibre. Sure, you could re-upload the book with annotations to Calibre, but this is a layer of friction I’d like to avoid. This requires me to use something like Tailscale to access the network my NAS lives on if I’m away from home, in contrast to the simplicity of just syncing with “The Cloud.” This also overwrites your golden copy. What if you want to share this book with friends or family, but not the annotations on that book?</p>

<p>This has led me to my current annotation work-flow which, while not fancy, is both persistent and editable:</p>

<ol>
  <li>Read with whichever medium you want.</li>
  <li>If you want to annotate something, you have to rewrite the annotation word-for-word in a note, citing the work.</li>
</ol>

<p>This is persistent so long as I save my notes. It is editable because I can delete the annotation if I choose to without damaging the source material. And, crucially, it does not tie the annotation to the medium, meaning that syncing your annotations back to the server hosting the golden copy is no longer a problem that needs solving.</p>

<p>There’s an argument to be made that this is actually the best approach, because the act of rewriting is a way to think harder about the annotated text. I mostly agree with this, but there is friction if I am reading something on a tablet or my phone that I want annotated. Dictation software has gotten so good these days, though, that dictating the annotation into my note is relatively quick and easy.</p>

<p>It’s not a great technical achievement, but it gets the job done.</p>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>If you purchased the e-book from these vendors, it’s not even likely you’ll be able to export the file. If you can, it will be locked with DRM, so you cannot read it outside of applications like Adobe Digital Editions. You should purchase your e-books from vendors that sell DRM-free e-books, like ebooks.com. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Sean McLoughlin</name></author><summary type="html"><![CDATA[I’ve gone back and forth on my preferred reading medium over the years, between physical books and e-books. Surely, you can imagine the pros and cons of each medium at face-value. I find that both mediums have their place, depending on the situation. I prefer fiction to be a physical book, because I want to relax and unwind to a story without LEDs beaming into my eyes. For large works, an e-book works well for its portability and weight. However, I think that neither medium has fully solved my problems with annotations.]]></summary></entry><entry><title type="html">An x words/day habit optimizes for output, not quality</title><link href="https://seanmcloughl.in/an-x-wordsday-habit-optimizes-for-output-not-quality/" rel="alternate" type="text/html" title="An x words/day habit optimizes for output, not quality" /><published>2025-08-17T00:00:00+00:00</published><updated>2025-08-17T00:00:00+00:00</updated><id>https://seanmcloughl.in/an-x-wordsday-habit-optimizes-for-output-not-quality</id><content type="html" xml:base="https://seanmcloughl.in/an-x-wordsday-habit-optimizes-for-output-not-quality/"><![CDATA[<p>Today I learned about the <a href="https://www.inkhaven.blog/">Inkhaven Residency</a><sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup> which is currently accepting applications. During the residency, you are tasked with writing a new blog post every day. I thought that it might be interesting to apply for it, even if it does not make sense given my time and financial constraints. So I clicked on the application form. Of course, the application asks for you to submit 1-5 pieces of writing that you’re proud of.</p>

<p>This made me realize that I’m not actually proud of anything that I’ve written. Why is that? I’ve written some essays and shared them with people in the past, and they’ve often been well-received. If they’ve not been well-received, they’ve sparked good debate and conversation with those that I share it with. This signals to me that there’s some value in my writing.</p>

<p>No, I think that I don’t have writing that I’m proud of because I haven’t put in much effort into the things that I’ve written. For most of the things that I write, I just sit down for an hour and flesh out a thought from earlier that I wrote down, tagging it as a #writingIdea in my Obsidian vault. Once I’m done, I do a once-over of the article, publish it, and share it on unpopular social media feeds, as well as with circles of friends that I think care to read my writing.</p>

<p>If I want to feel pride in my writing, I have to actually put some effort into it. I feel pride in my abilities – whether they be physical, artistic, technical, or whatever –<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup> because I can observe that the effort that I put into those activities pays off in enabling me to perform better.</p>

<p>If I want to feel proud about my writing, I need to actually put effort into my writing. There are two actions that I think I should take if I want to make work that I’m proud of:</p>

<ol>
  <li><em>Publish</em> some short-ish piece every day.</li>
  <li>Along with the published work, work on a longer piece that you’ve put more thought into.</li>
</ol>

<p>This is in contrast to a goal I had previously set for myself about journaling 750 words every day. Journaling some number of words a day is a good way to get yourself into the habit of writing, but it quickly degrades your writing quality into a sloppy commodity. I gave myself the goal to journal 750 words every day for the first six months of 2023, and I found that my writing quality quickly fell into a stream-of-consciousness text about mundane things that happened throughout my day. Understandably, not everything you write is going to be deep philosophical prose, but neither you nor the world benefits from small talk with yourself saved on a local text file.</p>

<p>This is why I emphasized the word <em>publish</em>. Creating a habit of putting work out there for the world to see create incentives to fix some of the problems that I listed above. Out of a fear of an audience, you’re more likely to write for others as opposed to yourself. You’re also more likely to figure out a topic to write about that will intrigue others. Both of these things translate into honing your skills for creating the longer pieces that you want to be proud of.</p>

<p>Publishing every day also makes it more likely to gain a following in algorithmic feeds. However, blogging popularity is only a secondary goal of mine, if I can even call it a goal. I would rather have unpopular work that takes time and I’m proud of instead of creating popular slop.</p>

<p>Is this a goal that I can realistically achieve? I think it’s a stretch. I haven’t written as much as I did a few months ago because I feel as though I’m running out of interesting ideas. There are also other things in my life that are vying for my attention, including work, relationships, and other hobbies and projects.</p>

<p>But I’m not going to be proud of my writing unless I put some effort into it. Maybe, if I’m able to make it a habit, I could successfully apply to something like Inkhaven in the future.</p>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>It is not really a residency in the traditional sense. You’re paying to attend. Therefore, it is really more of a retreat. This is a clarification and not a criticism. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:2" role="doc-endnote">
      <p>I started using em-dashes before LLMs were overfit with them, and I have no intention of stopping now. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Sean McLoughlin</name></author><summary type="html"><![CDATA[Today I learned about the Inkhaven Residency1 which is currently accepting applications. During the residency, you are tasked with writing a new blog post every day. I thought that it might be interesting to apply for it, even if it does not make sense given my time and financial constraints. So I clicked on the application form. Of course, the application asks for you to submit 1-5 pieces of writing that you’re proud of. It is not really a residency in the traditional sense. You’re paying to attend. Therefore, it is really more of a retreat. This is a clarification and not a criticism. &#8617;]]></summary></entry><entry><title type="html">Posting about cringe</title><link href="https://seanmcloughl.in/posting-about-cringe/" rel="alternate" type="text/html" title="Posting about cringe" /><published>2025-07-27T00:00:00+00:00</published><updated>2025-07-27T00:00:00+00:00</updated><id>https://seanmcloughl.in/posting-about-cringe</id><content type="html" xml:base="https://seanmcloughl.in/posting-about-cringe/"><![CDATA[<p>I remember telling myself when I was younger “When I get older, I hope I don’t become the kind of person who enjoys <em>this thing that I currently don’t like.</em>” Some examples of what I mean by this, throughout the years, are:</p>

<ul>
  <li>When I was a kid, I thought Pokémon and anime were things that only super nerds were interested in. I didn’t want to be a super nerd – a regular nerd was as far as I was willing to go in order to sow reasonable doubt that I was still “cool.”</li>
  <li>When I was a teenager, I thought that spending hours cooking, or drawing, or just making anything was a waste of time, because I could otherwise be spending that time doing things that I enjoyed at the time, like playing video games.</li>
  <li>Also as a teenager, I thought cardio exercise was lame because it was boring, took a long time, hurt my lungs, and drained the energy that I could otherwise use for strength training.</li>
</ul>

<p>Not only did I think that these things were cringe, but I thought that the people who found joy in these things were cringe. This made me unreceptive to trying new things out of fear of how others may perceive me, and it also made me have contempt for anyone who actively participated in these activities.</p>

<p>This is a miserable way to live! It creates an incurious person whose hatred for the world only reinforces his reclusive impulses. The instinct probably stems from the psychological behavior of edgy teenagers who are desperate to be a part of in-groups while constantly creating their own out-groups that only exist in their head.</p>

<p>I’ve seen several videos on YouTube where teenagers apply to MIT with a <a href="https://www.youtube.com/watch?v=EJtl-fRrP3k">“makers portfolio” video</a>, showcasing all of the things that they’ve worked on and created in their spare time. There is so much energy and happiness in these young people. What was stopping me from doing something like that at their age? I believe that one of the (many) reasons I did not end up like this was that I was stuck in this negative mindset for much of my young adult life. I lived in fear of how others may perceive me, which sapped me of the initiative of being curious and trying new things.</p>

<p>Some advice I would give about this topic: Don’t cringe at what others enjoy. Instead, be curious about it and see if you too can find out why these things bring other people so much joy. Obsessing over how others will react to you is not a life worth living. You should instead find as many ways as you can to insert joy into your life.</p>

<p>This advice applies not only to young people who are entrenched in the edgy teen mindset, but also older people who are struggling to find meaning and happiness in their everyday lives.</p>

<p>The person who is able to find enjoyment in all the nooks and crannies of life is a person that I want to be around. It is also the kind of person that I aspire to be.</p>]]></content><author><name>Sean McLoughlin</name></author><summary type="html"><![CDATA[I remember telling myself when I was younger “When I get older, I hope I don’t become the kind of person who enjoys this thing that I currently don’t like.” Some examples of what I mean by this, throughout the years, are:]]></summary></entry><entry><title type="html">Book Review - Abundance</title><link href="https://seanmcloughl.in/book-review-abundance/" rel="alternate" type="text/html" title="Book Review - Abundance" /><published>2025-03-23T00:00:00+00:00</published><updated>2025-03-23T00:00:00+00:00</updated><id>https://seanmcloughl.in/book-review-abundance</id><content type="html" xml:base="https://seanmcloughl.in/book-review-abundance/"><![CDATA[<h3 id="a-sermon-to-the-choir-while-the-sinners-stayed-home">A sermon to the choir, while the sinners stayed home.</h3>

<p><a href="https://en.wikipedia.org/wiki/Abundance_(Klein_and_Thompson_book)"><em>Abundance</em> by Ezra Klein and Derek Thompson</a> recently came out and the blogosphere that I tend to inhabit has had nothing but praise for it. My wait for it on <a href="https://libbyapp.com/">Libby</a> has simply been listed as a “several weeks wait” with no explicit time line due to the high demand for it. Thankfully, Spotify Premium comes with it as an audiobook, so I’ve been listening to it over the past few days during chores and exercise.</p>

<p>As stated in the text, the book is meant to convince already left-leaning people to subscribe to a political policy of abundance and supply increase. I will state that, before reading this book, I already agreed with all of these things. I think that industrial policy is something that the federal government ought to work towards, I think that focusing on growth instead of de-growth is a more realistic and better long-term solution to society’s problems, etc. In that sense, this book was largely an exercise in preaching to the choir for me. So I don’t think it was a book meant for me. That doesn’t mean the book was bad, though.</p>

<p>I think I should put myself in the shoes of other left-leaning people in order to understand if this book wins hearts and minds. If I were a contemporary progressive living in a blue city who thinks that the status quo ought to continue, what would I think of this book? Unfortunately, I don’t think that this book would convince me to change my beliefs.</p>

<p>Much of the argumentation in this book is an appeal to history, stating that we need to repeat the “good parts” and avoid the “bad parts.” For example, it was good that the US was capable of building so much under the New Deal. It was good that Operation Warp Speed was successful. It was bad that the NIH stifled Karako with regards to grant money for studying mRNA, even though mRNA research ultimately lead to COVID vaccines. The Reagan Administration was, overall, bad. etc. The problem I have with this analysis is that the authors have to argue why their good things are good and why their bad things are bad. This book mostly did this through story telling of scientific and technological progress, creating a narrative about outcomes instead of processes. But what the authors did <em>not</em> do was explain why readers should care about <em>their</em> good things instead of <em>your</em> good things. For example, why should a reader who is politically engaged only due to IdPol care about policies affecting housing? Or scientific progress?</p>

<p>Another criticism that I have with the book is that it largely overlooks actual policy ideas. Again, this was stated in the book as they didn’t want to tie themselves to any specific policy implementation, but it frustrated me because the devil is in the details when it comes to getting things done. For example, a care a lot about making housing cheap and affordable, but I also think that urban sprawl is incredibly bad for society. You could remote urban growth boundaries of different cities to build massive amounts of housing, but it would have a lot of other negative effects. So what is a policy that lets us get the best of both worlds – urban development that minimizes the requirements for car ownership without breaking the bank due to land value being higher in already built-up areas? If our goal is to simply build as much as we can while minimizing regulation, then UGBs sound like they should be thrown out the window. We’re just trading one problem (high housing costs) for another (increased sprawl and car dependence). This book did not reconcile this problem, and I’m sure there are many other problems that would arise if you simply take the perspective of “build things, externalities be damned.”</p>

<p>Overall, I think that this book is a step in the right direction for defining a politics that could define the late 2020s to early 2030s for the left-of-center. I think that it is better than contemporary left-of-center politics, both from the perspective of the outcomes that I think it’d lead to, along with its incessant positivity leading to a much more mentally-healthy public. But I worry that those who need to understand this message the most in positions of power – the Democratic Party establishment at the federal level, and the Progressive movement in blue states and cities – will not. My main hope is that this book acts as another piece of momentum to bring to these two groups in order to enact more meaningful political change.</p>

<p>If you already agree with much of what Ezra and Derek write about, this book will be like you’re the choir being preached to. But if you’re anyone else, I’m not sure this book will convince you of anything – you’re the sinner who stayed home on Sunday.</p>

<p>🦋 <a href="https://bsky.app/profile/seanmcloughl.in/post/3ll2yflgee222">Discuss on Bluesky</a></p>]]></content><author><name>Sean McLoughlin</name></author><summary type="html"><![CDATA[A sermon for the choir, while the sinners stayed home.]]></summary></entry><entry><title type="html">Introducing DigiSurf</title><link href="https://seanmcloughl.in/introducing-digisurf/" rel="alternate" type="text/html" title="Introducing DigiSurf" /><published>2025-03-17T00:00:00+00:00</published><updated>2025-03-17T00:00:00+00:00</updated><id>https://seanmcloughl.in/introducing-digisurf</id><content type="html" xml:base="https://seanmcloughl.in/introducing-digisurf/"><![CDATA[<p><img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/seanmcloughlin/bafkreicpik3qlldsuoojcjms3exjji2ob3diwxinfjvtichku57m5o5kre.webp" alt="bafkreicpik3qlldsuoojcjms3exjji2ob3diwxinfjvtichku57m5o5kre" /></p>

<p>I haven’t written much in the past month. That’s mostly due to me using my daily writing time as daily coding time for a terminal user-interface app I’m releasing in alpha today: <a href="https://github.com/SeanMcLoughlin/digisurf">DigiSurf</a> . For the past month, I’ve been using Claude to write much of this code base.</p>

<p align="center">
  <img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/seanmcloughlin/meme.webp" />
</p>

<h2 id="why">Why?</h2>

<p>I work in the semiconductor industry in an HPC environment which requires me to SSH into a more powerful computer. I sometimes need to launch GUIs on the machine I’ve SSH’d into, which requires me to use a VNC viewer. VNCs are inherently slow, so I want to avoid them as much as I possibly can by doing most of my work in a terminal. This is what made me interested in terminal user-interfaces, or TUIs. They may not have all of the bells and whistles of a full-blown GUI, but if a TUI can do 95% of what a GUI can, then using a TUI can save me many headaches over a long period of time.</p>

<p>One of the common GUIs I need to use is <a href="https://www.synopsys.com/verification/debug/verdi.html">Synopsys’ Verdi waveform viewer</a> (props to Synopsys’ marketing team for providing zero screenshots of what this tool looks like). It has way more features than I need if I want to quickly view a few signals in a waveform. So if I’m trying to debug a few signals quickly, doing this via a TUI would be far more useful.</p>

<h2 id="coding-with-claude">Coding with Claude</h2>

<p>I’ve had the idea for a waveform viewer TUI in the back of my mind for many years now – well before the advent of AI copilot coding. Since Claude has gotten so good at generating code, and libraries like <a href="https://ratatui.rs/">ratatui</a> have matured over the past few years, I thought I’d give it a shot and see what I could make. If it worked out, I’d have a new tool I could use during my day job. If not, I spent only a few dollars in credits.</p>

<p>It started with <a href="https://x.com/karpathy/status/1886192184808149383">vibe coding</a>, a term that is firmly embedded into the zeitgeist at this point. Claude was able to make a really good, basic prototype over the course of a few hours. The entire code base was &lt;20k tokens, so I wasn’t rate-limited by Anthropic. It felt like I was coding at the speed of thought and nothing was slowing me down. I was in a state of flow akin to how I’ve felt playing Factorio.</p>

<p>Slowly but surely, things started to get more complicated. System complexity rose. The code base grew beyond 20k tokens so I couldn’t upload the whole code base immediately into a new chat with Claude every time I had a new feature or bug I wanted it to fix. I began to think of more and more features that I wanted to add. While my pace of development did slow down due to all of this, it still far outpaced what it’d be if I was writing the code myself.</p>

<p>I learned how to more effectively use Claude by compartmentalizing my code into small pieces that could fit into a single API request. This was beneficial not just for using Claude, but also for separation of responsibilities, as well as the readability of the code. With Claude 3.7, I could ask Claude to write a bunch of unit tests for a large file, get up to start making some tea, and come back to finished code that I got to review. I had to train myself to be meticulous with reviewing Claude’s edits, as Claude sometimes tried to cheat unit tests by hard-coding answers into the source code.</p>

<p>Paired with <a href="https://zed.dev/blog/zed-ai-billing">Zed’s $10/mo of credits for Claude</a>, as well as my own Anthropic API key, I’ve only spent ~$10 in API credits out of pocket to get to the point of releasing DigiSurf in alpha. This is also with very liberal usage of Claude – I’m sure there are ways I could have minimized my usage to get the same result in the same amount of time. I think that this was $10 well-spent, even just for the learning opportunity of building an app from scratch with an AI copilot.</p>

<h2 id="whats-next">What’s next</h2>

<p>I’ve still got tons of features I want to add to DigiSurf, and I’m sure there are bugs that I’ve missed. I hope to get to a 1.0 full release sometime in the near future. I’m going to keep adding the features I’ve got in mind today, hopefully avoiding the dreaded “feature creep,” fixing bugs along the way, and try to use DigiSurf in an FPGA project on the side to see if there’s anything more I’d like to add.</p>

<p>Please give DigiSurf a try and let me know what you think.</p>]]></content><author><name>Sean McLoughlin</name></author><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">Re: Have you ever seen a goth downtown?</title><link href="https://seanmcloughl.in/re-have-you-ever-seen-a-goth-downtown/" rel="alternate" type="text/html" title="Re: Have you ever seen a goth downtown?" /><published>2025-02-18T00:00:00+00:00</published><updated>2025-02-18T00:00:00+00:00</updated><id>https://seanmcloughl.in/re-have-you-ever-seen-a-goth-downtown</id><content type="html" xml:base="https://seanmcloughl.in/re-have-you-ever-seen-a-goth-downtown/"><![CDATA[<p>I read <a href="https://danco.substack.com/p/have-you-ever-seen-a-goth-downtown">this</a> article this morning. It discusses how while many people see cities as enabling a large amount of different cultures, they actually have quite a constrained Overton Window of culture where people are expected to conform to some sub-group. For example, punk is for normies now, and the only thing deciding the fashion statements you make in what you wear is the money you throw at Balenciaga as opposed to your own fashion sense.</p>

<p>I think that this argument is mostly correct. It has to do with the fact that cities have large cohorts of young individuals who want to create their own identity, but they are inexperienced and unconfident, so they end up pigeonholing into already-existing cultures that claim that they’re avant-garde or counter-culture or whatever.</p>

<p>However, the article also makes the claim that smaller towns, suburbs, or less well-known places are actually more culturally diverse than cities in that they don’t constrain the cultural Overton window in all dimensions. They constrain them harder in certain dimensions, but there are areas that truly unique counter-cultures are capable of breaking out of. They claim that goths are almost always seen in suburbia as opposed to cities as an anecdote for their claim.</p>

<p>I don’t think I agree with this claim, and I definitely don’t agree with the anecdote about goths. Statistically speaking, you’re far more likely to see goths in cities as opposed to suburbia simply because you <em>see</em> orders of magnitude more people in cities compared to suburbia due to cities having a higher population density, paired with more frequent in-person encounters in places like parks, walking on the street, or on public transit.</p>

<p>I don’t think that the author is referring to small towns like stoplight towns in the middle of nowhere. I think they’re referring to cities that are not as well-known and without large populations of young people, like Cincinnati OH or Billings MN. I think that there are far more variables at play that the author isn’t considering.</p>

<p>I don’t see most of the people who enter “normie counterculture” cultures as trailblazers. I also don’t think they see themselves as trailblazers. They’re not <em>looking</em> to create something unique or new. Even if they had the confidence to do so, they don’t have the inspiration or will to try that new look, that new sound, that new taste. While cities may be considered the melting pot of cultures and ideas that push the zeitgeist forward, they’re also overwhelmingly full of free-riders – people who want to go to cultural Disneyland, but not put forth any effort to push a cultural idea forward.</p>

<p>If I am to give some credence to the author’s opinion here, it would be that smaller cities don’t have nearly as large of a free-rider problem as world cities like NYC or LA or whatever. This makes sense – no one who is looking for a cultural melting pot is going to move to Cincinnati. However, creatives who find themselves in a place like Cincinnati are <em>not</em> going to be free-riders, and are actually going to be interested in pushing creative ideas forward.</p>

<p>Cultural free riders can’t be the only piece of the puzzle, though. The author talks about bands that play in Montreal and Toronto having similar sounds, but no-name bands from no-name towns create unique sounds that break the mold. These bands aren’t free-riders – they’re actively contributing to culture by making art. So why do the top-tier bands ossify into a sound while the no-name bands don’t? Well, I think the answer is in the classification I just provided to these two types of bands. The bands playing for big audiences in big cities already have a name for themselves. Their audiences expect a certain sound, so it’s in their best interest to ossify. The no-name bands are searching for a sound that makes them unique, and they haven’t hit it big yet. This isn’t a novel idea. The music industry constantly looks for new up-and-comers because their sound is unique and intriguing. Then, if a band makes it big, they end up producing the same stuff until their career is over. If you’re touring in big cities, you’ve already made a name for yourself – you’re not avant garde.</p>

<p>I’m out of my allotted writing time for the day, but my overarching thought is that there are many possible answers to this problem other than “large cities constrain culture to an point, while smaller cities push certain cultural dimensions.” There are dozens of different lenses you can use to find possible answers to this question – identity politics, financial incentives, biases towards already-existing culture, and surely the internet as a medium to proliferate ideas outside of physical cities plays a big role, too.</p>]]></content><author><name>Sean McLoughlin</name></author><summary type="html"><![CDATA[I read this article this morning. It discusses how while many people see cities as enabling a large amount of different cultures, they actually have quite a constrained Overton Window of culture where people are expected to conform to some sub-group. For example, punk is for normies now, and the only thing deciding the fashion statements you make in what you wear is the money you throw at Balenciaga as opposed to your own fashion sense.]]></summary></entry><entry><title type="html">Data quality matters</title><link href="https://seanmcloughl.in/data-quality-matters/" rel="alternate" type="text/html" title="Data quality matters" /><published>2025-02-06T00:00:00+00:00</published><updated>2025-02-06T00:00:00+00:00</updated><id>https://seanmcloughl.in/data-quality-matters</id><content type="html" xml:base="https://seanmcloughl.in/data-quality-matters/"><![CDATA[<p>I was reading yesterday on HN: <a href="https://news.ycombinator.com/item?id=42958474">Subway crime plummets as ridership jumps significantly in congestion pricing era</a>. The facts: there were 147 reported crimes on NYC’s subway in a month after congestion pricing was implemented in Manhattan, which is lower than it has been in previous months. However, the top two comments interpret this fact differently:</p>

<ol>
  <li><a href="https://news.ycombinator.com/item?id=42958519">This number is very small given MTA ridership.</a> Media coverage of crime on public transit is overblown. TL;DR: Cities are livable.</li>
  <li><a href="https://news.ycombinator.com/item?id=42958769">This number is likely wrong given that crime is often underreported</a>, as well as personal experience of crimes observed on public transit. TL;DR: Cities are unlivable.</li>
</ol>

<p>Some of my preliminary beliefs (note that I no longer live in any of the cities mentioned below):</p>

<ul>
  <li>Out of all light rail public transit systems in the United States, NYC’s subway <em>feels like</em> the safest per capita (I don’t know if it actually is). This is in contrast to things like the BART or Portland’s MAX.</li>
  <li>The vast majority of crime goes unreported. This is a non-exhaustive list for the factors that I see:
    <ul>
      <li>Cops aren’t actually present when crime happens.</li>
      <li>Citizens lack faith in the justice system to close on the problem.</li>
      <li>Paired with a lack of faith, contacting law enforcement takes too much time. 911 holds, having to make a statement for cops, etc. If people think that the process of reporting won’t lead to a good outcome, they won’t waste their time on it. And the amount of time to report crime is non-negligible.</li>
      <li>A population with a tendency towards libertarianism, and a fear of retaliation against criticism, has no collective power to stop anti-social behavior (e.g. playing music out loud on public transit. Let the guy continue doing it? Tell him off and get no response? Tell the cops and get laughed at? Throw his phone out the door and get shanked or arrested?). Our population is jaded by bad actors, so people have learned that the only way to survive is to blot them out as opposed to expect authority or any collective of citizens to solve the problem.</li>
    </ul>
  </li>
  <li>An increase in population density should decrease crime per-capita. As Jane Jacobs would say, there will be more “eyes on the street” to prevent such behavior.
    <ul>
      <li>I tend to think that there is a bell curve of density on the X axis and crime per capita on the Y axis, where once you reach some critical density, the amount of crime per-capita begins to drop (although I don’t think it drops to zero).</li>
    </ul>
  </li>
  <li>I would feel (and have felt) safe on NYC’s subway system. I have felt safe in that I don’t expect to be the victim of, or witness of a violent crime. But I also feel safe in that I don’t often expect to witness anti-social, irrational, or degenerate behavior by other riders like playing music on a speaker, muttering incoherent and angry statements to themselves, or relieving themselves in the corner<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>. I might not feel this way if, say, I’m waiting on a platform in outer Harlem or Queens at 2am. But if I’m riding in Manhattan anywhere between 6am and 8pm, I feel safe.</li>
  <li>I wouldn’t define any major public transit system in the United States as “livable.” NYC’s subway is the most livable out of all of them given its efficiency compared to other cities. But crimes still happen on the trains, there are still gross smells all throughout the underground, and the subway tiled environment isn’t a pleasant one. We can, and should, do better.</li>
</ul>

<p>I think many people expect more from public transit in this country, and they rightfully should. At the same time, there are many people who look at certain statistics, assume that they’re infallible, and come to conclusions that don’t reflect the peoples’ lived experience. This amounts to those people burying their heads in the sand, claiming that they know a truth that could be built on lies.</p>

<p>There is a point at which you have to simply trust a data source as correct. We can’t be critical of every source of info that we’re using to discern truth – that way lies flat-earthism and vaccine skepticism. I’m not suggesting that we actively look for problems in how the data were created. I’m suggesting that we at least try to understand the ways that our data is collected as opposed to assuming that they reflect reality. Through that understanding, we can provide rational critiques on how to collect data better.</p>

<p>Statistics matter, because without them, we’ll all be living off of vibes which leads to horrible outcomes like the most recent US election. However, it isn’t wrong to understand and criticize how data are collected. You <em>ought</em> to try and understand how they’re collected, and note any problems with the process. Data analysis is how we collectively discern truth in an emotionally discharged way. If the dataset is tainted, then the data won’t be the finger pointing at the moon – it will be pointing at nothing.</p>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>Yes, I know these things <em>do</em> happen on NYC’s subway. My perception is that they happen much more infrequently than the BART or the MAX. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Sean McLoughlin</name></author><summary type="html"><![CDATA[I was reading yesterday on HN: Subway crime plummets as ridership jumps significantly in congestion pricing era. The facts: there were 147 reported crimes on NYC’s subway in a month after congestion pricing was implemented in Manhattan, which is lower than it has been in previous months. However, the top two comments interpret this fact differently:]]></summary></entry><entry><title type="html">3D modeling with LLMs as a CAD luddite</title><link href="https://seanmcloughl.in/3d-modeling-with-llms-as-a-cad-luddite/" rel="alternate" type="text/html" title="3D modeling with LLMs as a CAD luddite" /><published>2025-01-02T00:00:00+00:00</published><updated>2025-01-02T00:00:00+00:00</updated><id>https://seanmcloughl.in/3d-modeling-with-llms-as-a-cad-luddite</id><content type="html" xml:base="https://seanmcloughl.in/3d-modeling-with-llms-as-a-cad-luddite/"><![CDATA[<p>With the desire to make a Christmas ornament present for my wife, the inspiration provided by <a href="https://old.reddit.com/r/ClaudeAI/comments/1hf4d7k/claudes_really_useful_for_quick_3d_printing_files/">this post</a> on the r/ClaudeAI subreddit, and because I haven’t touched my 3D printer in years, I decided to use Claude to generate a 3D model that I would be able to 3D print. How hard could it be?</p>

<p>TL;DR: As is the case for most things with current SOTA LLMs, it can do relatively basic stuff <em>really</em> well. It takes some iteration, but as someone who has had a very hard time doing even the most basic 3D modeling, using LLMs to make stuff for me has been a huge unlock in terms of what I’m capable of making. But when you start trying to make more complex designs, it starts to make illegible mistakes – similar to current SOTA LLMs in large codebases.</p>

<h1 id="the-goal">The goal</h1>

<p>My goal was to make a jingle bell to place a Pandora charm in as a gift, and place the bell on a Christmas tree so that she’d have to search for the new ornament to get the gift. Something like this:</p>

<p><img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/seanmcloughlin/pasted-image-20250102113847.webp" alt="Pasted image 20250102113847.png" /></p>

<p>It’s just a sphere with some cut outs in it. Claude 3.6 Sonnet ought to be able to do this.</p>

<p>I ask Claude to output <a href="https://openscad.org/">OpenSCAD</a> format. From their about page:</p>

<blockquote>
  <p>OpenSCAD is not an interactive modeller. Instead it is something like a 3D-compiler that reads in a script file that describes the object and renders the 3D model from this script file. This gives you (the designer) full control over the modelling process and enables you to easily change any step in the modelling process or make designs that are defined by configurable parameters.</p>
</blockquote>

<p>Compared to asking Claude to output an STL file for me outright, this SCAD format is perfect as it is a short, parametrizable script. Being able to use variables and methods lets you make minor tweaks to the things that the LLM breaks. And, when you’re done, the SCAD file can be rendered, dumped to an STL file, sliced in <a href="https://ultimaker.com/software/ultimaker-cura/">Cura</a>, and printed.</p>

<h1 id="the-process">The process</h1>

<p>Throughout this post I’m going to share Claude’s output as the SCAD model rendered. In reality, it outputs SCAD as text, which I had to copy-paste into OpenSCAD and then render it.</p>

<p>How well does Claude do with a one-shot prompt?</p>

<blockquote>
  <p>Me: Create a Christmas jingle bell model in OpenSCAD.</p>

  <p>Claude: <img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/seanmcloughlin/pasted-image-20250102114752.webp" alt="Pasted image 20250102114752" /></p>
</blockquote>

<p>Well, it’s very basic and the mounting loop is off by 90º. But I think Claude can fix this.</p>

<blockquote>
  <p>Me: The mounting loop ought to be rotated 90 degrees.</p>

  <p>Claude:<img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/seanmcloughlin/pasted-image-20250102114857.webp" alt="Pasted image 20250102114857" /></p>
</blockquote>

<p>Better, but not aligned. This is where a choice arises – I know how to fix this in the SCAD file that Claude output. But Claude already has the code that it wrote in its own context. I now have two options:</p>

<ol>
  <li>Fix the code myself, upload it to Claude, and tell it to continue adding features</li>
  <li>Prompt Claude to fix it itself, possibly in a more convoluted way than I want.</li>
</ol>

<p>In this case, I went with option 2. However, in the future, I think that I’m going to use option 1 for a few reasons:</p>
<ul>
  <li>It can be faster if you know what the exact problem is, or if you want to mess with a few numbers manually to see how it affects the design.</li>
  <li>You reach your inference limit with Claude faster when you have longer chats, so splitting up the chat into separate chats can help prevent that.</li>
</ul>

<p>Let’s continue.</p>

<blockquote>
  <p>Me: The mounting loop isn’t centered. Translate it so it is. And remove the hole in the top of the sphere.</p>

  <p>Claude: <img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/seanmcloughlin/pasted-image-20250102120441.webp" alt="Pasted image 20250102120441" /></p>
</blockquote>

<blockquote>
  <p>Me: You translated the loop the wrong way.</p>

  <p>Claude: <img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/seanmcloughlin/pasted-image-20250102120508.webp" alt="Pasted image 20250102120508" /></p>
</blockquote>

<blockquote>
  <p>Me: Okay, looks good. Can you add some slits in the bottom like a jingle bell would have?</p>

  <p>Claude: <img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/seanmcloughlin/pasted-image-20250102120536.webp" alt="Pasted image 20250102120536" /></p>
</blockquote>

<p>In this step, Claude also rendered an internal ball to make the bell functionally work. I don’t want that so that 3D printing functionally works.</p>

<blockquote>
  <p>Me: I don’t need that many slits. 4 slits will do. I also don’t want an internal ball.</p>

  <p>Claude: <img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/seanmcloughlin/pasted-image-20250102120652.webp" alt="Pasted image 20250102120652" /></p>
</blockquote>

<p>This is really good so far. In order to remove any scaffolding placed inside of the ball to aid in printing, I needed a hole in the bottom that I could pry it out of. After several iterations with Claude, this is what it ended up with:</p>

<p><img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/seanmcloughlin/pasted-image-20250102120852.webp" alt="Pasted image 20250102120852" /></p>

<p>This is 95% of the way there, but I need a way to get the charm inside of the sphere. This is where I was worried that Claude would start messing up. There were three options:</p>

<ol>
  <li>Have a hinge on one side (difficult; likely would fail)</li>
  <li>Design a twist-interlocking mechanism for both halves of the sphere (maybe?)</li>
  <li>Put a big hole in the top beneath the mounting ring (last resort that will definitely work)</li>
</ol>

<p>This is where a second problem started to arise. I have a bunch of branching paths I can try now, but no simple way to create branching chats with Claude. This is mainly a problem with Claude Desktop that other UIs have solved through being able to save chats, but it’s a problem I had to deal with.</p>

<p>I attempted option 2 while saving the current SCAD model so that I can start a new chat with Claude in the event that I need to try option 3.</p>

<blockquote>
  <p>Me: This looks good. Now I want to try something challenging: I want you to create a mechanism that enables me to open and close the jingle bell. I would prefer some sort of twist-lock as opposed to a hinge.</p>

  <p>Claude: <img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/seanmcloughlin/pasted-image-20250102121733.webp" alt="Pasted image 20250102121733" /></p>
</blockquote>

<p>Well… it tried, but I’m not even sure what Claude is attempting to do here. This makes prompting Claude difficult because I don’t know what direction to nudge it in. I tried a few more iterations:</p>

<blockquote>
  <p>Me: You added some circular cut outs in the top but only rectangles in the bottom. I also don’t see how I’m supposed to twist this to lock it. Could you try modifying the locking mechanism again?</p>

  <p>Claude: <img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/seanmcloughlin/pasted-image-20250102122005.webp" alt="Pasted image 20250102122005" /></p>
</blockquote>

<p>Oh dear. It’s having a breakdown.</p>

<blockquote>
  <p>Me: No, this doesn’t work. Go back to the previous version.</p>

  <p>Claude: <img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/seanmcloughlin/pasted-image-20250102122039.webp" alt="Pasted image 20250102122039" /></p>
</blockquote>

<p>This isn’t the previous version. At this point, I think Claude has done enough – I’ll just go with the big hole in the top option.</p>

<p>I can’t say I’m surprised that Claude got this wrong, but I’m a bit surprised as to <em>how</em> wrong it got it, without any corrigibility as to what it was attempting to do.</p>

<p>In the end, I decided to manually update the SCAD file to add a hole in the top and make a few other minor modifications. This is the end result:</p>

<p><img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/seanmcloughlin/pasted-image-20250102122315.webp" alt="Pasted image 20250102122315" />
<img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/seanmcloughlin/5a24ceb6-8ba5-4795-ba80-57d07fd0a3eb_1_105_c.webp" alt="5A24CEB6-8BA5-4795-BA80-57D07FD0A3EB_1_105_c" />
<img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/seanmcloughlin/7c33af15-e3a1-4a12-b45d-d47414ddee40_1_105_c.webp" alt="7C33AF15-E3A1-4A12-B45D-D47414DDEE40_1_105_c" />
<img src="https://bear-images.sfo2.cdn.digitaloceanspaces.com/seanmcloughlin/5e6c62d9-5a92-41ed-9134-c1f30958c02f_1_105_c.webp" alt="5E6C62D9-5A92-41ED-9134-C1F30958C02F_1_105_c" /></p>
<h1 id="ending-thoughts">Ending thoughts</h1>

<ul>
  <li>Adding OpenSCAD rendering scaffolding to the Claude web interface/desktop app would be nice, and probably not too difficult to implement. Throughout this process, I had to iteratively copy-paste Claude’s output into the OpenSCAD application.</li>
  <li>Clearly Claude can do basic shapes quite well. But it starts to fall apart when you want to do something more elaborate, like the locking mechanism I attempted. It’s possible that more elaborate prompt engineering could make it work.</li>
  <li>I wonder how OAI’s O1/O3 models with chain-of-thought would perform on this task. I don’t want to pay for it so I’m not going to attempt it.</li>
  <li>I wonder how open weight models would perform on this task. I can run llama3.2 on my M3 Mac at ~96 tokens/second, so assuming it works well enough, it’s viable.</li>
  <li>If I were to give separate models the same prompt, how would the model designs differ? How many steps would it take to get a “good enough” output?</li>
  <li>When will we be able to make an AI agent that builds a robot that it controls in meat-space? And is this the first step?</li>
  <li>I don’t think I’m a CAD luddite anymore – I want to learn it for more elaborate tasks. I can imagine a workflow where I start off with a basic design with LLMs and then add fine details in CAD software. Through some quick research, I see that Fusion 360 now has the option to use generative AI to make 3D models for you to machine (although it is a paid feature).</li>
</ul>]]></content><author><name>Sean McLoughlin</name></author><summary type="html"><![CDATA[With the desire to make a Christmas ornament present for my wife, the inspiration provided by this post on the r/ClaudeAI subreddit, and because I haven’t touched my 3D printer in years, I decided to use Claude to generate a 3D model that I would be able to 3D print. How hard could it be?]]></summary></entry><entry><title type="html">Oatmeal-Induced Crises</title><link href="https://seanmcloughl.in/oatmeal-induced-crises/" rel="alternate" type="text/html" title="Oatmeal-Induced Crises" /><published>2024-07-24T00:00:00+00:00</published><updated>2024-07-24T00:00:00+00:00</updated><id>https://seanmcloughl.in/oatmeal-induced-crises</id><content type="html" xml:base="https://seanmcloughl.in/oatmeal-induced-crises/"><![CDATA[<p>I dropped a bowl of oatmeal this morning and broke it. I spilled its contents all over the floor. When something like this happens, my mind cycles between two thoughts:</p>

<ol>
  <li>“It’s not worth thinking about what could have been – learn from this mistake and move on.”</li>
  <li>“This <em>clearly</em> could have been prevented. The bowl was hot.  You should have used mitts instead of wiggling it around in your hands. Why did you do this? You need to keep analyzing and re-analyzing how this played out, or you’re not going to ‘learn from this mistake.’”</li>
</ol>

<p>I tell myself not to worry about it, but then I go right back to worrying. I think that this is some sort of default loop in my mind. If I did something that I deem to be extremely bad, my subconscious seems to need to keep bringing up how to avoid this situation in the future.</p>

<p>In some ways, this seems like a useful neurological mechanism. If you’re constantly reminded of something bad that you did, then you’re going to be reminded of it when another hot-bowl-handling situation comes up, and you’ll be more inclined to use mitts. But the cost that you pay for this behavior is increased stress and anxiety at the time of the failure, as your subconscious is telling you to ridicule yourself so that you don’t make the same mistake in the future.</p>

<p>I doubt I’m alone in feeling this way. I’ve experienced this sort of thought pattern time and time again in the past – most recently while I was laying in the hospital bed after breaking my clavicle in a bike race. So I think that this thought pattern of consistent self-flagellation is mostly engrained into my mind, even if it isn’t the most effective mode for changing behavior.</p>

<p>The first thing a mindful practitioner might tell you to do is to try and let these thoughts go when you notice them arise into your consciousness. This would let you break the cycle between the thoughts of “just learn and accept the past” and “learn through insistent shaming.” It requires a lot of mindfulness practice and, even as someone who has been meditating for six years, I’m clearly still not good at it.</p>

<p>But are there any downsides to this approach? What if the self-flagellation mode is a better way at changing behavior? If I let go of all of these stressing thoughts, would I start making repeat mistakes because I didn’t drill into my mind how I messed up the previous time? It’s also likely that letting go of those thoughts will cause fewer of those thoughts to arise into conscious thought in the future. If I need to drill into my mind my mistake, is drilling less really desirable?</p>

<p>I don’t really think so. Sure, those stressful thoughts don’t have to be self-flagellating, but the constant reminder of “you did bad thing, do better” seems crucial to me to ensure that you’re reminded of your failure the next time a similar situation happens. So how can one reconcile a desire to remove the suffering caused by the stressors of these events, while recognizing that those stressors are inherently useful to ensure you don’t make the same mistake in the future?</p>

<p>I think that I’m conflating two aspects of this mode of thought and it’s useful to separate those aspects to define useful actions to take:</p>

<ol>
  <li><em>Self-flagellating thoughts</em> are not useful. You shouldn’t beat yourself up for previous behavior, and from a basic Pavlovian perspective, it doesn’t seem to me to be an effective way of changing behavior. The best course of action is to <strong>let these thoughts go</strong> when they arise into your consciousness. These things may naturally happen, but your goal should be to train your mind such that they happen less frequently so you don’t beat yourself up so much.</li>
  <li><em>Constant reminders of past failures</em> can be useful to drill into your subconscious to change future behavior. Use mitts when holding hot things. Don’t get too close to other cyclists when in a race. The best course of action for these thoughts is to <strong>accept that they’re going to arise, but to not be as apprehensive towards them as you may be with self-flagellating thoughts.</strong> It’s okay if these thoughts arise, and you fighting them is only going to make you suffer more.</li>
</ol>

<p>You don’t need to suffer to change your behavior. But to get a subconscious change in behavior, it seems to me that you <em>do</em> need constant reminders.</p>]]></content><author><name>Sean McLoughlin</name></author><summary type="html"><![CDATA[I dropped a bowl of oatmeal this morning and broke it. I spilled its contents all over the floor. When something like this happens, my mind cycles between two thoughts:]]></summary></entry></feed>