<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>dpc - dev</title>
    <subtitle>Notes by `dpc`</subtitle>
    <link href="https://dpc.pw/tags/dev/atom.xml" rel="self" type="application/atom+xml"/>
    <link href="https://dpc.pw"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-04-06T00:00:00+00:00</updated>
    <id>https://dpc.pw/tags/dev/atom.xml</id>
    
    <entry xml:lang="en">
        <title>I don&#x27;t want your PRs anymore</title>
        <published>2026-04-06T00:00:00+00:00</published>
        <updated>2026-04-06T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dpc.pw/posts/i-dont-want-your-prs-anymore/" type="text/html"/>
        <id>https://dpc.pw/posts/i-dont-want-your-prs-anymore/</id>
        
        <content type="html">&lt;p&gt;I really appreciate that you&#x27;re enjoying the software I&#x27;m maintaining
and want to help. But we need to rethink this collaboration, because
I feel like we&#x27;re increasingly wasting each other&#x27;s time.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;why-i-don-t-want-to-merge-your-pr&quot;&gt;Why I don&#x27;t want to merge your PR&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#why-i-don-t-want-to-merge-your-pr&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Since I don&#x27;t really know you, I always have to assume that you might be trying
to sneak in something malicious along with your changes, which makes
reviewing and merging them riskier than implementing them myself.&lt;&#x2F;p&gt;
&lt;p&gt;On top of that, there are a lot of personal and subjective aspects to code.
You might have certain preferences about formatting,
style, structure, dependencies, and approach, and I have mine.&lt;&#x2F;p&gt;
&lt;p&gt;Then we often need to synchronize with respect to review, CI runs, merge conflicts, etc.&lt;&#x2F;p&gt;
&lt;p&gt;And then there&#x27;s this common back-and-forth round-trip between the
contributor and maintainer, which is just delaying things.&lt;&#x2F;p&gt;
&lt;p&gt;Even before LLMs, writing the code was not the main bottleneck for me. But
writing code did take time, so a solid, working, easy-to-review PR was
often worth the small extra risk and inconvenience.&lt;&#x2F;p&gt;
&lt;p&gt;With LLMs becoming quite good at implementing things, that tradeoff
is almost never true anymore.&lt;&#x2F;p&gt;
&lt;p&gt;While I still need to review LLM-generated code, I generally don&#x27;t have to worry about
it being malicious the way an unknown contributor&#x27;s code could be. I&#x27;ve already
codified a lot of my coding preferences and style guidelines for my LLM.
And I can rapidly iterate at my own pace without having to synchronize with
another human who might be in a different timezone.&lt;&#x2F;p&gt;
&lt;p&gt;For these reasons, it&#x27;s just easier if I make the code changes
myself (with the help of an LLM).&lt;&#x2F;p&gt;
&lt;h3 id=&quot;the-nature-of-software-development-has-shifted&quot;&gt;The nature of software development has shifted&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#the-nature-of-software-development-has-shifted&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;It&#x27;s increasingly apparent that &quot;the source code&quot; is less &quot;source&quot;
and more &quot;code&quot; — an intermediate formalized layer between
ideas in the developer&#x27;s head and instructions for the computer to
execute. It&#x27;s always been this way, but now, with the code itself
being easier to generate automatically, it&#x27;s just more visible.&lt;&#x2F;p&gt;
&lt;p&gt;There&#x27;s a wide range of reactions to coding agents out there,
from banning them to proclaiming that coding is dead and vibecoding
is the future. Personally, as things are right now, I sit somewhere in the middle.
I come up with the design, then let my agent do a lot of the actual writing, and then I review
and refine the result.&lt;&#x2F;p&gt;
&lt;p&gt;I could get huge amounts of code written, but I&#x27;m bottlenecked on:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;understanding — reading the existing code to be able to reason about it;&lt;&#x2F;li&gt;
&lt;li&gt;designing — coming up with the right changes and architecture;&lt;&#x2F;li&gt;
&lt;li&gt;reviewing — ensuring that the code is doing what I wanted.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The code in your PR doesn&#x27;t help me much with any of these.
So let&#x27;s skip it — don&#x27;t attempt to implement code changes
with the goal of merging them into the codebase.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;how-can-you-help-instead&quot;&gt;How can you help instead&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#how-can-you-help-instead&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;As the &quot;writing the code&quot; part is becoming less valuable, all other ways
of helping maintainers become relatively higher value.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;give-feedback&quot;&gt;Give feedback&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#give-feedback&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h4&gt;
&lt;p&gt;As I&#x27;m busy implementing things, I often don&#x27;t have much time
to actually use them, or do good research on how to improve them.&lt;&#x2F;p&gt;
&lt;p&gt;Users telling me what works well and what could be improved can be very helpful.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;discuss-ideas&quot;&gt;Discuss ideas&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#discuss-ideas&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h4&gt;
&lt;p&gt;I don&#x27;t know everything, and discussing things with
other people with different experiences and perspectives
can help me understand what I should be building and how.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;report-and-investigate-bugs&quot;&gt;Report and investigate bugs&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#report-and-investigate-bugs&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h4&gt;
&lt;p&gt;A good bug report is 3&#x2F;4 of the bug itself being fixed.&lt;&#x2F;p&gt;
&lt;p&gt;If you spotted a problem, please describe it well, and even
do the debugging to figure out how to reproduce it and
where exactly the problem is.&lt;&#x2F;p&gt;
&lt;p&gt;Then discuss potential solutions.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;prototype-changes&quot;&gt;Prototype changes&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#prototype-changes&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h4&gt;
&lt;p&gt;Send me a reference PR and&#x2F;or the prompt you used to produce it.&lt;&#x2F;p&gt;
&lt;p&gt;Yes, I know I just said that I don&#x27;t want your PRs. So let me
explain. With LLMs, it&#x27;s easier for me to get my own LLM to make the change
and then review it myself.&lt;&#x2F;p&gt;
&lt;p&gt;BUT — using code for illustrative purposes still makes sense.
A quick glance at code implementing something can be helpful,
even if I don&#x27;t end up merging it.&lt;&#x2F;p&gt;
&lt;p&gt;And if you share the actual &quot;source&quot; (prompt) to produce the &quot;code&quot;,
I can reuse and refine it, saving time.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;review-code-and-point-out-problems&quot;&gt;Review code and point out problems&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#review-code-and-point-out-problems&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h4&gt;
&lt;p&gt;As I&#x27;m bottlenecked on reviews, an extra pair of eyes helps.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;fork-the-code-and-report-back&quot;&gt;Fork the code and report back&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#fork-the-code-and-report-back&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h4&gt;
&lt;p&gt;Don&#x27;t be afraid of forking the code and changing it however you want.&lt;&#x2F;p&gt;
&lt;p&gt;Having to come up with designs supporting multiple use cases,
forming consensus, debating best outcomes, looking for compromises, etc.
is very time-consuming.&lt;&#x2F;p&gt;
&lt;p&gt;LLMs enable a great deal of software customizability. You can
make the changes you want by yourself faster and easier than ever,
and then rebase them (or not) on top of upstream
at your own pace.&lt;&#x2F;p&gt;
&lt;p&gt;Just fork. Add support for your own use case, do things your way,
ask neither for permission nor forgiveness.&lt;&#x2F;p&gt;
&lt;p&gt;As a maintainer, this saves me time too. And in the end, maybe both of us
can learn something from your version taking its own route.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    
    <entry xml:lang="en">
        <title>Reviewing my Framework 13 Laptops: the old vs new</title>
        <published>2026-03-31T00:00:00+00:00</published>
        <updated>2026-03-31T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dpc.pw/posts/reviewing-my-framework-13-laptops-the-old-vs-new/" type="text/html"/>
        <id>https://dpc.pw/posts/reviewing-my-framework-13-laptops-the-old-vs-new/</id>
        
        <content type="html">&lt;p&gt;Since August 2022 I was using a FW13 12th Gen Intel as my primary laptop. I didn&#x27;t strictly need a new one, as it was still working perfectly fine. But upgrading after 4 years doesn&#x27;t seem crazy or too excessive, and I&#x27;m worried about the global economy and supply chains going forward, so I decided to get a new one a bit earlier than I usually would.&lt;&#x2F;p&gt;
