{
    "archive_path": "archive/1766158950.571328",
    "base_url": "timkellogg.me/blog/2025/09/15/ai-tools",
    "basename": "ai-tools",
    "bookmarked_date": "2025-12-19 15:42",
    "canonical": {
        "archive_org_path": "https://web.archive.org/web/timkellogg.me/blog/2025/09/15/ai-tools",
        "dom_path": "output.html",
        "favicon_path": "favicon.ico",
        "git_path": "git/",
        "google_favicon_path": "https://www.google.com/s2/favicons?domain=timkellogg.me",
        "headers_path": "headers.json",
        "htmltotext_path": "htmltotext.txt",
        "index_path": "index.html",
        "media_path": "media/",
        "mercury_path": "mercury/content.html",
        "pdf_path": "output.pdf",
        "readability_path": "readability/content.html",
        "screenshot_path": "screenshot.png",
        "singlefile_path": "singlefile.html",
        "warc_path": "warc/",
        "wget_path": null
    },
    "domain": "timkellogg.me",
    "downloaded_at": "2025-12-19T15:42:43.705718+00:00",
    "downloaded_datestr": "2025-12-19 15:42",
    "extension": "",
    "hash": "1QBQ8K11Y6PPMV4TE02P",
    "history": {
        "archive_org": [
            {
                "cmd": [
                    "/usr/bin/curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--proxy",
                    "socks5://tor-socks-proxy:9150",
                    "--head",
                    "--max-time",
                    "60",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)",
                    "https://web.archive.org/save/https://timkellogg.me/blog/2025/09/15/ai-tools"
                ],
                "cmd_version": "8.10.1",
                "end_ts": "2025-12-19T15:44:34.030640+00:00",
                "index_texts": null,
                "output": "TimeoutExpired: Command '['/usr/bin/curl', '--silent', '--location', '--compressed', '--proxy', 'socks5://tor-socks-proxy:9150', '--head', '--max-time', '60', '--user-agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)', 'https://web.archive.org/save/https://timkellogg.me/blog/2025/09/15/ai-tools']' timed out after 60 seconds",
                "pwd": "/data/archive/1766158950.571328",
                "schema": "ArchiveResult",
                "start_ts": "2025-12-19T15:43:33.967548+00:00",
                "status": "failed"
            }
        ],
        "dom": [
            {
                "cmd": [
                    "/usr/bin/chromium-browser",
                    "--proxy-server=socks5://tor-socks-proxy:9150",
                    "--disable-features=DarkMode",
                    "--run-all-compositor-stages-before-draw",
                    "--hide-scrollbars",
                    "--autoplay-policy=no-user-gesture-required",
                    "--no-first-run",
                    "--use-fake-ui-for-media-stream",
                    "--use-fake-device-for-media-stream",
                    "--simulate-outdated-no-au='Tue, 31 Dec 2099 23:59:59 GMT'",
                    "--headless=new",
                    "--no-sandbox",
                    "--no-zygote",
                    "--disable-dev-shm-usage",
                    "--disable-software-rasterizer",
                    "--disable-sync",
                    "--window-size=1440,2000",
                    "--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)",
                    "--user-data-dir=/data/personas/Default/chrome_profile",
                    "--profile-directory=Default",
                    "--dump-dom",
                    "https://timkellogg.me/blog/2025/09/15/ai-tools"
                ],
                "cmd_version": "131.0.6778",
                "end_ts": "2025-12-19T15:43:16.299178+00:00",
                "index_texts": null,
                "output": "output.html",
                "pwd": "/data/archive/1766158950.571328",
                "schema": "ArchiveResult",
                "start_ts": "2025-12-19T15:42:53.130545+00:00",
                "status": "succeeded"
            }
        ],
        "favicon": [
            {
                "cmd": [
                    "/usr/bin/curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--proxy",
                    "socks5://tor-socks-proxy:9150",
                    "--max-time",
                    "60",
                    "--output",
                    "favicon.ico",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)",
                    "https://www.google.com/s2/favicons?domain=timkellogg.me"
                ],
                "cmd_version": "8.10.1",
                "end_ts": "2025-12-19T15:42:50.486438+00:00",
                "index_texts": null,
                "output": "favicon.ico",
                "pwd": "/data/archive/1766158950.571328",
                "schema": "ArchiveResult",
                "start_ts": "2025-12-19T15:42:43.780457+00:00",
                "status": "succeeded"
            }
        ],
        "git": [],
        "headers": [
            {
                "cmd": [
                    "/usr/bin/curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--proxy",
                    "socks5://tor-socks-proxy:9150",
                    "--head",
                    "--max-time",
                    "60",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)",
                    "https://timkellogg.me/blog/2025/09/15/ai-tools"
                ],
                "cmd_version": "8.10.1",
                "end_ts": "2025-12-19T15:42:51.281743+00:00",
                "index_texts": null,
                "output": "headers.json",
                "pwd": "/data/archive/1766158950.571328",
                "schema": "ArchiveResult",
                "start_ts": "2025-12-19T15:42:50.681375+00:00",
                "status": "succeeded"
            }
        ],
        "htmltotext": [
            {
                "cmd": [
                    "(internal) archivebox.extractors.htmltotext",
                    "./{singlefile,dom}.html"
                ],
                "cmd_version": "0.8.5rc51",
                "end_ts": "2025-12-19T15:43:28.600393+00:00",
                "index_texts": [
                    "How I Use AI - Tim Kellogg (/css/bootstrap.min.css) (/css/syntax.css) (/css/screen.css)  (/) Tim Kellogg      (/blog) Blog  (/threads) Threads  (/contact) Contact     How I Use AI Mon September 15, 2025   (How I Use AI) A few people have asked me how I use AI coding tools. I don\u2019t think it\u2019s a straightforward answer.\nFor me it\u2019s not really a procedure or recipe, it\u2019s more of an ethos. Principle: Ownership You own the code your AI produces. Use your own name to commit AI code so that if something breaks, everyone blames you. This is critical. How well\ndo you need to know the code your AI produces? Well enough that you can answer for it\u2019s mistakes. In lean manufacturing they have the principle of (https://en.wikipedia.org/wiki/Genchi_Genbutsu) Genchi genbutsu , i.e. \u201cgo and see for yourself .\u201d In (https://www.amazon.com/High-Output-Management-Andrew-Grove/dp/0679762884) High Output Management  , Andy Grove pushes \u201cmanagement by walking around\u201d. Andy defines the output\nof a manager as the output of their entire org as well as the organizations under their influence. The trouble with phrasing it as \u201cAI coding\u201d is it tricks you into thinking it\u2019s just another individual role\nlike software engineering, where it actually has a lot more in common with management. It\u2019s unfortunate we\nhire and mentor for it as if it was software engineering. What does the algorithm actually  do? Did it find all  of the places to refactor?  Resist the urge to say, \u201coh, I just vibe coded this\u201d. You coded it, and if it sucks, it\u2019s because you\ndon\u2019t know how to manage your AI. Own it. Principle: Exploit Gradients Not all time spent is equal. For some things, you can put in a little bit of effort and get a huge amount\nof reward. In business, we call those opportunities . (a graph with x axis labeled \"effort\", y axis labeled \"good stuff\" and a curve with a steep part labeled \"the gradient\")  Examples: Biology : A tiger migrates to where there\u2019s more food. Less effort for more food.  Arbitrage : Buy cheap, send to another country and sell expensive. Less effort for more money.   AI coding isn\u2019t about writing code, it\u2019s about creating and exploiting gradients. Finding opportunities\nwhere you can spend 10 minutes of AI time and reap a huge reward. The contrived example is proof of concepts. You can just do it , figure out if it really works in practice\nas it seems like it should, and abandon it quickly when it doesn\u2019t. Or data analysis. Traditionally it was labor intensive to do data analysis, but you can spin out a sick\ndashboard in a few minutes. Maybe that helps you avoid a dead end, or push your org in a new direction. The key is to always be on the lookout for opportunities. That feels a lot more like a shrewd businessman than a software engineer. Indeed! It\u2019s a mistake that\nwe transparently hire and promote software engineers into these roles. It\u2019s a new beast. How to become a AI Coder I\u2019m terrified of the future of software engineering. Oh, I\u2019ll continue having a job for a very long time. No concern about that. I\u2019m worried that junior engineers won\u2019t be promoted because it\u2019s easier to dispatch a request to an AI than to give juniors the\ntasks that they traditionally learned the trade from. But actually, this isn\u2019t software engineering. If anyone with their head on straight can take ownership and exploit gradients, then maybe junior engineers\nhave an edge on seniors who are too stuck in their ways to realize they\u2019ve been put in a new job role. Discussion (https://bsky.app/profile/timkellogg.me/post/3lywainx5fk2s) Bluesky  (https://lobste.rs/s/70n6tf/how_i_use_ai) Lobste.rs  (https://news.ycombinator.com/item?id=45260574) Hacker News   Get out of your comfort zone I broadly agree with you, would only add that people do have to get out of their comfort zone to get good at AI, and you have some obligation to do that It\u2019s really hard to be good at it at first, as a manager you have to give people some slack to learn those new skills too\nfrom (https://x.com/rickasaurus/status/1967968762428313606) @rickasourus on Twitter  Yes, managers take note! We\u2019re learning a new job. Sense of ownership I enjoyed that. You\u2019re right about the sense of ownership. Although some developers never had a sense of ownership of even hand crafted code. I wrote about this topic recently and it chimes with your thoughts (https://www.aidanharding.com/2025/09/coding-with-ai/) https://www.aidanharding.com/2025/09/coding-with-ai/   The good ones did. (https://bsky.app/profile/aidanharding.bsky.social/post/3lywpjk7hjk2u) @aidanharding.bsky.social says on Bluesky  tags : (/blog/#tag/ai) ai (/blog/#tag/LLMs) LLMs (/blog/#tag/engineering) engineering (/blog/#tag/agents) agents  (/blog/atom.xml)           Subscribe       (X Post Button)  (fb:like Facebook Social Plugin)        \u00a9 2025 Tim Kellogg. All rights reserved.    (Twitter settings iframe)  (Twitter analytics iframe)    "
                ],
                "output": "htmltotext.txt",
                "pwd": "/data/archive/1766158950.571328",
                "schema": "ArchiveResult",
                "start_ts": "2025-12-19T15:43:28.573228+00:00",
                "status": "succeeded"
            }
        ],
        "media": [
            {
                "cmd": [
                    "/usr/local/bin/yt-dlp",
                    "--restrict-filenames",
                    "--trim-filenames",
                    "128",
                    "--write-description",
                    "--write-info-json",
                    "--write-annotations",
                    "--write-thumbnail",
                    "--no-call-home",
                    "--write-sub",
                    "--write-auto-subs",
                    "--convert-subs=srt",
                    "--yes-playlist",
                    "--continue",
                    "--no-abort-on-error",
                    "--ignore-errors",
                    "--geo-bypass",
                    "--add-metadata",
                    "--format=(bv*+ba/b)[filesize<=750m][filesize_approx<=?750m]/(bv*+ba/b)",
                    "--skip-download",
                    "--cache-dir=/data/yt-dlp-cache/",
                    "--cookies=/data/yt-dlp-cache/cookies.txt",
                    "--proxy=socks5://tor-socks-proxy:9150",
                    "--no-playlist",
                    "https://timkellogg.me/blog/2025/09/15/ai-tools"
                ],
                "cmd_version": "2024.10.7",
                "end_ts": "2025-12-19T15:43:33.938422+00:00",
                "index_texts": [],
                "output": "media/",
                "pwd": "/data/archive/1766158950.571328",
                "schema": "ArchiveResult",
                "start_ts": "2025-12-19T15:43:28.827835+00:00",
                "status": "succeeded"
            }
        ],
        "mercury": [
            {
                "cmd": [
                    "/home/archivebox/.npm/bin/postlight-parser",
                    "https://timkellogg.me/blog/2025/09/15/ai-tools"
                ],
                "cmd_version": "2.2.3",
                "end_ts": "2025-12-19T15:43:28.534898+00:00",
                "index_texts": null,
                "output": "mercury/",
                "pwd": "/data/archive/1766158950.571328",
                "schema": "ArchiveResult",
                "start_ts": "2025-12-19T15:43:22.093258+00:00",
                "status": "succeeded"
            }
        ],
        "pdf": [],
        "readability": [
            {
                "cmd": [
                    "/home/archivebox/.npm/bin/readability-extractor",
                    "/tmp/tmpn6nsfnds",
                    "https://timkellogg.me/blog/2025/09/15/ai-tools"
                ],
                "cmd_version": "0.0.11",
                "end_ts": "2025-12-19T15:43:21.608831+00:00",
                "index_texts": [
                    "How I Use AI\n\t\n\t\t\n\t\t\tMon September 15, 2025\n\t\t\n\t\t\n\t\n\t\n\t\t\n\t\n\tA few people have asked me how I use AI coding tools. I don\u2019t think it\u2019s a straightforward answer.\nFor me it\u2019s not really a procedure or recipe, it\u2019s more of an ethos.\n\nPrinciple: Ownership\nYou own the code your AI produces.\n\nUse your own name to commit AI code so that if something breaks, everyone blames you. This is critical. How well\ndo you need to know the code your AI produces? Well enough that you can answer for it\u2019s mistakes.\n\nIn lean manufacturing they have the principle of Genchi genbutsu, i.e. \u201cgo and see for yourself.\u201d In \nHigh Output Management, Andy Grove pushes \u201cmanagement by walking around\u201d. Andy defines the output\nof a manager as the output of their entire org as well as the organizations under their influence.\n\nThe trouble with phrasing it as \u201cAI coding\u201d is it tricks you into thinking it\u2019s just another individual role\nlike software engineering, where it actually has a lot more in common with management. It\u2019s unfortunate we\nhire and mentor for it as if it was software engineering.\n\n\n  What does the algorithm actually do?\n  Did it find all of the places to refactor?\n\n\nResist the urge to say, \u201coh, I just vibe coded this\u201d. You coded it, and if it sucks, it\u2019s because you\ndon\u2019t know how to manage your AI. Own it.\n\nPrinciple: Exploit Gradients\nNot all time spent is equal. For some things, you can put in a little bit of effort and get a huge amount\nof reward. In business, we call those opportunities.\n\n\n\nExamples:\n\n\n  Biology: A tiger migrates to where there\u2019s more food. Less effort for more food.\n  Arbitrage: Buy cheap, send to another country and sell expensive. Less effort for more money.\n\n\nAI coding isn\u2019t about writing code, it\u2019s about creating and exploiting gradients. Finding opportunities\nwhere you can spend 10 minutes of AI time and reap a huge reward.\n\nThe contrived example is proof of concepts. You can just do it, figure out if it really works in practice\nas it seems like it should, and abandon it quickly when it doesn\u2019t.\n\nOr data analysis. Traditionally it was labor intensive to do data analysis, but you can spin out a sick\ndashboard in a few minutes. Maybe that helps you avoid a dead end, or push your org in a new direction.\n\nThe key is to always be on the lookout for opportunities.\n\nThat feels a lot more like a shrewd businessman than a software engineer. Indeed! It\u2019s a mistake that\nwe transparently hire and promote software engineers into these roles. It\u2019s a new beast.\n\nHow to become a AI Coder\nI\u2019m terrified of the future of software engineering.\n\nOh, I\u2019ll continue having a job for a very long time. No concern about that. I\u2019m worried that junior\nengineers won\u2019t be promoted because it\u2019s easier to dispatch a request to an AI than to give juniors the\ntasks that they traditionally learned the trade from.\n\nBut actually, this isn\u2019t software engineering.\n\nIf anyone with their head on straight can take ownership and exploit gradients, then maybe junior engineers\nhave an edge on seniors who are too stuck in their ways to realize they\u2019ve been put in a new job role.\n\nDiscussion\n\n  Bluesky\n  Lobste.rs\n  Hacker News\n\n\nGet out of your comfort zone\n\n  I broadly agree with you, would only add that people do have to get out of their comfort zone to get good at AI, and you have some obligation to do that\n\n  It\u2019s really hard to be good at it at first, as a manager you have to give people some slack to learn those new skills too\nfrom @rickasourus on Twitter\n\n\nYes, managers take note! We\u2019re learning a new job.\n\nSense of ownership\n\n  I enjoyed that. You\u2019re right about the sense of ownership. Although some developers never had a sense of ownership of even hand crafted code. I wrote about this topic recently and it chimes with your thoughts https://www.aidanharding.com/2025/09/coding-with-ai/\n\n\nThe good ones did.\n@aidanharding.bsky.social says on Bluesky"
                ],
                "output": "readability/",
                "pwd": "/data/archive/1766158950.571328",
                "schema": "ArchiveResult",
                "start_ts": "2025-12-19T15:43:17.031546+00:00",
                "status": "succeeded"
            }
        ],
        "screenshot": [],
        "singlefile": [],
        "title": [
            {
                "cmd": [
                    "/usr/bin/curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--proxy",
                    "socks5://tor-socks-proxy:9150",
                    "--max-time",
                    "60",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)",
                    "https://timkellogg.me/blog/2025/09/15/ai-tools"
                ],
                "cmd_version": "8.10.1",
                "end_ts": "2025-12-19T15:43:16.778940+00:00",
                "index_texts": null,
                "output": "How I Use AI - Tim Kellogg",
                "pwd": "/data/archive/1766158950.571328",
                "schema": "ArchiveResult",
                "start_ts": "2025-12-19T15:43:16.693980+00:00",
                "status": "succeeded"
            }
        ],
        "wget": []
    },
    "icons": null,
    "is_archived": true,
    "is_static": false,
    "latest": {
        "archive_org": "TimeoutExpired: Command '['/usr/bin/curl', '--silent', '--location', '--compressed', '--proxy', 'socks5://tor-socks-proxy:9150', '--head', '--max-time', '60', '--user-agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)', 'https://web.archive.org/save/https://timkellogg.me/blog/2025/09/15/ai-tools']' timed out after 60 seconds",
        "dom": "output.html",
        "favicon": "favicon.ico",
        "git": null,
        "media": "media/",
        "pdf": null,
        "screenshot": null,
        "singlefile": null,
        "title": "How I Use AI - Tim Kellogg",
        "warc": null,
        "wget": null
    },
    "link_dir": "/data/archive/1766158950.571328",
    "newest_archive_date": "2025-12-19T15:43:33.967548+00:00",
    "num_failures": 1,
    "num_outputs": 8,
    "oldest_archive_date": "2025-12-19T15:42:43.780457+00:00",
    "path": "/blog/2025/09/15/ai-tools",
    "schema": "Link",
    "scheme": "https",
    "snapshot_abid": "snp_01KCVMDRD36762E053019KX8Q1",
    "snapshot_id": "296a4520-7ba1-42b9-99e5-a46e933ea2e1",
    "sources": [
        "/data/sources/1766158945-import.txt"
    ],
    "tags": null,
    "tags_str": "",
    "timestamp": "1766158950.571328",
    "title": "How I Use AI - Tim Kellogg",
    "url": "https://timkellogg.me/blog/2025/09/15/ai-tools"
}