<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>artivilla's evergreen notes</title>
        <link>https://writing.artivilla.com</link>
        <description>unfiltered views of a software artist</description>
        <lastBuildDate>Fri, 07 Aug 2026 01:35:49 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>artivilla's evergreen notes</title>
            <url>https://storage.googleapis.com/papyrus_images/a40a15e4cacd87c62f01532cd41fcfc1.jpg</url>
            <link>https://writing.artivilla.com</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[my builders AI stack]]></title>
            <link>https://writing.artivilla.com/my-builders-ai-stack</link>
            <guid>LnVSWPY4BmKhutCwto0n</guid>
            <pubDate>Thu, 31 Jul 2025 16:00:02 GMT</pubDate>
            <description><![CDATA[I'm a big fan of upskilling my tooling, so I decided to post my current stack—there’s a good chance you’ll discover something new. 👀⚒️]]></description>
            <content:encoded><![CDATA[<p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://egghead.io/ai-dev-stack~nms53">Inspired by John Lindquist</a>, a leading voice you should without question learn from on state-of-the-art AI tips and tricks via screencasts, I'm a big fan of upskilling my tooling, so I decided to post my current stack.</p><h4 id="h-whisper-flow" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://wisprflow.ai/">whisper flow</a></h4><p><strong>purpose: effortless voice dictation in every application</strong><br><strong>use cases: </strong>responding to emails, writing documentation, writing these blog posts, and dictating prompts in my Zed editor and agent models that I’m constantly swapping. Works on iOS as well.</p><p>cost: $12/mo with student discounts</p><h4 id="h-dia-browser" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.diabrowser.com/">dia browser</a></h4><p><strong>purpose: lightning fast browser with builtin AI</strong><br><strong>use case: </strong>gathering summaries on writing and videos, deep dive explanations on technical docs and source code. can chat with all your tabs and use this for anything really, but these are my primary uses.</p><p>cost: tbd with beta open to arc browser users</p><h4 id="h-raycast" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.raycast.com/">raycast</a></h4><p><strong>purpose: shortcuts to all your applications via cmd+k. what spotlight should have been</strong><br><strong>use case: </strong>too many to list out here, but would encourage taking a look their <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=xRnMXJcH9Pg">hype channel</a> on usecases by your role. will be posting my extensions on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://artivilla.com/">https://artivilla.com</a> shortly</p><p>cost: mostly free with AI prop tiers or <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.raycast.com/changelog/1-100-0">BYOK</a></p><h4 id="h-valtown" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://val.town">val.town</a></h4><p><strong>purpose: Zapier for developers, just by writing simply Typescript</strong><br><strong>use case: </strong>creating discord bots, slack bots,  X bots, all sorts of bots and simple interface apps. my newsletter aggregator was vibe coded in a matter of days that runs on valtown. view my channel to watch me <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://newsletters.artivilla.com/">vibe code a feature</a>.</p><p>cost: $10/mo</p><h4 id="h-mymind" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mymind.com/">mymind</a></h4><p><strong>purpose: remember everything. organize nothing.</strong><br><strong>use case: </strong>it goes without saying, but it’s impossible to recall all the products, tools, and sites I can instantly bring up. It literally remembers whatever is at the tip of my fingers.</p><p>cost: many tiers with $5 lowest</p><h4 id="h-zed-editor" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://zed.dev/">zed editor</a></h4><p><strong>purpose: fastest simplest editor on this planet</strong><br><strong>use case: </strong>every professional programmer needs an editor even if you're making simple changes. bring your own keys or use their inbuilt models. or use no AI at all.</p><p>cost: free or AI plans w/ token usage</p><h4 id="h-railway" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://railway.com/">railway</a></h4><p><strong>purpose: hosting customer facing applications that can scale infinity</strong><br><strong>use case: </strong>acts like my platform engineer. automated database backups, multi regions, horizontal scaling, logging and traces, monitoring, deployments, PR previews, multiple environments, observability and the rest.</p><p>cost: free with paid tiers</p><h4 id="h-supercut" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://supercut.ai/">supercut</a></h4><p><strong>purpose: recordings</strong><br><strong>use case:</strong> screencast recordings for <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/@raising-an-agent">raising an agent</a></p><h4 id="h-ghostty" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ghostty.org/">ghostty</a></h4><p><strong>purpose: terminal</strong></p><h4 id="h-gitbutler" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://gitbutler.com/">gitbutler</a></h4><p><strong>purpose: virtual branching</strong><br><strong>use cases: </strong>quickly spin up virtual branches and manage multiple pull requests, without getting lost in git branch names or git stashes.</p><h4 id="h-claude-code" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/anthropics/claude-code">claude code</a></h4><p><strong>purpose: leading model for client-side code and multi agents</strong></p><br><br><br><br><br>]]></content:encoded>
            <author>artivilla@newsletter.paragraph.com (Arti Villa)</author>
            <category>ai</category>
        </item>
        <item>
            <title><![CDATA[zed and I]]></title>
            <link>https://writing.artivilla.com/zed-and-i</link>
            <guid>kE8VlEnwdrrYZZmzbSp1</guid>
            <pubDate>Thu, 13 Mar 2025 14:43:28 GMT</pubDate>
            <description><![CDATA[Every few weeks I revisit Zed, the fastest code editor ever, and I'm pleasantly surprised by its newly released features. While it appears to be a fairly minimal IDE on the surface, the team has managed to implement powerful AI-assisted capabilities without compromising your ability to edit at full throttle.]]></description>
            <content:encoded><![CDATA[<p>Every few weeks I revisit <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://zed.dev/">Zed</a>, the fastest code editor ever, and I'm pleasantly surprised by its newly released features. While it appears to be a fairly minimal IDE on the surface, the team has managed to implement powerful AI-assisted capabilities without compromising your ability to edit at full throttle.</p><div class="relative header-and-anchor"><h4 id="h-the-command">the / command</h4></div><p>This isn't meant to be a comprehensive Zed guide - they have excellent docs and an incredible active community where I continue discovering new ways to upgrade my workflow. But the standard way to explore AI is by hitting slash.</p><figure float="none" width="661px" data-type="figure" class="img-center" style="max-width: 661px;"><img src="https://storage.googleapis.com/papyrus_images/9668d880f01e8d6fbbbd5c331bd20290.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAZCAIAAADfbbvGAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEH0lEQVR4nK2W308jVRTH70ZJOpYonZQO021LZ2p/YWdH1u7QFqZMLR1+TWHsOC2L9AddaKULZEEhJe2uECAp2G5S0xCosrqNhmhCjLoxMUb3YRN9cp9M9t3/wAefNWV2WYQKxZB8cnMf5p7vPT/uOQMG/JHw+K0Bf0TRjMnk6IWAqE02knYzvJVwgn5uNCBO8kIcUZuaYE09AAADACuUepkcbYI1MjkKAHxMgGhnnDRnNNsBQXZGx6f5wJhWb0XUptNRKPWvkZ3pTH49V6YcrMcnJFLZ8PgtysEqlHpEbXrjWrdWbz24AYSoTVUBRG3S6q31WEeeYTTbrYTrpHZVAzVIG0lPrTMDAOCHj558WvlOheKS0pkgqKHOL1UoDhogVTK1FI3PNcGa+k9q66PqgQYjEqns3Y++ePjoSTQ+d4EaOozQGdrAi1ALhtvs1Jtd7kGj2Y6ghgtEheJg+K3Ezpe/Xg/PCWIyGJqORN8/L6GR2dDIrLSRLERji9HYYuLdO0JwCtBMYKWwt7y6s5H/bGVte2r6g3OxlL07v5BLZ/LSms7kJ5NZQUxWCU71c6MAgJcwvO23x3/8+dffP/38Oy/EPT6hTvq50UKxsp4rb5X3c5u76xsfF0t7UzdvvwJfVqE4ghpeVqBAJkeNZvvyamnq5u2Wy2YAoFN6ANSoPga4pHQzvMcndjj7h4WJYWGCcrCHlYKghqrAq6b2QrHy9be/bJX3l1dLQ4EY1Ki2kbSNpE2WjrYrXSZLB9HOtOKvn5RsgFQAwC7aL4hJMZQKR+edNHcooGm1PBVIZ/KVz3+4d/9BoVixEi6p1ZxE9i+7UNuVLhft72YCPb0jXjYohf6oB88FCsXKUCBmtFBOmjtqSFYLcElpMF9z0hzt5gaHYsPChKtz0Elzbobv48JXKd+hQLVMZXJUq7eWP/nm+tjMwd3lx1qj7KQAgHU46WZ4ysFepXwenxgamwlH56Px98LReS8brOHBnZVSaeere/cfUA62AVKd2fHBQb88WF/Q4aTHJ0pR8rLB2iHKbe6mM/lEKptIZc81W5pgjZvhe3pH+rhwVzcviEkbSR8XMJrtK2vbs/Or0iSp3zoAsJvhxVBqwB8Jjc0M+CNiKHVYRTqMeJoDHUaM31hYWNrYKu9Xk9yM2Uhah5MmS4fRQp2lARktlJcN0m7O4xOPhej5O1jLbX//4+PFpQ+lY1IhKZR6qFF9ugc2kubfTnjZ4OBQrKd3JDQ2UyMHOozIbe5W5/5ZBSo7weBQTLIuiMk+Lhx6Z9pF+2skuVjaG7+xoGjG6ikh2TMUSr2UWy8bHPBHPD6xjwsT7UwND3ghHhAnpYjXfMP/hZvhnTTX7Q04aY5ysF42WKOKtHqr9D/yP8aZdFDZgsFKrQrFYaX2qBFNq+UfMoS6YlBnKVYAAAAASUVORK5CYII=" nextheight="994" nextwidth="1278" class="image-node embed"><figcaption htmlattributes="[object Object]" class=""><em>Hitting / in Zed chat</em></figcaption></figure><div class="relative header-and-anchor"><h4 id="h-the-prompt-command">the /prompt command</h4></div><p>In place of the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/zed-industries/zed/issues/21318">/workflow</a> command, which was their most agentic feature, they've adopted a more robust <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://zed.dev/docs/assistant/prompting">/prompt</a> command, similar to Cursor's rulesets. Prompts are modular, like isolated functions designed to instruct the LLM to do one thing and one thing only. You can group them and even reference them in other prompts.</p><p>For example, if you use the same tech stack for your frontend projects, you can create a prompt to describe libraries used in package.json and their associated coding patterns. You can apply a similar prompt for backend repos and merge them into a single prompt that contains both project repositories. </p><p>Here, I'm inserting multiple prompts into my default prompt that is inserted in every chat.</p><figure float="none" width="564px" data-type="figure" class="img-center" style="max-width: 564px;"><img src="https://storage.googleapis.com/papyrus_images/2f6d792d624a5b4a48d53a1c68ebf6db.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAIAAAD4YuoOAAAACXBIWXMAAAsTAAALEwEAmpwYAAACq0lEQVR4nGMQk1AWk1AWl1QVEJaHI3FJVWQRMQlluCA7lyQEwUWwIgFh+fNHTlnbuDMYGDto6lgqqxnrGdlr6Vpr6lhq6VrLKujKKGgrqxkbGDtAFGjpWiurGSurGbt7hPn4xwaFJjs4BSirGcsoaGNFiqpGkaHJKmoGDCFhGeZW7po6lhk59QXFbfEJJQXFbaaWbuKSqo7OIUWl7WkZNUmp5WkZNZY23po6lkuX73z24t+d+5+mzlylqWOJ1XRxSVUNbTM9YwdpeQ0GB6eAjOzarNw6dW0Ldi5J5NAQEJbnF5LhF5KBhxVEM3IwYkUyCto2DgHO7mE29j4MTm4hkbF5SanlhiaOElIgOfxIXEoNwpBV0BWXUgOZCCHBSFpeA2KBhbWHg1OAuZU7g71XXFFNb1hYgqW1GySU8SNNHcui0va2ztnunuHunuFJqeVJqeXunuGQOLO2AYW2gLA8F4+UjIK2gbEDg5qWqbahjZKqPiSqiUEG4JiHmKhrZKuubaGubaGgoqegoqesZgxnKKsZK6nqM/ALybR1zn734b+GthnxSE3TmBhl6lomDOKSqt5+MYUlrfpGNpo6lpo6liTZpEHIHQxautbS8hqiEorScurScuqQsIJYo2tkS4npmjqW6rqmDDpG9jFx+Q1NU6bOXNU9YUFlTT/cMlEJRVkFTUp9oGfslJFdO2fBlsXLd+7cfaF/0uL+SYu7++e3dc5etmJ3YUmrkqo+2RaA4kBaXsPA2MHdI8zFPdjbL8bbLyYuqcDbLyYyJiszu8rB0U9JRZdspKiiw+DqERUUlh4SlgFBoeFZAUEpIWEZfgFJvgGJoeFZMfGF5KHY+GLfgESGwNCMzNyG9Iza9IzajMx6OIJwIeLkoYzM+oSUMlAQSctrKKnq0wSp6AIAPLtaJBfFFQcAAAAASUVORK5CYII=" nextheight="640" nextwidth="1288" class="image-node embed"><figcaption htmlattributes="[object Object]" class=""><em>Unexpanded default prompt in Zed chat</em></figcaption></figure><p>If you prefer LLMs apply the recommended suggestions, the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/zed-industries/zed/blob/main/assets/prompts/suggest_edits.hbs">suggest edit prompt</a> can mimic the same functionality until they launch their agentic capabilities.</p><p>[todo: link ref to github prompts]</p><div class="relative header-and-anchor"><h4 id="h-multibuffers">Multibuffers</h4></div><p>Beyond multiline and multi-file editing, you can run inline assists against all selections, even if they don't match. Want to update Stripe to another third party library? It can try to find the comparable types. I'm sure you can cook up a better use case!</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0537e3696b7139391ef219ccac37c73c.png" blurdataurl="data:image/png;base64,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" nextheight="1900" nextwidth="2126" class="image-node embed"><figcaption htmlattributes="[object Object]" class=""><em>Inline assist against all references to Stripe types</em></figcaption></figure><div class="relative header-and-anchor"><h4 id="h-mcps">MCPs</h4></div><p>Model context protocol is all the vibes today. Using their universal slash directive, you can create your own extension to interact with a non LLM service, interfaces, or APIs with natural language. More to come on this.</p><p>The postgres extension I've tried so far has been surprisingly useful - it checks our db specification against dynamic datasets. For instance, running the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/zed-extensions/postgres-context-server">postgres-context-server</a>  and printing out my tables without instructions allowed AI to compare my defined formatting against how real-life orders are actually stored from user interaction. This  provides  feedback to improve my schema using real data instead of mocked data.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/b133105b890e69a7674ba0a8ba7d69d0.png" blurdataurl="data:image/png;base64,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" nextheight="1258" nextwidth="1248" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><div class="relative header-and-anchor"><h4 id="h-using-models-by-task">Using Models by Task</h4></div><p>The consensus is Claude Sonnet 3.5 v2 is great for implementation while GPT-4o is better for planning out drafts.</p><div class="relative header-and-anchor"><h4 id="h-probing-the-models">Probing the Models</h4></div><p>When tackling a new domain, like building my first set of server APIs or an SDK, I'm less familiar with clean code practices. Asking for best practices or probing alternate ways to perform the same task after the first response is helpful. Often this feels more like a stylistic choice than a matter of correctness. Still, it's a great way to learn.</p><blockquote><p>Claude is very sycophancy. As it stands, it won't replace your mentors since it's very agreeable to your POV. Don't expect it to argue, but do probe it for variations.</p></blockquote><div class="relative header-and-anchor"><h4 id="h-emphasizing-brevity">Emphasizing Brevity</h4></div><p>Ask LLMs to keep responses succinct with only code snippets or brief explanations if you're familiar with the intended task. When refactoring a function without relying on a library or converting code between languages, you're not trying to learn something new. I'd suggest adding these requests at the end of your prompt.</p><pre data-type="codeBlock" text="Keep your explanations brief. Only show me code snippets if asked for code changes while printing out the full function rather than inserting code comment blocks. Do not add user comments."><code>Keep your explanations brief. <span class="hljs-keyword">Only</span> <span class="hljs-keyword">show</span> me code snippets if asked <span class="hljs-keyword">for</span> code changes while printing <span class="hljs-keyword">out</span> the <span class="hljs-keyword">full</span> <span class="hljs-keyword">function</span> rather than inserting code comment blocks. Do <span class="hljs-keyword">not</span> <span class="hljs-keyword">add</span> <span class="hljs-keyword">user</span> comments.</code></pre><div class="relative header-and-anchor"><h3 id="h-auxiliary">Auxiliary</h3></div><p>The following aren't Zed-specific but are powerful for vibe coding or AI-assisted development.</p><div class="relative header-and-anchor"><h4 id="h-isolated-pull-requests">Isolated Pull Requests</h4></div><p>It's good practice to create create feature-focused pull requests so users or API users, if interfacing with a non GUI, remain isolated. This lets you quickly revert commits if needed in production. You can reference these commits via an LLM and ask it to extract features while resolving conflicts with downstream commits.</p><div class="relative header-and-anchor"><h4 id="h-isolated-tests">Isolated Tests</h4></div><p>Like pull requests, writing per-feature tests helps you confidently add new features without introducing bugs or altering existing functionality.</p><div class="relative header-and-anchor"><h4 id="h-scripts-are-your-friend">Scripts are your friend</h4></div><p>In another world, I might think twice about building custom scripts. At Coinbase, one of our core engineering principles was 1-2-automate. The logic was simple: above a certain threshold, the cost-benefit analysis favors process reuse, which can be as valuable as core code building blocks (aka glue code). This could include operations tasks like reconciling payments, writing test mocks and fixtures, or automating Slack notifications.</p><p>Pre-production on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://outpaint.io/">Outpaint</a>, I needed to frequently update DB schemas and refine relationships. I wrote an elaborate script across 4-5 prompts to tear down the DB, reconstruct it, and run migrations. Not only is it functional, but it's also clean and beautiful, complete with log files.</p><div data-type="embedly" src="https://warpcast.com/artivilla.eth/0xd459cabc" data="{&quot;large&quot;:true,&quot;title&quot;:&quot;Arti Villa on Warpcast&quot;,&quot;description&quot;:&quot;I can read Shakespeare but I can't write like him. I can read much better clean code and tell its organized than I can ever write myself. Check out this script I made in 20 mins to hardreset my dbs.\n\nwith log prints and everything. https://imagedelivery.net/BXluQx4ige9GuW0Ia56BHw/2918ce2a-2280-4468-8d4d-ad5eec86d700/original https://warpcast.com/ccarella.eth/0x42705d6c&quot;,&quot;url&quot;:&quot;https://warpcast.com/artivilla.eth/0xd459cabc&quot;,&quot;thumbnail_url&quot;:&quot;https://storage.googleapis.com/papyrus_images/3955a884bffc463d8f6fce4e0599eafd.png&quot;,&quot;provider_url&quot;:&quot;Farcaster&quot;}" format="small"><link rel="preload" as="image" href="https://storage.googleapis.com/papyrus_images/3955a884bffc463d8f6fce4e0599eafd.png"><div class="react-component embed my-5" data-drag-handle="true" data-node-view-wrapper="" style="white-space:normal"><a class="link-embed-link" href="https://warpcast.com/artivilla.eth/0xd459cabc" target="_blank" rel="noreferrer"><div class="link-embed"><div class="flex-1"><div><h2>Arti Villa on Warpcast</h2><p>I can read Shakespeare but I can't write like him. I can read much better clean code and tell its organized than I can ever write myself. Check out this script I made in 20 mins to hardreset my dbs.

with log prints and everything. https://imagedelivery.net/BXluQx4ige9GuW0Ia56BHw/2918ce2a-2280-4468-8d4d-ad5eec86d700/original https://warpcast.com/ccarella.eth/0x42705d6c</p></div><span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link h-3 w-3 my-auto inline mr-1"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>Farcaster</span></div><img src="https://storage.googleapis.com/papyrus_images/3955a884bffc463d8f6fce4e0599eafd.png"></div></a></div></div><p>In a way, we've created more work for ourselves but I'd argue it's more fun than repeating tear-downs four times daily - now I can justify the cost.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7bda00bc1068207175e96636bfc48a09.png" blurdataurl="data:image/png;base64,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" nextheight="1170" nextwidth="908" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p></p><div class="relative header-and-anchor"><h4 id="h-my-tiny-shill">My Tiny Shill</h4></div><p>If you're exploring Zed, consider trying my Ariake theme. Drawing inspiration from traditional Japanese colors and ancient poetry, it offers a serene vibeness through its thoughtfully curated monochromatic palette.</p><div data-type="embedly" src="https://github.com/artivilla/zed-ariake-theme" data="{&quot;provider_url&quot;:&quot;https://github.com&quot;,&quot;description&quot;:&quot;Zed IDE Ariake themes inspired by Japanese traditional colors and ancient poetry - artivilla/zed-ariake-theme&quot;,&quot;title&quot;:&quot;GitHub - artivilla/zed-ariake-theme: Zed IDE Ariake themes inspired by Japanese traditional colors and ancient poetry&quot;,&quot;author_name&quot;:&quot;artivilla&quot;,&quot;thumbnail_width&quot;:1200,&quot;url&quot;:&quot;https://github.com/artivilla/zed-ariake-theme&quot;,&quot;thumbnail_url&quot;:&quot;https://storage.googleapis.com/papyrus_images/6f6963060e1249110e1351f45f5358f6.png&quot;,&quot;author_url&quot;:&quot;https://github.com/artivilla&quot;,&quot;version&quot;:&quot;1.0&quot;,&quot;provider_name&quot;:&quot;GitHub&quot;,&quot;type&quot;:&quot;link&quot;,&quot;thumbnail_height&quot;:600,&quot;image&quot;:{&quot;base64&quot;:&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAIAAAD4YuoOAAAACXBIWXMAAAsTAAALEwEAmpwYAAACrElEQVR4nLWUTWgTQRTH14MnES960JsXRRQ96cGbCHoRe/KDgvXQg4mpKFQiUar0ECjFIj15sy0RD0oVpOBVa/3AGqlCa9zPyey2SfZjEtPOTrvZyUh2YrJutCjUH8vO8Bjef97/PUZgAfQP+L7fufcDWvFWBr4JJ2SMCWyDoJQuV6oVVP5eXXZdt+Z5PN4UQAhBqIuSDEA+J0qmZWsAaADMZucghKIkf5mff/P2vShKjuO8fDWdzc6BIK6oKiGEMXb/7mii6+Sz0YHdQoPDew5x1YYApXRsIjM19eLBWGby2fPxiczjyafpoZHe2OXB9ND4xMNL8SupgcGz3T2xxNXp1zPpoeF437X+ZOp68mZ/MlUsFhljfd09x/btygzHjmwPFATBC4oQfmtc2FDaEYnAE92I9+3dKqQuHt+/Y3NUgFIKoaEBKCkK1A0N5DWQB9BQVAigvlQoqgDyPdQNFcBvkpwTZQB1Vq9TSr21NcZY7PyFO/FTxdyTg9s2cQGyutoU8H1fA/mFnCSKiqwAAA1RkqG+qKhQUTUA9a85WQN5WdUWco32YOxi7BKy2qwgEDh34vTRnVs+Zm4faDok+L7fFKizOkLlkmnZtmOaVrlSMS0bIWTbju0g20GmZTsOMk2rUCxhjDvnhzH2YebdYCLx6VFmPHmrt+vMvfRIu8n/FYEv9UCN/yPUQ31ep9WU0prnUd+veU1+EVgfShvfP9G6ihBKwa/ZPhF5CWiojnVKifBziqBu2044naJCDeR5pSXTAlDn7S0USoqqVatVbmxnrY0zJpqdE9sCDftqNdtBxuIS1A3TshljhJCS6UB9kRBCKV1ZwQDq/I1DqKIByMc8ApcsmeXsZzH62HmeRwhZwbg94J6HMebjTCnFGLdccl2Xx//Kog0nPBQ/AOdzbW8jwgL4AAAAAElFTkSuQmCC&quot;,&quot;img&quot;:{&quot;width&quot;:1200,&quot;height&quot;:600,&quot;src&quot;:&quot;https://storage.googleapis.com/papyrus_images/6f6963060e1249110e1351f45f5358f6.png&quot;}}}" format="small"><link rel="preload" as="image" href="https://storage.googleapis.com/papyrus_images/6f6963060e1249110e1351f45f5358f6.png"><div class="react-component embed my-5" data-drag-handle="true" data-node-view-wrapper="" style="white-space:normal"><a class="link-embed-link" href="https://github.com/artivilla/zed-ariake-theme" target="_blank" rel="noreferrer"><div class="link-embed"><div class="flex-1"><div><h2>GitHub - artivilla/zed-ariake-theme: Zed IDE Ariake themes inspired by Japanese traditional colors and ancient poetry</h2><p>Zed IDE Ariake themes inspired by Japanese traditional colors and ancient poetry - artivilla/zed-ariake-theme</p></div><span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link h-3 w-3 my-auto inline mr-1"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>https://github.com</span></div><img src="https://storage.googleapis.com/papyrus_images/6f6963060e1249110e1351f45f5358f6.png"></div></a></div></div><p></p>]]></content:encoded>
            <author>artivilla@newsletter.paragraph.com (Arti Villa)</author>
        </item>
        <item>
            <title><![CDATA[an opening when products go up market]]></title>
            <link>https://writing.artivilla.com/when-products-go-up-market</link>
            <guid>Jzqk86Wd7LPyr7aECwso</guid>
            <pubDate>Thu, 06 Mar 2025 01:58:41 GMT</pubDate>
            <description><![CDATA[A way find products is to look at markets, find a stream of recently acquired companies or in the past that typically get aqua-hired or acquired for their lean products to server enterprise clients. Then go build the 0 to 1 version of that to serve the prosumers and SMBs players. There will always be a lot of companies that require a few core features, and it's to fill those shoes. Resend did just that.]]></description>
            <content:encoded><![CDATA[<p>One way to find new product opportunities, when not focusing on technological risk, is to analyze markets where startups are being acquired. Look for companies being purchased either for their lean products or through acqui-hires, where teams are brought in to solve problems for enterprise clients in larger organizations.</p><p>Then build the 0 to 1 to serve prosumers and SMBs (small and medium-sized businesses). The long tail of companies requires only a few core features, and your goal is to fulfill those needs. This is typically easier to accomplish with smaller teams.</p><p>Moreover, this type of product can be built by engineers who excel at product development, design, and marketing—skills that rarely overlap with traditional computer science graduates. While these technical backgrounds are crucial for scaling technology companies, the immediate challenges are more about skeuomorphic design, where user problems are well-defined but the execution—creating something seamless, easy to use, and delightful—is often the challenging part.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://resend.com/blog/introducing-resend">Resend did just that.</a></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/fef96c98d869b9d8e5cbad891115e7d3.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAHCAIAAADmsdgtAAAACXBIWXMAAAsTAAALEwEAmpwYAAACEElEQVR4nIVSTWjTYBj+cAdnS5otDc2nsjEb15CsbcTa0MIKxaN48SB48SyedxhFyJistFqKVKqLphDS4BbKWhYhxVZaSktNfwKzYA47bKfhLh52EY9Km7GeZA8vD+/PA+8PLwAA3PQusfHYEk15/QwZDHj9DBUOUeF7ZDAwcUJ2nolyJBtc8PmocGiZZalwiAwGVlajbHzVF75LRzg6wrHxGB3hgvHYvMcDLhB7/Kjx+9fHYVsa9UvHPz4dHsjWQBr1i5bZ+/tHOz16265rp0dfzk5ka/CmqUuj/rbR2jk8kL5/e6VXkprK70obqrwuCbwqb6jyu87XRcoHALgyMzNuwMZjSa3Eq/LL8k62/vl1tbIm5l8oIr8r8aqcUAqbe0pCKfCqvCbm03o5qZU295Tn2VRCKeAQgkvhRNE5HHeiKIJhczjuwjAcEi4Mc6Koa5JBpuy+CNGJ40SQWYfjqsMx67g24amdjw8AuP/0yYdeK9+pJ5RCrlnd2lefZVNpvZypaZmati4JuWZVMBqC0djaVzM1TTAaotndNlq5ZlWxhoo1zNS090ZDsYai2RXNbr5TT+tlJ4KcN4g8fFA7+ylbg6JlpvSKLSpaptBrl44tXpXdkJj3eNzEmHEIcQjHISRwCG22q3bJTRC2crqB58Z1Jsrdomkmyi1SPtLPkP4V0s8s3xm/ysJt8vIr/x//AP7mzPTt1c90AAAAAElFTkSuQmCC" nextheight="315" nextwidth="1461" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p></p>]]></content:encoded>
            <author>artivilla@newsletter.paragraph.com (Arti Villa)</author>
        </item>
        <item>
            <title><![CDATA[how to use LLMs for writing and more]]></title>
            <link>https://writing.artivilla.com/how-to-use-llms-for-writing-and-more</link>
            <guid>ZHkkTsnWybGuNmf7PTP4</guid>
            <pubDate>Sat, 25 Jan 2025 14:09:45 GMT</pubDate>
            <description><![CDATA[I’ve always wanted to be a writer. Not the the kind of writer who publishes a book, but rather someone who can think through writing.]]></description>
            <content:encoded><![CDATA[<p>I’ve always wanted to be a writer. Not the writer that publishes a book, but someone who can think through writing.</p><p>Reading simpler language made me realize I didn’t have any restrictions holding me back as I was equally familiar with the word choice I was consuming. I didn’t struggle with ideas for writing — I struggled with sentence constructions and rhythms I enjoy when I realized can be resolved using LLMs. LLMs can become a learning tool for my deficiencies.</p><p>With the help of LLMs and a few pointers I've been able to write more freely unabated and I hope these are helpful for writers, particularly non-fiction writers, that are starting at ground zero.</p><p>Write like you talk. Sure, you’re going to have a lot of punchy notes and fillers words but those can be corrected later.</p><p>Stop yourself from rereading. When I write, I often have a tendency to go back and read chunks while I’m waiting for my next thought or point to emerge. Or I’ve made a point, and I don’t know how to proceed to the next one. Maintain writing and rereading as separate activities. It also doubles as a way you save time you could have spent writing more.</p><p>Optimize for maximum idea creation. If I’m stuck in the writing process, go back to the core argument of this blog post was trying to refute and pretend you’re speaking to a friend and make those points again. Did you find something you missed out? Try the steel-man argument — what is the unique insight most reasonable people will argue against? What life experience triggered you to write on this topic? Did you observe something in the wild? The point is to create content, not quality content as the editing process allows for those refinements. First bulk, then cut.</p><p>Separate your writing from your editing process. I didn’t quite think of the ideation phase and the editing phase engaging two different parts of your brain hemisphere. Not only should they be done separately, ideally they’re done in separate physical spaces and times of the day to allow your internals to realize these are separate activities.</p><p>If forming structure is difficult, write in bullet points. As an engineer, I often think of building a system as largely critical user experiences and then building out pieces of the system as high level modular functions — and then have LLMs  write these detailed functions that are largely syntactical and are something LLMs are fairly good at today. Similarly, once you jot down your bullet points — take each one at a time and expand your thoughts on them, see if you can find connected thoughts between those points where one flow from one to the next. They might not exist and that is okay. In fact assume they won’t exist as you don’t want the added subconscious pressure in the writing phrase.</p><p>I’m still learning elements on style but here are some tips I’ve picked up reading some books on writing. Remove all adjectives and see if it clarifies or simplifies your writing. Convert active to passive voice — this hammer to the nail isn’t a simple change — you might have to rewrite and rephrase nearby [statements]. I’m not so sure that’s a perfect word choice so I’ll drop the [placeholders] around phrases or words I feel need revisiting.</p><p>Once you’ve dropped all your thoughts and arguments onto a page, LLMs are your swiss army knife. Ask it to help you find better word choices for the [brackets] in this given context. What is redundant? Have it recommend punctuation changes and why it recommends doing so. It’s about learning how to fish as you fish. Learning to write as you write. The best place to learn is in the context of your own work.</p><p>Ask LLMs how many arguments have been made and if any are not clear enough require more analogies or background. Ask it to distill what it learnt from your post in a single sentence and verify if it matches your original title. This helps ensure your writing achieves its intended purpose and maintains focus throughout.</p><p>If you’ve written enough modular content as modular streams of thoughts, it could potentially aid in help restructure and reshuffle your writing.</p><p>If you've written enough modular content, LLMs can serve as structural advisors. They can help restructure and reshuffle your writing, ensuring ideas flow naturally from one to the next.</p><p>Beyond basic editing, LLMs can enhance your creative process. They can generate single-line titles, suggest alternative ways to express ideas, or help develop compelling analogies that strengthen your arguments and do mundane work as citing your sources into your footnotes. The goal isn't to replace your voice but to refine and amplify it.</p><p>And there you have it. My simple guide to writing.</p><p>Attached is a brief snippet of how to engage with LLMs to help you in your editing process.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/a1e590448022d99a77cb2b31e66a4007.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAVCAIAAACor3u9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAEAElEQVR4nK2VMWjcVhjHL4ZrAoqp7ng6dJZDFXoF2SCHdrkOV7h0UECLJhEUG0SoMqiBh4loepMS0KJFk5aXlsqDbBApaNH0FkGDoFFTNDRqBkFz0zXg5aDgvZyeLV9qu/XQH0JITzr9v+/9v++7FgBgfW2N528KgvDZCaIokrMobjUr5yIIwubG5ubGJs/z/X6fW4JlWYqiWj2G+fSjwaPd3Z9evAjDfecE234SBIHjOK7r+r5v1Xg1zTue5yGEXNcNgsCyvoEQTiYTy7Js27YsS1XVdrvdAgDQdAdCGMexoijSKXdu3/5SlmVJkmRZVhRlPB6DM7As2+10V69fv/bBtZUrK633WWQAAOgxvadPnkZRFIYhhPDevW3DeAAhVFUVQmjW6LquaRpbw3Fr5IJlWSJD0zRFUYt4Wy36BKqmBQADAKMoCkLI8zy1RlEUWZY1TSOxK4qiaZqqqkaNqqpazc72jmma97+6bxgGeVNV1Sb8drt9nAEAQBTFOI7zPJ9Op0dHR3meZ1lWFEWWZUmSFEVRVVWSJFVV5UuQdYwxWccYl2XpOI5pmpPJRBTFxgNaluWyLPM8//H581e/vEqSxDRNVVXJmcSraZqiKCQDko2mabqu72zv3Nq6RaoIAIbneY7jeJ4HADQZMJJ0J66JoghjjBCyaxzHgTWPv31M/LBt2zRNwzBIwdT1ZguC0D5D48ECXdcxxnt7ewihKIocxxGEDWIUfeLY2QuKWqWo1Xb7arfTJfGeZWFyXRic53lxHJOqT5LE933+Eqyv31hfv8GyLE13LhQAgCEmY4wdx0EIFUURRRHP3yS/v+hYbtp/EVh4IIpbRVGQwP94+/bnly8VRWHZ/v8isMhAEDaiKIJwN45j0zTXOK7H9LhL0LQbTdPt9tWzPjcZiA+/fogQOtg/ONg/MAyD5/nBgo8H57Fswyf1bSO2DE3TxwKCIJACxRiTek2SJMsyjDHxI03TLMviOE7TFCFEHuV5XlUVQog453me67qe5/k1CCGO404zSNO0LEvy3el0OpvN3vz+5vDw8N2f70jfzmazsiynNWEYki6ZTCbNLPrHpDsddkTA9/0wDMnIk2VZVdXhcDgajSRJGi34Yjj8nNzKstztdFeurFAUBQCoN6ffyDTD7li12SKSWhiGvu8bxgPTNCGEuq4bhgEhlCSJtK5lWeSR67oQwstXkeD7/q9FgTH2fT9N06qqgiAgroRhWJYlQkiW5fF4PBqNhsPheDweDoeX7ANAMgiCII5j27abiRRFEUIoCIIoijzPs217MBgs/9v8t0CPYT7sdh/dvfvX4eFvr1/P5/Nnz777/odgPp+TgVyWJdkrUp0XdUO30z1X4G8XKlJ0PTnUxQAAAABJRU5ErkJggg==" nextheight="1330" nextwidth="2050" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p></p><p></p>]]></content:encoded>
            <author>artivilla@newsletter.paragraph.com (Arti Villa)</author>
            <category>writing</category>
        </item>
        <item>
            <title><![CDATA[shipping figma plugins]]></title>
            <link>https://writing.artivilla.com/shipping-figma-plugins</link>
            <guid>6oVCyjwELhs6Ca7I9b8K</guid>
            <pubDate>Fri, 27 Sep 2024 22:59:40 GMT</pubDate>
            <description><![CDATA[I built a thing. As with most things starting 2022, I primarily build products I'm a consumer of myself. This project emerged from my need to manage a large volume of prints, including direct-to-consumer (DTC) non-fungible token (NFT) artwork prints for premium apparel, caps, packaging, clothing and shipping labels, and anything else that required automation for Outpaint. First things first, figma plugins are essentially sandboxed mini applications. They have a main thread that can spin off a...]]></description>
            <content:encoded><![CDATA[<p>I built a thing. As with most things starting 2022, I primarily build products I'm a consumer of myself. This project emerged from my need to manage a large volume of prints, including direct-to-consumer (DTC) non-fungible token (NFT) artwork prints for premium apparel, caps, packaging, clothing and shipping labels, and anything else that required automation for <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://outpaint.io/">Outpaint</a>.</p><p>First things first, figma plugins are essentially sandboxed mini applications. They have a main thread that can spin off an iframe for their visual widgets. While the fundamentals of the web are all you need to ship, I recommend picking the stack you're most comfortable with. In my case, I defaulted to react but there are <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/figma/plugin-resources">tons of boilerplates and tooling built around this ecosystem</a>.</p><p>Here's a list of tools I landed up using:</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://yuanqing.github.io/create-figma-plugin/">create-figma-plugin</a> boilerplate to get your main.ts and ui.ts files already configured. It also comes with a really useful <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://yuanqing.github.io/create-figma-plugin/storybook/?path=/story/index--index">react components</a> library so your plugins can feel native to the platform.<br><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://railway.app">railway.app</a> for all my database and servers. It's very affordable so I'm unclear on the benefits of a serverless setup. Not to mention, railway comes with templates for <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://railway.app/templates?q=drizzle+hono">common templates</a> so I repurposed the drizzle hono package for my usecase.<br><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://orm.drizzle.team/">drizzle orm</a> is hands down the best experience when it comes to managing dbs and migrations. you don't bend to its will, it bends to your typescript schemas. the copywriting is killer. what more do you want?<br><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://polar.sh/printshop/">polar</a> is the newcomer in town. Setting it up required the largest effort, as I needed to consider pricing plans, licensing keys, and how to capture the application state simply.</p><p>If you plan to write, tons of plugins I would also recommend stacking them as packages in your <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://turbo.build/repo/docs">Turborepo</a> so you can benefit from the the shared scripts, easy of handling library upgrades and not having to parse through 200 repos to make batch updates. In addition, I also landed up dropping the server repos as packages. This doubles as when you start AI driven driven development using editors such as <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.cursor.com/">cursor</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://zed.dev/">zed</a> that greatly favor monorepo so it can pull context across the entire folders.</p><figure float="left" width="50%" data-type="figure" class="img-float-left" style="max-width: 50%;"><img src="https://storage.googleapis.com/papyrus_images/262b8dcdae0df4456e4d01a271b462a2.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAIAAAAUMWhjAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEcElEQVR4nKWUX0xadxTHf2nSPiybC9pa2yqavWxPe9mDUWc3O+sE1Gg297D/qTE+2cRl6VyyqfW/FVEvIFaCdUNBmcJK0fWqCAXk34UrXpFeBbl45YJXmBq7LGmyZAuo3d6KLPnkl/M7v5Pz/f3OyfkBCbdKOVZP4EtL6o41+5TjiWTdodrEHlsWhL412GWWoqYxj1MZJpHkALUfg8pCEPQZhe0f9DS+MyWumRB9Pi2pE3Mrfh6o7rrztkJcoxqr3yORKIUmAXCvLLhXFnBM71mZezIveYotraFzLtuvHhdsM07qfxNjDhi1qTEHnBxgQsqflAt7e5tuN9SNS4eGRV3Doi4IaufxWn4aG1AoRmRSgVwmnJDykwOMS6FfFKIffmxgV5WKRJ2N39ezq0q/+PqTm2XFtxtqJ+WCpFOfCGhhuRaWG7QKs16p1yqW5uUWo+oYm/GhUTd9HJA0IEKhRxG3FpbzBW1BvyVEWI26abNBZVlWzUyPYA74YHc1ufaeNDlEWA9pTC4TcqpK7ctqlUrCriq9VffZrdpP3y+53tTc8Ed0PURYaRJJDvDC2vaa9oJOYsO0RyI7PvOOz0xsmLa9pqRTnwiESeRg16VfnOLxWvy4KUqhqHXWbJhxo/Ahjf3P7DGBEGF9FnU/GOWVlBU7rZpxKZRXlFdY8u7M9P1nUfeOzxwibCHCRpNI3LAmWaIohcZn1XnckqPIWpRCwyRySGP7IfQw3ueDXdfvlPPMAkG/hSYRs0GlmBr246b43M5pYbkbhXd8ZqNuBkNhvVbhsGrMBtWqA972moJ+S+KA5weev//02k3K7u5Gv0c3oxjiQ63NLd+IhJ12k3Kwv0Uo6OjsbORDrW1t3w72t+yHnH8dPX1+4EkQwBdDfDE0MCxoG+yPGwNcAY8r4HVD3NbeDkgs7I1tuT1Qz/EKxeMTB6QwmSnZb7yaDl55DbzOzGIwM1OZ1xiZ6YzMS2nZWSkZqamZGYzs7NTsbEacFObZAJdzrl598620C+AKAJevnGecBxcBuHgBpJ0DqQCkAcA4B9IzL2XkMDNyrmXkZJ0VkMtix+Hkslh5LHYBqzSfw8llsfM5FXkl7+V/eCOfU369orKgojKfU34afAbA/u7qKW7Kv2yYvRfAF2kS8WIaD6raxDSUfxmzybbW5wL44l4Q+U98QgCatNOkPUxY9nacXkwz0lNmmL23pG4X95TLRF9NiWs0su8k3MrRvo+E7cVrdkWUWgkTljBhDceGzv5S/v2LaBKJUGgA19Ik4luDgz5jhFqhSQflN9MkQnqNuOsRTToi1Erc74zGT8/w2dGkg9zQ69TduOthhFoN4NpNTLOJaQK4zuNUBnBdmLASuDaA67bW5wO4dms9domXarwQsEepVdylHrxbZHrcPz/dLLhbNNpXPS74Ui1tELbfHGov6W8qfCS7I2i9cb+LM9pX3ddUgJoe7O+647VK6AUxArieJu3HtwufOkN+S9Bn3MQ0NOmI+QlryG8Jb9sTKdE/3Cwzb0wBS4oAAAAASUVORK5CYII=" nextheight="422" nextwidth="552" class="image-node embed"><figcaption htmlattributes="[object Object]" class="">stacking client server packages in turborepo</figcaption></figure><p><br><br></p><p></p><p></p><p></p><p></p><p></p><p>Pricing* is always a sensitive topic. There is no fixed price. If customers frequently complain about the cost, it may indicate that the value isn't fully realized, they don't understand it, or they might not be the ideal customers. The product may address only a small portion of their pain points or be the only option available. Ultimately, the price reflects what users are willing to pay. I believe plugins should require a one-time payment, allowing users to choose whether to pay rather than facing recurring charges.</p><p>This upfront cost enables plugin developers to invest more time in adding features and attracting new users, rather than focusing solely on maximizing value extraction. Since plugins typically serve a specific purpose, they usually perform targeted tasks rather than generic ones, unlike platforms that can evolve their features.</p><p>The only caveat is when your plugin relies on an API with variable costs, where charging a small recurring fee for unlimited or high-threshold use. The basic plan still includes API usage but is capped to prevent abuse.The only caveat is when your plugin relies on an API with variable costs, while I charge a small fee for unlimited or high-threshold use. The basic plan still includes API usage but is capped to prevent unsustainable work.</p><p>Another important reminder is that plugins are mini applications. Like most software, they operate as a service-based business, which means there are recurring maintenance costs and support you will need to manage. For paid plugins, you will likely have to deal with taxes and refunds. Price your product based on what you can sustain, rather than undercutting other plugin authors and compromising quality. I have found <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://fig-stats.com/plugins">FigStats</a> to be an incredibly useful tool for tracking analytics and studying other authors.</p><p>As always if you have any issues, hop into discord or study the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://yuanqing.github.io/create-figma-plugin/reference-plugins-and-widgets/">open source plugins</a> on common use cases.</p><hr><p>All things being equal pricing is largely a function of positioning and I highly recommend <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.aprildunford.com/post/a-quickstart-guide-to-positioning">April Dunfords work here</a>. Copy writing plays a huge role in not only what you sell but why you sell. </p>]]></content:encoded>
            <author>artivilla@newsletter.paragraph.com (Arti Villa)</author>
            <category>plugins</category>
            <category>engineering</category>
        </item>
        <item>
            <title><![CDATA[everyday tactics on AI first development]]></title>
            <link>https://writing.artivilla.com/everyday-tactics-on-ai-first-development</link>
            <guid>I6VeaDJN94VkbP4BLCpk</guid>
            <pubDate>Mon, 09 Sep 2024 23:19:35 GMT</pubDate>
            <description><![CDATA[I have used ChatGPT for much of the past year, so I have some credibility. I've built mostly from-scratch applications, using AI...]]></description>
            <content:encoded><![CDATA[<p>I have used ChatGPT for much of the past year, so I have some credibility. I've built mostly from-scratch applications, using AI primarily for writing functions and manually architecting structure, and function and domain scopes in my codebase. As always, AI driven engineering is changing at a rapid pace so there is no right way. Here are some useful tactics you can use to <strong><em>build faster, safer, and with more control</em></strong> than simply prompt engineering.</p><p>The more specialized you become, the more control you can extract, but that gets tricky when you shift to prompt engineering. Cursor and handful of other products do a remarkable job of enabling you to pick the output, but you often loose control as much is generated. There are also instances, mostly related to styling, where the end result requires so many iterations that you give up promptly (pun intended) and revert to your old habits. I've fallen into the trap of starting with AI, and at the point where I need to intervene manually, I forget to prompt until the next feature.</p><p><strong>Use Git commits frequently.</strong><br>Use Git commits frequently. When a significant amount of source code is generated with verbosity, it can be overwhelming to validate if the changes work as intended. Instead of reading through the entire codebase, engage with the product to validate if the changes worked as intended.</p><p><strong>Make changes atomically or structured in domains.</strong></p><p><strong>Use the product to validate test cases and write them as inline comments.</strong></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/cffe805890f1f48e08cada7ad9789cbb.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAUCAIAAABj86gYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC7ElEQVR4nLWUT0zTUBzHe/BuPBpPRC4SOAmeTORg4sF4IUEUMUbQywAlC4QsMSYixh1kYDQCMlL8M2sI64GMApIsMmfZxlgGMYXI9gCBbgT2ukHbN0jLM6z7p6BRpp+8Q5O27/O+v/d7j8D/GSL3KVAK+CMIoVwFKDFFXl5eUVGRwWCgaTrtgxCyLMvzfK4JEEJ6vf5caSnDMIFAIJ0GIcRxnM/ny1XA8zzLsn6/P5FmN2tgAMA/E5h7ewEACMXXI1CSZYTiiqoCsJCrQFFVVd0+c6mK+AWyJOSaQIzFHpueEcQx4ngBkV9y5PR5ouAskV9CnChsevT02yLIVbARiYwMM00NtR7XBMY4KsCoABNvdudmZ//ZHkxOTS0tL0uyvLLKa+OthRqwWjmOSwoUVVVU9RACCCGdIH2yEEIMw+h0OpIkM4I/BKE4QnHteWd7J50AIeTz+RKNhAAAHMdBCHmez5Toy1yAsTu909xGJMLzfCwaDYXCoVBY+24tvIbxrlZfRVVESRIlUVsvhJCiqPLyco7jfro2WJbdE2iV6Xw90Gmh31htz1+YJz0e2+CQ3z+zsso7HU63y720MP/wwZOysurLFbXNdY13KitftrXpb9y0kn07ikJRlNFoJEmSoqhsgS9BJoGiqsHgwrjTjTH2uL2CEMMYT0/PYIzjstjaYhoZdViowYZb9T2mDmFLfNdLvu82K6pKkqTRaDQYDHq9/oAEaQHG+PeCsbFP/f1D95vufWRsGGPXuGOcYTZFkWXZrE1KkrkqkiWy0MTRk6cuVFhp2/zX+ZGhD+HwuiDEvB7vYjC4sbba2mK6XnX3ytX65rrG7rYOSZZfdZmtZN+mKLom9k7AfpKbrAnsnycJgii8eE1r2QN/2I7v9Y9jeLS+opLq7mmuvk11dW2Kot1uBym0tWOMKYqiafqv23Q/EEKSJPUJdDpde3t7Z4Li4uKamhoAsq4KYUuUZPkQDgAAm8KeguM4AADG+DuEVJs8HiMLdwAAAABJRU5ErkJggg==" nextheight="1288" nextwidth="2090" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Manually writing tests, which can be time-consuming, consider visually generating tests for certain features.</p><p>In the event that future test cases fail, you'll have a valid commit where the feature works. This is a trade-off that may make sense to fulfill at a later point. Tests ensure that features remain valid at every commit.</p><p>You can also generate tests at this point but I personally my productivity and momentum drop sharply so its a personal choice. More companies die due to lack of PMF than having to many bugs. There are other ways you can handle those cases which I will discuss in a future post. Personally 0-to-1 products should focus on customers, getting payments and stellar customer support.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/f5a8d165bc8f39e3b6ac69c44f93d787.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAJCAIAAADcu7ldAAAACXBIWXMAAAsTAAALEwEAmpwYAAACaUlEQVR4nIXST2jTcBQH8Hfw4kHwrAfxKIgingTxpOhOA/Git4EOxT8HPcgugriDiAqCoION7p/MdpvDWphja93marN2SdPStF2a/hqbJk2a5vdrurS2xi1Syua0A798+B3e4T1+vAe/tuN0ZHNzy3GcnqfT0Dt45JZrPSVJdCr4KRBeXP7OpdI0K8S4Io9qZbNWJlbJ2BM4TqvLngOaP1tFOHgV4AxA9+jskpSiZtxjIxOuj76p129ejbxzvRh4Puwd4jIMKvB7glDQH6HZCM1IBQVj08CVHSWdmBXS9WAQLr880Du0VsirpkwLMTqX4IqZUJpOyOtsPjnPr1BSTGsStYk7wbP+ft+sP7AUTPLZglrOy9puOakoK4q1QRBCtm1bxEwysUiEiUSYeCyhKVjKy1pRs23bcZytza1OMOPzD4975gJfRVkjVgNX67uphhmKI4oTGV4pGtWsqEhqOZrgw0x6jc2EmfTKN4bL5HixgCQVSWpO1nhRLhGLWI02+LIU/OCZSKe4zh04jlP/YceTgq7rWZSz7dYtVImJtWqpQExjo1ZtWKZVwQSXDYIJwcSsmATjZqP55wcDk4suHzXio94vsG3uQMwdiLsD8fF5di6UgnN9cPgGHL/vp+K6Jk5PeSY9kwH/Ah2l6OiqouSwUTT+puvyDoDuJ3DsJpy+Byduw9mH0PUYLj6CU3fh5J1W/UIf7L8CcB72XXNRIaGGJoLet95RHzMf1ZPcBuKsXFty+/0HsGyMoqjw6mq2HUFACBFs1Ot1UqmokgBHewAuwaHrY2FKrMufE8vjC15vaCVhopQl/tdv9ZO9Ig/u/yUAAAAASUVORK5CYII=" nextheight="700" nextwidth="2518" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p><strong>Setup a .cursorrules file to store your system prompts.</strong></p>]]></content:encoded>
            <author>artivilla@newsletter.paragraph.com (Arti Villa)</author>
            <category>engineering</category>
        </item>
        <item>
            <title><![CDATA[overheard on the internet]]></title>
            <link>https://writing.artivilla.com/overheard-on-the-internet</link>
            <guid>MSSnt1MEj7AhIgtGdHIw</guid>
            <pubDate>Wed, 04 Sep 2024 10:06:01 GMT</pubDate>
            <description><![CDATA["Happiness is appreciation of the journey. Not obsession of the ends.""Flaws in communication style are a feature not a bug." — Lex Fried...]]></description>
            <content:encoded><![CDATA[<p>"Happiness is appreciation of the journey. Not obsession of the ends."</p><p>"Flaws in communication style are a feature not a bug." — Lex Friedman</p><p>"A mistake repeated more than once is a decision." -- Paulo Coelho</p><p>"Millions long for immortality who don’t know what to do with themselves on a rainy Sunday afternoon."</p><p>"The variation between engineering output is so high that the driven engineers will always be underpaid, and driven towards founding companies."</p><p>"Sometimes magic is just someone spending more time on something than anyone else might reasonably expect." -- Raymond Joseph Teller</p><p>"Talent is developed in solitude, character in the rush of the world." -- Johann Wolfgang von Goethe</p><p>"One can be instructed in society, one is inspired only in solitude." -- Johann Wolfgang von Goethe</p><p>"An explained idea and a demonstration of the same idea often have little in common." -- Rick Rubin</p><p>"You escape your local maximum by remaining curious."</p><p>"We are only as good as the last feature we shipped."</p><p>"If you're efficient, you're doing it the wrong way. The right way is the hard way. The show was successful because I micromanaged it — every word, every line, every take, every edit, every casting. That's my way of life." -- <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hbr.org/2017/01/lifes-work-jerry-seinfeld">Jerry Seinfeld</a></p><p>"Avoid using your past experience as definitive facts or imposition as constraints." -- <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://staff.design/rasmus-andersson">Rasmus Andersson</a></p><p>"Luck is a function of surface area."</p><p>"Learning is the only thing the mind never exhausts, never fears, and never regrets." -- Leonardo da Vinci</p><p>"Competence is how good you are when there is something to gain. Character is how good you are when there is nothing to gain. People will reward you for competence. But people will only love you for your character." – Mark Manson</p><p>"Success isn't an end state. Success is having the freedom to pursue the continual grind you most enjoy."</p><p>"What important truth do very few people agree with you on?"</p><p>"Sic Parvis Magna" -- Sir Francis Drake</p><p>"Being good in business is the most fascinating kind of art." -- Warhol</p><p>"Sometimes you have to play a long time to be able to play like yourself." -- Miles Davis</p><p>"We write to taste life twice, in the moment and in retrospect." -- Anaïs Nin</p><p></p>]]></content:encoded>
            <author>artivilla@newsletter.paragraph.com (Arti Villa)</author>
        </item>
        <item>
            <title><![CDATA[overheard in investing]]></title>
            <link>https://writing.artivilla.com/overheard-in-investing</link>
            <guid>yQKhflLciT71PXbGufnJ</guid>
            <pubDate>Tue, 03 Sep 2024 02:19:37 GMT</pubDate>
            <description><![CDATA["Popular products make prominent founders.""Your initial deal flow might come from founders, but in order to continue getting deals, co-i...]]></description>
            <content:encoded><![CDATA[<p>"Popular products make prominent founders."</p><p>"Your initial deal flow might come from founders, but in order to continue getting deals, co-investors are the best source."</p><p>"Bad investors can’t kill your company, but good investors can help you go a long way."</p><p>"Creating is a no loss process."</p>]]></content:encoded>
            <author>artivilla@newsletter.paragraph.com (Arti Villa)</author>
            <category>investing</category>
        </item>
        <item>
            <title><![CDATA[on finding early technical talent]]></title>
            <link>https://writing.artivilla.com/on-finding-early-technical-talent</link>
            <guid>vHVXwfhWwvnBiBN6dOay</guid>
            <pubDate>Thu, 04 Jul 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Given early stage teams ought to gravitate towards hires that have a bias towards action and can follow through independently...]]></description>
            <content:encoded><![CDATA[<p>Given early stage teams ought to gravitate towards hires that have a bias towards action and can follow through independently you’re often seeking hybrid specialists or generalist engineers. In the early inning there is richer emphasis on identifying product market fit and little to do with how scalable and collaborative you can work with others in the same codebase.</p><p style="text-align: start">You need experienced but often under appreciated talent; experienced<br>here doesn’t necessarily mean those who have traditional backgrounds but rather those who have committed to the trail and error of scoping and solving problems that encompass technical roadblocks.</p><p style="text-align: start">It takes a fair amount of time-exposure to get comfortable with building online. In addition to learning fundamentals of client side, server side paradigms or mobile native workflows, you’re struggling with the unapologetically strict languages, new tools and frameworks that bring an added layer of defaults and opinions and all the auxiliary tools for collaboration including reusable libraries, familiarity with APIs, version control and package managers. This doesn’t even cover best practices that can only be practices or learnt from comparing against failed experiments.</p><p style="text-align: start"><strong>Finding core specialists through open source.</strong> With the exception of building a core technology where the innovation is on the lowest levels of the stack i.e first version of blockchains or browser APIs, most applications are solving customer problems and often rely on advancements in core technology and/or major shifts in human behavior. Startups often employ reusable open source technologies to test out initial experiments until they are large enough and decide to improve the existing OSS systems or bring them in house entirely.</p><p style="text-align: start">Figma built designer tools on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://kwokchain.com/2020/06/19/why-figma-wins/">advancements in webGL and CRDTs that made their browser-first approach possible</a>. In fact, the early version of the user experience was pioneered by Sketch that targeted interface designers. Searching social coding sites such as <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/search?q=webgl&amp;type=repositories">Github</a> or Gitlab for webGL enthusiasts and core contributors is a potential avenue.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/f69f9fc96b088486d37a260ad3a66f8c.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMCAIAAACMdijuAAAACXBIWXMAAAsTAAALEwEAmpwYAAACo0lEQVR4nJ2ST0zTUBzHnwej4WDiVQ9KYkK86MGDxqvGm6A3EhMBMcZEEsiQKMSDYyBsa1FH6/5064Cy1Qzbtz6ajXVjTDYimAjMBDaSZd04GObwIinjYmpmZRl4cPrN5/J7ee998n6/By5cvHTkaN3NxtsPHnZgrywWgnRPTBI2h9GMjxK2csmwlJOejc1r8BCV8YsVjGa850kfaaeCocgUL7gnJt9Q9MCQST84DAAAHA9Z1vd6lOB42G94QZBWC0ESpHXYaHI4XQ6nq739/tXLVxiPlyCtLnosk5UzWfnz2no1UEAuegwK6NC6nMsD9WD2SiUMw5aXl7VSURSDwdDc3KzT6VpbWzu7uorF4ubmZrFYrD4F/QJBkCEpfOg2VVUPCBRFUVW153FPW9s9hJCq/vi+syOFo9OBYGAmBP0Cx0PG43U4XSEpnE5vrK2nNLYKhcLX4vb2t78ItNxtaWlsurVVKCi/IoWjjJedDgSDoUg1v4exzxQvzMZiNQlwfORpb28qldorlTQBAKBPr5fCUY6HPo4TUEC7UQxK1cp4YqEmgb6/P53e0DqmKMpGJgMAeNTVKYozzwcGh3HcjL2c4gXKPe5wuhgvS9opxssazbgUjtYk2N2PNpLz5+qHhjC72xOZm0uuJuVcXs7lKbv9+rUbNPN28eNicnVVzuXXU+WR1CSoZK9UKu8A4Ex9Q9OddsbjXfywlMnKX7YKGGY+Xneio/sZEtH7uZj2d1dWkv8m0JKV5fl4Yj6ecLuZdxB5WB8PEUIiyzDxxAJFj3tYn0atLaqktFtuEQDg1MljC0ufCNKG4yM8RG6GtVmtDWdP837Rx3GUk+YhYrwsFND/vGDEZNLpumdjMcpJE6Q1GIpYCFIKRzVZpaTocY6Hfwp+Ahd7iVB0bxcDAAAAAElFTkSuQmCC" nextheight="611" nextwidth="1600" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p style="text-align: start"><strong>Finding enthusiasts with experience but are ramping up on learning new stacks and frameworks.</strong> Paid meetups, hackathon and dedicated slack and discord channels are often good sources and often have a dedicated #hiring or #jobs channel. <strong>Note: The signal to noise ratio in free communities is often very high so I typically discourage spending time where talent typically doesn’t have enough experience to build complete products.</strong></p><p style="text-align: start">As an specialist frontend engineer here are a list of communities I can recommend:</p><p style="text-align: start"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.com/invite/bUG2bvbtHy">Nextjs discord</a><br><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/vercel/next.js/discussions">Vercel discussions</a> with a focus on NextJs and frontend technologies.</p><p style="text-align: start"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.com/invite/kcd">KCD discord</a> is the channel by Kent C Dodds, a prolific javascript educator and has a broad active community of learners.</p><p style="text-align: start"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.com/invite/framer">FramerX discord</a> and dedicated <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://experts.webflow.com/">Webflow experts</a> are tools based communities or services to find experts in low code with a focus on marketing and content heavy sites.</p><p style="text-align: start">For building type-safe APIs<br><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.com/invite/xud7bH9">GraphQL discord</a><br><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.com/invite/trpc-867764511159091230">tPRC discord</a><br><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.prisma.io/">Prisma</a></p><p style="text-align: start"><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.com/invite/spline">Spline discord</a> for finding artists and web creators building 3d sites</p>]]></content:encoded>
            <author>artivilla@newsletter.paragraph.com (Arti Villa)</author>
        </item>
        <item>
            <title><![CDATA[discovery into passive-active investing]]></title>
            <link>https://writing.artivilla.com/discovery-to-passive-active-investing</link>
            <guid>Fo4gXQr7jDtVTsNIM7PJ</guid>
            <pubDate>Sat, 08 Jul 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[I recently attended as a speaker on a panel talk with HustleFund on “How to Decide If Passive Or Active Angel Investing Is Best For you”....]]></description>
            <content:encoded><![CDATA[<p>I recently attended as a speaker on a panel talk with <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.hustlefund.vc/squad">HustleFund</a> on “How to Decide If Passive Or Active Angel Investing Is Best For you”. Active Investing is generally akin to running a fund and/or sourcing your own deal flow in what we call outbound while passive is frequently responding and investing to incoming deal flow.</p><p style="text-align: start">But the caveat here is achieving a successful passive strategy requires picking up the low hanging fruit and then some. The process can be automated but initiating those processes requires upfront work and given there is no right way to get deal flow and the medium continues to evolve, there will always be a need to build some active strategies in to the mix. In order to become “passive” successfully you need to build up the right “channels” that meet your criteria and identify to your thesis and continue to actively help founders or add value to co-investors such that the flywheel continues to meet your goals.</p><p style="text-align: start">Let’s define what my inbound success criteria is – similar to HustleFund’s hilariously early investments, I lean heavily on investing in pre-seed and seed stage deals aiming to hit 10-20 deals a year with a minimum 1k check size annually. In order to land success early stage, you would need to try at 100+ investments to hit a probabilistic ratio to land 100x bets. Learn more on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=Vf7b0vP3NYE">portfolio construction</a> here. In addition, a significant portion of my investments are QSBS qualified or invested through my <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://altoira.grsm.io/oi4m1rpjxr3g">AltoIRA alternative asset Roth IRA</a>, accounts to maximize investing with no tax on gains if the sole purpose is to continue investing, via early acquisitions or liquidity. As long as the investing accounts are partitioned off, you can repurpose any proceeds for future investments.</p><p style="text-align: start">Given the best deals are oversubscribed*, in order to win this strategy, you need to start active-passive and shift passive-active. That’s a mouthful so what do I mean? To start “active-passive” means finding “channels” where you can get deal flow and then find co-investors who are already participating in those deals or “channels”. I’m in well over 21 syndicates on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.angellist.com/">Angellist</a>. A lot has been said about the signal vs noise ratio on joining syndicates on Angellist but given the enormous existing network of investors, if we believe the best investors remove friction on wiring checks quickly, it will continue to attract the best syndicate leads and consequently deal flow.</p><p style="text-align: start">As you amass enough syndicates with high quality and volume of deals, you can advance from discovery to your selection process. We’ll skip selection for another writeup but it’s critical to have an investment thesis. Investing by nature is opportunistic so it requires having a view of the world where the future state has products and services that will be infinitely more valuable that are under appreciated or simply do not exist.</p><p style="text-align: start">You can have multiple thesis but in order to be an effective passive-active investor, you believe something of the world AND can provide value given your unique brand &amp; skills. However, here is a cheat code. You can greatly increase your value by making your existing network active.</p><p style="text-align: start">I recall the excitement when I first reached out to a founder based in Egypt who had a strong product design background and wanted help with his GTM and fundraising process. I felt helpless. It took me years to realize actively helping meant putting in the effort to reach out to my own network and paying attention to a diverse set of operators and investors who can and are willing to help. Through my experiences, here is what I believe to be true of the future state of the world.</p><p style="text-align: start"><strong>Investing in private companies is becoming more mainstream over the next decade and new risk profiles will underwrite a new class of emerging investors. How we raise funds, who we raise from are becoming universal and accessible and the tools and services unlocking the formation of internet-enabled businesses is ripe for disruption</strong>. Technological advancements in fundraising and utility in web3, ease of distribution through new media and the creator economy and trends in AI, no code and low cost infrastructure capture a significant mindshare in my investing decisions.</p><p style="text-align: start">As an active operator and engineer I spend majority of my working week building 0 to 1 net new products that further enable developers to create multi-million dollar ventures. In addition, as an engineer working in venture-backed technology companies for over a decade, I’m continually exposed<br>to products that form a vast majority of successful SaaS b2b2 technology companies.</p><p style="text-align: start">There isn’t a single way to source deal flow and there certainly isn’t a single way to add value. Here are few steps I’ve taken to expand deal flow.</p><ul><li><p>Joined well known angel networks <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hustlefund.typeform.com/to/K5bbKHJV">HustleFund</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://gaingels.com/join-apply-membership#toggle-gdpr">Gaingels</a> with diverse investors and build relationships complementary to your own brand/skills sets.</p></li><li><p>Joined Alumni networks dated back from high school, Slack channels from past jobs, web3 DAOs I’ve actively participated in, and any online communities I could think of. If you’re an active web3 developer you can also get access to exclusive communities of builder and hackathon networks.</p></li><li><p>Find operators who run Syndicates you’ve worked with or have come to learn that match your investing thesis through podcasts, newsletters, and events.</p></li><li><p>Leverage twitter to meet interesting new investors from your initial group.</p></li><li><p>Upcoming startup founder networks where operators are looking to build something i.e. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.beondeck.com/">OnDeck</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://pioneer.app/">Pioneer</a>, raise funds i.e. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.ycombinator.com/companies">YC list</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mercury.com/raise/seed">RaiseSeed</a>, where builders are building profitable companies ie. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://Acquire.com">Acquire.com</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.indiehackers.com/">IndieHackers</a>, or launching new products <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.producthunt.com/">ProductHunt</a> are all ways to complement your deal flow.</p></li><li><p>Track new founders under ‘stealth startup’ or ‘starting something new’ by scraping twitter, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://Harmonic.ai">Harmonic.ai</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.crunchbase.com/">Crunchbase</a> profiles.</p></li><li><p>Follow builders and developers on social code sharing platforms ie. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/">Github</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://about.gitlab.com/">Gitlab</a> and track their recent projects, commits and highly sought after open source libraries that have the potential to become on prem services.</p></li></ul><p style="text-align: start">In addition to joining, I would recommend reaching out and lending a hand simply by asking syndicate leads on how you can help them with the skills you currently possess.** Key is to join for quality as quantity will come with time and repetition.</p><p style="text-align: start">You can pair these inbounds with any distribution channels you create through blogging, podcasts and dinners with operators. Simply letting people know you are investing in your social media profiles will get you access to deal flow.</p><p style="text-align: start">While founders have a vast network of founders who have already started companies, a huge percent are new founders who do not have existing networks. And professional investors including emerging managers and large scale venture capitalists have built up the largest deal source simply being around for a long time. And often that deal source won’t fit their criteria. I’ve seen a significant portion of new investors that are simply building co-investor relationships and gaining an allocation.</p><p style="text-align: start">The easiest way to be helpful is to create a collection of angels in your network that can help with jobs you aren’t an expert on and assist with, advise or help vet candidates that can help with a given task.</p><p style="text-align: start">If we’ve already connected online, feel free to join <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://brdg.app/to/artivilla?collaboration_token=eyJhbGciOiJIUzI1NiJ9.eyJ0eXBlIjoiY29sbGFib3JhdGlvbl90b2tlbiIsInRhZ19pZCI6IjgzY2IwZThiLTg5MmQtNGEyYi04NjgxLTg5OTk2ZTZmYWNhNSIsInVzZXJfaWQiOiJiMmEyMzIzZS0wNDliLTRiZTQtOTdhZS1jNGEzMDYzYjBkZmUifQ.576sfuhwQtZrQLzEnDIDSh5BCmgIY3SAlT4euBZ2alc">my network on Brdg</a></p><p style="text-align: start"><em>*some links include affiliate links because I share what I use and I use what I believe in. ¯_(ツ)_/¯<br>*it is preferred to do this in an async manner via a personal website or a 1 pager you can forward</em></p>]]></content:encoded>
            <author>artivilla@newsletter.paragraph.com (Arti Villa)</author>
            <category>investing</category>
            <category>startups</category>
        </item>
        <item>
            <title><![CDATA[identifying butter experiences]]></title>
            <link>https://writing.artivilla.com/identifying-butter-experiences</link>
            <guid>18F3OQBqdH04NX71XbZN</guid>
            <pubDate>Sat, 08 Jul 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[It’s been over 2 years since I started angel investing and while I’ve always had a deep knack and enjoyment from trying new products and ...]]></description>
            <content:encoded><![CDATA[<p>It’s been over 2 years since I started angel investing and while I’ve always had a deep knack and enjoyment from trying new products and betting they will exist for the forceable future, being a successful investor is so much more than ‘build something people want’. I figured if I’m good at picking products that people enjoy using and using myself that also can reach profitability, <em>how they reach profitability matters</em> as much if not more.</p><p style="text-align: start">The contrary in itself isn’t true either. I’ve seen plenty of products that have become dominant forces in their verticals that are not loved by their users. Ultimately it all comes down to capital efficiency; how much is a product or service worth and what does it cost to build and distribute it. Macro economics such as the cost of capital largely impacted by interest rates, barriers to entry constructed through regulation all play a major role to what is the underlying unit economics.</p><p style="text-align: start">All companies that go public when aren’t doing well can be acquired at an attractive rate via private equity. It’s an interesting thought exercise as there is no set valuation and returns are simply the delta between the price equity ratio of the market values and your value of that share at a point in time as well as the entry and exit points during the lifecycle of that company. This is why its’ said, it’s often not enough to be right, others have to be very wrong as when the price is baked into the market price there is no delta.</p><p style="text-align: start">So what factors demolish your chances of winning even if the company does do well? Luckily there are only two that matter and they’re both in the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://carta.com/blog/video-series-how-investor-term-sheets-work-series-a-term-sheet-breakdown/">term sheet</a>; the price you get into the round and the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.holloway.com/g/venture-capital/sections/liquidation-preference">liquid preference stack</a>. If the stacking order is constructed in such as way that future investors can change the rules after the game begins, the house always win.</p><p style="text-align: start">So what about finding products that bring joy? Those that <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.nickgrossman.xyz/2019/the-butter-thesis/">deliver smooth as butter experiences</a>. Luckily a lot of those are priced in a business KPI such as churn rate, payback period and CAC. Obviously, identifying these metrics when the product hasn’t existed is downright unattainable so picking things early that can’t track these stats but can be derived from the usability is a competitive advantage.</p><p style="text-align: start">If we’ve already connected online, feel free to join <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://brdg.app/to/artivilla?collaboration_token=eyJhbGciOiJIUzI1NiJ9.eyJ0eXBlIjoiY29sbGFib3JhdGlvbl90b2tlbiIsInRhZ19pZCI6IjgzY2IwZThiLTg5MmQtNGEyYi04NjgxLTg5OTk2ZTZmYWNhNSIsInVzZXJfaWQiOiJiMmEyMzIzZS0wNDliLTRiZTQtOTdhZS1jNGEzMDYzYjBkZmUifQ.576sfuhwQtZrQLzEnDIDSh5BCmgIY3SAlT4euBZ2alc">my network on Brdg</a>.</p>]]></content:encoded>
            <author>artivilla@newsletter.paragraph.com (Arti Villa)</author>
        </item>
        <item>
            <title><![CDATA[what early startups value]]></title>
            <link>https://writing.artivilla.com/what-early-startups-value</link>
            <guid>XMkPLXVt9BAtxxNHFnSi</guid>
            <pubDate>Tue, 04 Jul 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Not all startups are created equal.]]></description>
            <content:encoded><![CDATA[<p>Not all startups are created equal. Paul Graham defines a venture or entity that has the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://www.paulgraham.com/growth.html">potential to grow fast</a>. Often, people conflate the term to mean something that raises capital for growth. And if it doesn't, it's bootstrapped.</p><p>Most often, people use the term startup to define a trade with the hope of building a venture that can potentially grow through raising external capital. And given today's fund structures external capital is seeking a 100x return as there are plenty of options to invest under the lower risk asset returns (i.e real estate, public stock, commodities)</p><p>Why does this matter? Because raising funds inevitably reduces your optionality. You're looking to build something that can scale where the product or service can be replicated at no or low marginal cost; and software provides the highest leverage leading to startups being software or software enabled companies.</p><p>Given the majority of products lean on software as an enabler, early teams predominantly have a higher breakdown of technical roles. So having a technical role or being closer on a technical spectrum is a favorable skill. Note, people often misconstrue being technical as writing code but its a much larger spectrum.</p><p>Here is a breakdown of some hybrid skills that be valuable to any team particularly at the earliest stages.</p><p>- Being a product manager with data analysis skills and setting up product events in app or write relational queries to build meaningful KPI dashboards is an easier and valuable skill to master. i.e Segment, Metabase, Zapier, Airtable.</p><p>- Designer with the ability to write html/css and often build entire marketing sites or functional framework components that can be handed over to product engineers can help minimize the back and forth and QA process. Webflow, Framer, Storybook, Figma &gt; code conversion tools.</p><p>- Marketer with the ability to setup and build instrumentation and processes for your own growth and lead generation experiments. i.e Google Analytics</p><p>What has favorably changed in the last decade is the explosion of no code tools and workflow tools that are often built with these roles in mind. It might still require reading the documentation or going through videos on how-to's but the integration process is often interactive and requires at most dropping in code snippets.</p><p>Generalists are often favored to specialists or specialists with complementary skills that they do not often possess but are open to trying. Conversely, for technical candidates being able to write, sell, design and be willing to help outside your core role can help you stand out outside the pack.</p><p>Given the lower cash salaries and lack of PMF, early teammates are often self-selecting with members that can deal with ambiguous roadmaps but still construct concrete products. Unlike writing and discussions that are often nuanced, writing code is a workflow of binary decisions. You can “checkout” the items in the cart for purchase or you can't. There are a concrete number of flows and screens to complete any task. Regardless of your team's vision, you are building multiple skateboards that will solve a problem for a type of user, and disregard the endless edge cases. Building products with edge cases, through testing is often a luxury and learning to build a muscle that favors how to build for 1 user over a billion gives you more trials that the core need is being met.</p><p>On that note, building something for 1 user can often be done as a proof-of-concept so consistently demonstrating the ability to hypothesize, design, build and test this iterative loop is often the most underestimated skill.</p><p>Given the explicit nature of product teams to have discussions and think  critically which are sought after skills to build robust systems, they often lead early products astray. The term commonly used by software engineers to describe spending excessive time on trivial decisions is "bikeshedding". But early products are subjective at best to define what is trivial.</p><p>Instagram added filters well after it was released to the public, but without knowing if the experiment was going to work, spending a week deciding how many filters and what filters to select could have simply been tested in a matter of a day. The contradictory advice I want to present here is that teamwork through experiments is less favorable because that decision making process inevitably takes more time. The benefits of being "exacting" and finding the PERFECT filter is less valuable than trying ANY filter.</p><p>While speed is the emphasis given at early stage teams, it's not the entirety of the story. Speed of delivery provides quick feedback loops, reduces "bikeshedding" conversations and reduces edge cases that might not matter simply because the value of learning if this product or service is going to be valuable is greater than all the process that goes with building products and services that work 100% of the time, handle every case or can scale to thousands of users.</p><p></p>]]></content:encoded>
            <author>artivilla@newsletter.paragraph.com (Arti Villa)</author>
            <category>startups</category>
        </item>
    </channel>
</rss>