&lt;p&gt;The old one will serve as a family device, and if need be, a spare part donor for the new one. One of the advantages of an upgradable laptop like this. I might get it a case and convert it to a headless&#x2F;desktop device eventually. Would make a nice low-power home server.&lt;&#x2F;p&gt;
&lt;p&gt;I just recently got the new FW13 with Ryzen AI 9 HX 370 delivered, set it up, used it for a few days, and I figured it&#x27;s a good time to write some thoughts about both and my Framework Laptop experience overall.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;the-old-one&quot;&gt;The old one&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#the-old-one&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;The old one served me well for almost 4 years, which is appreciated. After all this time
it looks close to brand new. Not much visible wear.&lt;&#x2F;p&gt;
&lt;p&gt;It has enough power to compile Rust projects without being painfully slow,
though I typically work over ssh on a desktop machine, which is 3x-6x
faster at heavy tasks like that. I&#x27;ll post some benchmarks at the end.&lt;&#x2F;p&gt;
&lt;p&gt;It always worked well with Linux and had good support in the Open Source community wherever it matters, e.g. pre-made modules for &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;nixos&#x2F;nixos-hardware&quot;&gt;&lt;code&gt;nixos-hardware&lt;&#x2F;code&gt;&lt;&#x2F;a&gt; early on. All the devices I cared about worked well.&lt;&#x2F;p&gt;
&lt;p&gt;I loved (and still do) the ease of being able to open, inspect, dedust, replace parts, etc. E.g. I added
an NVMe radiator because I had a spare one around, and it fits, so why not?&lt;&#x2F;p&gt;
&lt;p&gt;I had to replace the input cover though, as I was affected by &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;community.frame.work&#x2F;t&#x2F;tracking-framework13-keyboard-has-intermittent-keys&#x2F;33279&#x2F;65&quot;&gt;keys intermittently not working&lt;&#x2F;a&gt;.
Replacement was super easy, the part was about $100. But it was quite an annoying problem to debug until the FW Team published their findings.&lt;&#x2F;p&gt;
&lt;p&gt;The second complaint would be &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;community.frame.work&#x2F;t&#x2F;12th-gen-intel-core-bios-3-06-beta&#x2F;25726&#x2F;497&quot;&gt;the BIOS update situation for 12th Gen Intel, which turned out to be hopeless&lt;&#x2F;a&gt;.
I personally didn&#x27;t care much, but between 3rd party BIOS vendors and other complications, the BIOS update story went quite wrong for this model.&lt;&#x2F;p&gt;
&lt;p&gt;The last complaint would be the wobbly lid hinge. It was annoying sometimes: at steep angles the lid would not hold position and when unstable or moved it would wobble a little.&lt;&#x2F;p&gt;
&lt;p&gt;The battery life was mid. It did improve due to some firmware fixes, etc. but
it was never good. I&#x27;m not much of a traveler, and mostly need the battery
to move the laptop from the dock to the dinner table or a couch,
so I was aware of that before buying and didn&#x27;t care.&lt;&#x2F;p&gt;
&lt;p&gt;I was very happy about the hardware battery charge limit. Except when traveling,
I kept it set to 60%, and didn&#x27;t notice any battery degradation over the years,
despite having it plugged in 99% of the time.&lt;&#x2F;p&gt;
&lt;p&gt;I love the physical toggles for microphone and camera. That feature alone
always made FW13 feel like a laptop for people like me — the kind who join morning calls
in their underwear.
Just kidding (or am I?). People who care about cybersecurity, privacy, etc.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;the-new&quot;&gt;The new&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#the-new&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;It might sound weird, but I really appreciate that the new laptop... is in the form factor exactly the same as the old one. Maybe I&#x27;m too much on the spectrum, heh. No need to adjust to a new key layout, everything feels familiar, the microphone and camera physical switches are still there. No negative surprises.&lt;&#x2F;p&gt;
&lt;p&gt;The new higher DPI screen is soo nice. Immediately noticeable improvement.&lt;&#x2F;p&gt;
&lt;p&gt;The hinge is fixed. Now it is very high-force, maybe even a bit too much.
Does opening the lid count as exercise?&lt;&#x2F;p&gt;
&lt;p&gt;The specs are a significant improvement, at least for my needs (compiling Rust code).&lt;&#x2F;p&gt;
&lt;p&gt;The desktop UI feels even smoother than before, especially with an external
monitor attached. Overall, probably a combination of the improved built-in
screen at 120Hz (60Hz on the old one) and better specs.&lt;&#x2F;p&gt;
&lt;p&gt;The old laptop under load ran quite hot and spun the CPU fan like
a lawn mower. So far, the new one handles the load much more gracefully: cooler and quieter.&lt;&#x2F;p&gt;
&lt;p&gt;Looks to me like the fwupdmgr dealt well with firmware updates
right away, so hopefully the BIOS story will be better this time.&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;m not sure about the battery yet. Again - I don&#x27;t really use it much,
and I capped it at 60% right away too. I don&#x27;t expect miracles.
There is plenty of info online with proper measurements.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;summary&quot;&gt;Summary&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#summary&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;As you could see, I was somewhat of an early Framework adopter,
and fine with some bumps along the way. I need a laptop that is
a bit like a desktop: good power, open, repairable, and I don&#x27;t
care much about battery capacity.&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;m happy to see that everything that was not ideal
in the previous version is now fixed, and the whole
laptop is just a more polished and capable version
of what I already liked.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;benchmarks&quot;&gt;Benchmarks&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#benchmarks&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;fedimint&#x2F;fedimint&#x2F;wiki&#x2F;Benchmark-compilation-times&quot;&gt;The main project I&#x27;m working on has a compilation benchmark&lt;&#x2F;a&gt;, so I&#x27;m going to use it for real-life performance.
It&#x27;s a relatively large and heavy Rust codebase.&lt;&#x2F;p&gt;
&lt;h5 id=&quot;ren-my-desktop&quot;&gt;ren - my desktop&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#ren-my-desktop&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h5&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #839496; background-color: #002B36;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;dpc@ren&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;-------&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;OS: NixOS 26.05 (Yarara) x86_64&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Kernel: Linux 6.19.9&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;CPU: AMD Ryzen 9 7950X3D (32) @ 4.04 GHz&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Memory: 26.22 GiB &#x2F; 62.01 GiB (42%)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Swap: 5.26 GiB &#x2F; 31.00 GiB (17%)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Disk (&#x2F;): 11.47 MiB &#x2F; 31.00 GiB (0%) - tmpfs&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Disk (&#x2F;bin): 2.61 TiB &#x2F; 6.84 TiB (38%) - bcachefs [Read-only]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Date: 2026-03-30&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Commit: 08fb6c1b613&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                       total    user     sys&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  check   debug:   62.21  986.43  145.05&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  check   debug:    4.38   10.46    8.01&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  build   debug:  111.77 2129.55  213.69&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  build   debug:   13.69   38.91   27.34&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  check release:   54.47  566.00  132.61&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  check release:   15.77   39.94    7.89&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  build release:  448.37 12471.30  674.43&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  build release:  371.44 10790.08  399.68&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h5 id=&quot;tlb-new-framework-13&quot;&gt;tlb - new Framework 13&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#tlb-new-framework-13&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h5&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #839496; background-color: #002B36;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;dpc@tlb&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;-------&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;OS: NixOS 26.05 (Yarara) x86_64&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Kernel: Linux 6.19.9&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;CPU: AMD Ryzen AI 9 HX 370 (24) @ 1.95 GHz&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Memory: 14.24 GiB &#x2F; 93.59 GiB (15%)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Swap: 0 B &#x2F; 46.80 GiB (0%)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Disk (&#x2F;): 10.86 MiB &#x2F; 46.80 GiB (0%) - tmpfs&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Disk (&#x2F;bin): 91.67 GiB &#x2F; 6.69 TiB (1%) - bcachefs [Read-only]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Date: 2026-03-30&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Commit: 08fb6c1b613&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                       total    user     sys&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  check   debug:  162.62 2473.10  164.12&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  check   debug:    7.66   21.89    8.53&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  build   debug:  317.64 5398.69  252.56&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  build   debug:   19.44   69.70   21.61&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  check release:  129.30 1324.88  144.16&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  check release:   37.23   95.91    9.08&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  build release: 1488.11 31536.63  726.96&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  build release: HANG? cargo bug?&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h5 id=&quot;mutex-old-framework-13&quot;&gt;mutex - old Framework 13&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#mutex-old-framework-13&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h5&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #839496; background-color: #002B36;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;dpc@mutex&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;---------&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;OS: NixOS 26.05 (Yarara) x86_64&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Kernel: Linux 6.19.9&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;CPU: 12th Gen Intel(R) Core(TM) i7-1280P (20) @ 3.60 GHz&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Memory: 3.76 GiB &#x2F; 62.51 GiB (6%)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Swap: 0 B &#x2F; 40.05 GiB (0%)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Disk (&#x2F;): 11.96 MiB &#x2F; 31.26 GiB (0%) - tmpfs&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Disk (&#x2F;bin): 755.77 GiB &#x2F; 906.66 GiB (83%) - ext4 [Read-only]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Date: 2026-03-31&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Commit: 5272f1734c4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                       total    user     sys&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  check   debug:  226.67 2951.83  196.04&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  check   debug:    8.78   25.72   10.34&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  build   debug:  433.46 6511.59  309.13&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  build   debug:   28.67   81.74   27.63&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  check release:  157.38 1606.74  183.38&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  check release:   42.21  107.07   12.39&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  build release: 2062.62 38336.06  860.68&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  build release: HANG?&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    
    <entry xml:lang="en">
        <title>BubbleWrap your dev env and agents</title>
        <published>2026-03-25T00:00:00+00:00</published>
        <updated>2026-03-25T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dpc.pw/posts/bubblewrap-your-dev-env-and-agents/" type="text/html"/>
        <id>https://dpc.pw/posts/bubblewrap-your-dev-env-and-agents/</id>
        
        <content type="html">&lt;p&gt;OK, so the world is collapsing, everything is getting hacked,
all dependencies are probably stealing keys and mining crypto,
slop is everywhere, and I&#x27;m part of the problem.&lt;&#x2F;p&gt;
&lt;p&gt;So what do I do? &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=jkvCe4bKeL0&amp;amp;t=173s&quot;&gt;I&#x27;m going to isolate!&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;I had this in mind for a long while, but only recently
LLM agents became good enough that I actually find it
really useful to let them go without babysitting every
command they are trying to run.&lt;&#x2F;p&gt;
&lt;p&gt;So the goals are:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;protect my systems from the slopus,&lt;&#x2F;li&gt;
&lt;li&gt;protect my systems from malicious dependencies (at least somewhat),&lt;&#x2F;li&gt;
&lt;li&gt;retain the usual UX.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Because of the last point, I am not going to be doing
separate user account, or a separate VM, or play with dockers.&lt;&#x2F;p&gt;
&lt;p&gt;What I&#x27;m going to do is to use the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;containers&#x2F;bubblewrap&quot;&gt;BubbleWrap&lt;&#x2F;a&gt;,
to remount only parts of host system and home directory, and most
of them in read-only mode. This way my tooling
and general DX remains almost exactly the same,
but if the Slopus has an episode of psychosis,
or pulls in a cryptomining malware, there is
only so much damage that it can do.&lt;&#x2F;p&gt;
&lt;p&gt;So the core of this system is the &lt;code&gt;isolate&lt;&#x2F;code&gt; script:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #839496; background-color: #002B36;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #586E75;font-style: italic;&quot;&gt;#!&#x2F;usr&#x2F;bin&#x2F;env bash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CB4B16;&quot;&gt; -euo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; pipefail&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #586E75;font-style: italic;&quot;&gt;# Skip re-isolating if already inside an isolated environment&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; -n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;ISOLATE_ENV&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;:-}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;	&amp;gt;&amp;amp;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt; echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;warning: already isolated&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;	exec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;@&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;tiocsti_path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&#x2F;proc&#x2F;sys&#x2F;dev&#x2F;tty&#x2F;legacy_tiocsti&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; ! -f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$tiocsti_path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; ||&lt;&#x2F;span&gt;&lt;span&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;cat&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$tiocsti_path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;)&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; !=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;0&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;	&amp;gt;&amp;amp;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt; echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;warning: TIOCSTI not disabled&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;+=&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	--dev-bind &#x2F;dev &#x2F;dev&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	--proc &#x2F;proc&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	--tmpfs &#x2F;tmp&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	--tmpfs &#x2F;run&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; 	--setenv PROMPT_ENV_INDICATOR &amp;quot;isolated&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; 	--setenv ISOLATE_ENV &amp;quot;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;pwd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;)&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&#x2F;bin&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&#x2F;usr&#x2F;bin&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&#x2F;etc&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&#x2F;nix&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&#x2F;run&#x2F;current-system&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;bin&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.config&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;nix&#x2F;dot&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.gitconfig&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.nix-profile&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.local&#x2F;share&#x2F;direnv&#x2F;allow&#x2F;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; do&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;	args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;+=&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;--ro-bind &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;done&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.cargo&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.claude&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.claude.json&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;nix&#x2F;dot&#x2F;.claude&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$XDG_RUNTIME_DIR&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;gnupg&#x2F;S.gpg-agent&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;pwd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;)&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;\&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; do&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;	args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;+=&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;--bind &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;done&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; -n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;NIRI_SOCKET&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;:-}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; &amp;amp;&amp;amp; -S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$NIRI_SOCKET&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;	args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;+=&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;--bind &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$NIRI_SOCKET&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$NIRI_SOCKET&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;	args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;+=&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;--setenv NIRI_SOCKET &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$NIRI_SOCKET&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;+=&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; 	--dir &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.gnupg&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; 	--chmod&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D33682;&quot;&gt; 0700&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.gnupg&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #586E75;font-style: italic;&quot;&gt;# Source extra config (e.g. set by auto-isolate) to allow&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #586E75;font-style: italic;&quot;&gt;# project-specific additions to args&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; -n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;ISOLATE_EXTRA_CONFIG&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;:-}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; &amp;amp;&amp;amp; -f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$ISOLATE_EXTRA_CONFIG&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;	source&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$ISOLATE_EXTRA_CONFIG&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #586E75;font-style: italic;&quot;&gt;	# Hide the config file inside the sandbox by overlaying &#x2F;dev&#x2F;null&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;	args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;+=&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;--ro-bind &#x2F;dev&#x2F;null &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$ISOLATE_EXTRA_CONFIG&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;exec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; bwrap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CB4B16;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CB4B16;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;@&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;I&#x27;m not going to spend time explaining every detail here,
please read the Bubblewrap docs, or ask your local LLM.&lt;&#x2F;p&gt;
&lt;p&gt;But if you, dear reader, are planning to do the same&#x2F;similar thing,
you&#x27;ll probably want to go over each path and consider
implications. E.g. I&#x27;m using a &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;drduh&#x2F;YubiKey-Guide&quot;&gt;fancy Yubikey SSH&#x2F;GPG setup&lt;&#x2F;a&gt;
and I need to touch the hardware yubikey every time I ssh
somewhere. Because of that I&#x27;m not afraid of mounting the ssh&#x2F;gpg
socket into the isolated environment.&lt;&#x2F;p&gt;
&lt;p&gt;Anyway, in a nutshell: &lt;code&gt;isolate&lt;&#x2F;code&gt; will run a given command
in an environment where almost only the current working directory
is writable, and rest are only the bare minimum parts needed
to get things working, mostly in read-only mode. Kind-a, mostly.
The goal here is a good enough security and robustness without
sacrificing almost any DX.&lt;&#x2F;p&gt;
&lt;p&gt;Thanks to using Nix, the first thing I&#x27;m going to use this &lt;code&gt;isolate&lt;&#x2F;code&gt;
script to wrap Slopus. That guy should never get a full
access to anything important directly.&lt;&#x2F;p&gt;
&lt;p&gt;Inside my system&#x27;s &lt;code&gt;flake.nix&lt;&#x2F;code&gt; in the main overlay I have something like this:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #839496; background-color: #002B36;&quot;&gt;&lt;code data-lang=&quot;nix&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            claude-code&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt; =&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt;              let&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                orig&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; pkgs-unstable&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;claude-code&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt;              in&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;              final&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;writeShellScriptBin&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;claude&amp;quot; &amp;#39;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;                exec env CARGO_TERM_QUIET=true PATH=&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span&gt;final&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;not-git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;bin:$PATH&amp;quot; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;.&#x2F;dot&#x2F;bin&#x2F;isolate&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt;} ${&lt;&#x2F;span&gt;&lt;span&gt;orig&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;bin&#x2F;claude &amp;quot;$@&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;              &amp;#39;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This makes Slopus always start in an isolated environment,
so I can&#x27;t forget about it. I also replace &lt;code&gt;git&lt;&#x2F;code&gt; with a wrapper
reminding Slopus that we&#x27;re using Jujutsu, and make &lt;code&gt;cargo build&lt;&#x2F;code&gt; less
noisy by default to (maybe) save some tokens.&lt;&#x2F;p&gt;
&lt;p&gt;Then I want to automate entering isolated environment
in every project I&#x27;m working on.&lt;&#x2F;p&gt;
&lt;p&gt;For that I have &lt;code&gt;auto-isolate&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #839496; background-color: #002B36;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #586E75;font-style: italic;&quot;&gt;#!&#x2F;usr&#x2F;bin&#x2F;env bash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CB4B16;&quot;&gt; -euo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; pipefail&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; ! -x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;bin&#x2F;isolate&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;	&amp;gt;&amp;amp;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt; echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;warning: &lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;bin&#x2F;isolate not found, skipping isolation&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;	exec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;@&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;pwd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;)&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;while&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt; true&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; do&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;	if&lt;&#x2F;span&gt;&lt;span&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.isolate&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;		exec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; env ISOLATE_EXTRA_CONFIG=&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.isolate&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt; $HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;bin&#x2F;isolate &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;@&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;	fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;	if&lt;&#x2F;span&gt;&lt;span&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&#x2F;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;		break&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;	fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;	dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;dirname&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;)&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;done&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;exec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;@&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;code&gt;auto-isolate&lt;&#x2F;code&gt; will automatically call &lt;code&gt;isolate&lt;&#x2F;code&gt; for a given
command if it can find &lt;code&gt;.isolate&lt;&#x2F;code&gt; in current working dir
or any ancestor dir.&lt;&#x2F;p&gt;
&lt;p&gt;One could wire it in a shell startup file, but since I have
a whole system for working in the CLI heavily rooted in tmux,
I am going to put it in &lt;code&gt;~&#x2F;.config&#x2F;tmux&#x2F;tmux.conf&lt;&#x2F;code&gt; like this:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #839496; background-color: #002B36;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;set-option -g default-command &amp;quot;$HOME&#x2F;bin&#x2F;auto-isolate ${SHELL}&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# in case I want to actually do something outside of the isolated env constrains&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;bind E new-window &amp;quot;${SHELL}&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This way every time I&#x27;m starting a new pane in tmux,
it will trigger &lt;code&gt;auto-isolate&lt;&#x2F;code&gt;. Now I &lt;code&gt;touch ~&#x2F;lab&#x2F;.isolate&lt;&#x2F;code&gt; and
since all my dev projects are always inside &lt;code&gt;~&#x2F;lab&lt;&#x2F;code&gt; I pretty much
can&#x27;t ever forget to &lt;code&gt;isolate&lt;&#x2F;code&gt; my projects.&lt;&#x2F;p&gt;
&lt;p&gt;If you haven&#x27;t noticed before, the &lt;code&gt;isolate&lt;&#x2F;code&gt; script supports &lt;code&gt;ISOLATE_EXTRA_CONFIG&lt;&#x2F;code&gt;
which allows adding project-specific modifications to the isolated
environment. E.g. for a little GUI project I&#x27;m working on, I had to
create following &lt;code&gt;.isolate&lt;&#x2F;code&gt; file:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #839496; background-color: #002B36;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; -n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$WAYLAND_DISPLAY&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;    args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;+=&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;--ro-bind &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$XDG_RUNTIME_DIR&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$WAYLAND_DISPLAY&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$XDG_RUNTIME_DIR&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$WAYLAND_DISPLAY&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;+=&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	--bind &#x2F;dev&#x2F;dri&#x2F; &#x2F;dev&#x2F;dri&#x2F;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	--bind &#x2F;dev&#x2F;shm &#x2F;dev&#x2F;shm&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	--bind &#x2F;tmp&#x2F;.X11-unix&#x2F; &#x2F;tmp&#x2F;.X11-unix&#x2F;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	--bind &#x2F;run&#x2F;opengl-driver&#x2F;lib&#x2F; &#x2F;run&#x2F;opengl-driver&#x2F;lib&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;so it can show me the UI, when I run &lt;code&gt;cargo r&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    
    <entry xml:lang="en">
        <title>Personal AI usage disclosure</title>
        <published>2026-02-04T00:00:00+00:00</published>
        <updated>2026-02-04T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dpc.pw/posts/personal-ai-usage-disclosure/" type="text/html"/>
        <id>https://dpc.pw/posts/personal-ai-usage-disclosure/</id>
        
        <content type="html">&lt;h1 id=&quot;personal-ai-usage-disclosure&quot;&gt;Personal AI usage disclosure&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#personal-ai-usage-disclosure&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h1&gt;
&lt;p&gt;Since people have strong opinions about it and in an effort to keep things honest, let me write it once here so I can link to it from relevant README files and be done with it:&lt;&#x2F;p&gt;
&lt;p&gt;✨ &lt;strong&gt;I use LLMs when working on my projects.&lt;&#x2F;strong&gt; ✨&lt;&#x2F;p&gt;
&lt;p&gt;If you have problems with it you have been informed. Keep reading if you would like to know more details and some of my opinions on the matter.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;my-history-of-using-llms&quot;&gt;My history of using LLMs&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#my-history-of-using-llms&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;I&#x27;ve been relatively slow to start using LLMs, since they didn&#x27;t have good integrations with CLI text editors (in particular Helix) and command line usage so they did not fit my workflow (I live in tmux, running fish shell and helix). Sometime in very late 2024 I discovered &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;aider.chat&#x2F;&quot;&gt;Aider&lt;&#x2F;a&gt; and that&#x27;s when I started actually using LLMs for programming. Few months later I switched to Claude Code, and have been using it as a primary LLM ever since. There have been many significant improvements in how LLMs do as coding assistants during 2025, and somewhere in the second half of 2025 I was actually satisfied with their robustness and quality of what they produced.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;how-i-use-them&quot;&gt;How I use them&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#how-i-use-them&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Just to get it out of the way: &lt;strong&gt;I do not vibe-code&lt;&#x2F;strong&gt;. By vibe-coding I mean largely unsupervised usage and not paying too much attention to the code AI produces. I believe vibe-coding can maybe work for very simple CRUD web apps and simple software, but at least at the moment LLMs are nowhere near producing really quality code without supervision. It seems definitely possible to build complex LLM-based agent loops and systems, that cross-check, verify, etc. to increase how far vibe-coding can be employed, but as things are right now I find it complex, wasteful and not very interesting.&lt;&#x2F;p&gt;
&lt;p&gt;The way I use LLMs is largely treating it as a very sophisticated auto-completion and refactoring engine. I give it relatively small scope tasks, I like to point it at existing code with similar patterns and design, to ensure it produces exactly what I have in mind. Even with such a methodical usage it&#x27;s quite common for the LLM to produce substandard code, overcomplicate or even break some adjacent stuff. It&#x27;s been getting significantly better over time, but I fully recognize coding agents are a bit spooky in how unpredictable they can be. That&#x27;s why I do review code the LLM produces and spend significant amount of time post-processing, refactoring and cleaning it.&lt;&#x2F;p&gt;
&lt;p&gt;All in all, despite all the drawbacks and shortcomings of LLMs, they are still the most significant improvement for my productivity as a developer I&#x27;ve ever experienced. I build better, more ambitious things faster, and the quality is significantly improved. E.g. my projects now have way more tests - because it&#x27;s faster to create and maintain them, and frankly - the flakiness of LLMs requires it. My code has more and better comments, examples and auxiliary stuff like that. Just the other day, I asked the LLM to scan a certain security-sensitive code for all attack vectors it can think of and write a unit test for each of them, and indeed AI found an important case that I missed. I screwed up, I wrote that code by hand. AI saved my bacon this time, repaying for all the dozen times when it did something really dumb that I had to tell it to correct.&lt;&#x2F;p&gt;
&lt;p&gt;How exactly I use AI agents will evolve over time and I might not remember to update this document.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;political-concerns&quot;&gt;Political concerns&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#political-concerns&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;I know. The electricity and water usage, the ingestion of GPL-licensed code, the jobs that will be replaced, social repercussions, economic inequality. Yeah, yeah, I hear ya.&lt;&#x2F;p&gt;
&lt;p&gt;I just don&#x27;t think hiding your head in the sand and just refusing to use LLMs or even any code that was modified by an LLM is going to help anyone. The march of technological progress is kind of inevitable due to competitive pressures.&lt;&#x2F;p&gt;
&lt;p&gt;Every technology brings important downsides and costs for all the benefits it makes. Such is the nature of civilizational progress. I guess the best we can do is to use political will and wisdom to increase the benefits, and mitigate the costs. And we will likely fail again to do so for a long time. But we did stop adding lead to car fuel eventually at least.&lt;&#x2F;p&gt;
&lt;p&gt;From all the ways I could think of AI-like technology could have been developed, we got quite lucky. The LLM companies really have little moat, are a subject to heavy market competition from the get go, and even determined individuals can run their own LLMs locally. Much better than a hypothetical scenario where a single big-corp discovery gives it a patent and exclusive secret AI tech leading to impossible market advantage and universal monopoly over the whole economy.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;software-collaboration-dynamic-concerns&quot;&gt;Software collaboration dynamic concerns&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#software-collaboration-dynamic-concerns&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;So anyone can be a coder now, and produce terrible buggy code at the pace of 40 junior developers. And they are all very happy to open a PR to your project.&lt;&#x2F;p&gt;
&lt;p&gt;And now that everyone is LLMing, how do you keep up and ensure the quality doesn&#x27;t suffer, and people don&#x27;t waste each other&#x27;s time with slop.&lt;&#x2F;p&gt;
&lt;p&gt;There are no easy answers here. We will manage, and we will see.&lt;&#x2F;p&gt;
&lt;p&gt;I think the dynamics of SWE collaboration will drastically change. I predict teams will get smaller, and more projects will be developed by individuals leveraging their productivity. But only time will tell.&lt;&#x2F;p&gt;
&lt;p&gt;And LLM-based solutions are desperately needed to help with vetting, reviewing, testing, ensuring code quality, etc. There&#x27;s definitely a lot of potential and work to be done.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    
    
    
    
    
    
    
    
    
</feed>
