惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Full Disclosure
WordPress大学
WordPress大学
小众软件
小众软件
Cloudbric
Cloudbric
AWS News Blog
AWS News Blog
腾讯CDC
量子位
人人都是产品经理
人人都是产品经理
大猫的无限游戏
大猫的无限游戏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Vulnerabilities – Threatpost
Scott Helme
Scott Helme
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
C
CXSECURITY Database RSS Feed - CXSecurity.com
The Hacker News
The Hacker News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
IT之家
IT之家
Jina AI
Jina AI
Attack and Defense Labs
Attack and Defense Labs
S
SegmentFault 最新的问题
Simon Willison's Weblog
Simon Willison's Weblog
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
T
Tailwind CSS Blog
Last Week in AI
Last Week in AI
博客园 - 【当耐特】
Google Online Security Blog
Google Online Security Blog
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog
罗磊的独立博客
L
LINUX DO - 最新话题
博客园 - Franky
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
The Last Watchdog
The Last Watchdog
J
Java Code Geeks
AI
AI
C
Cisco Blogs
酷 壳 – CoolShell
酷 壳 – CoolShell
C
Cyber Attacks, Cyber Crime and Cyber Security
Cisco Talos Blog
Cisco Talos Blog
博客园 - 三生石上(FineUI控件)
雷峰网
雷峰网
Help Net Security
Help Net Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
云风的 BLOG
云风的 BLOG
I
Intezer
S
Securelist

Pierce Freeman

A browser for agents | Pierce Freeman The grey market of podcast appearances The way I travel | Pierce Freeman Fixing slow AWS uploads | Pierce Freeman We solved scratch content first Starting a podcast in 2025 Being late but still being early Automating our home video imports Adding my parents to tailscale A deep dive on agent sandboxes Language servers for AI | Pierce Freeman My simple home podcast studio We need centralized infrastructure | Pierce Freeman Coercing agents to follow conventions using AST validation My unified theory of social selling My personal backup strategy | Pierce Freeman July updates to the homelab How the KV Cache works httpx is the right way to do web requests in Python Reputation is becoming everything | Pierce Freeman Building a (kind of) invisible mac app Updated knowledge in language models Making an ascii animation | Pierce Freeman How speculative decoding works | Pierce Freeman Under the hood of Claude Code Doing things because they're easy, not hard Speeding up sideeffects with JIT in mountaineer Firehot for hot reloading in Python Misadventures in Python hot reloading How text diffusion works | Pierce Freeman The tenacity of modern LLMs The ergonomics of rails | Pierce Freeman How language servers work | Pierce Freeman Just add eggs | Pierce Freeman Unfortunately SEO still matters | Pierce Freeman The futility of human-only web requirements Setting up Input Leap | Pierce Freeman Checking in on Waymo | Pierce Freeman The react revolution | Pierce Freeman Speeding up many small transfers to a unifi nas Quick notes on swift libraries AI engineering is a different animal San Francisco | Pierce Freeman Debugging a mountaineer rendering segfault Local network config on macOS Building our home network | Pierce Freeman Introducing Envelope.dev Legacy code and AI copilots Typehinting from day-zero | Pierce Freeman Generating database migrations with acyclic graphs Lofoten | Pierce Freeman Mountaineer v0.1: Webapps in Python and React Constraining LLM Outputs | Pierce Freeman Passthrough above all | Pierce Freeman Accuracy in kudos | Pierce Freeman How quick we are to adapt The curious case of LM repetition Costa Rica | Pierce Freeman Debugging chrome extensions with system-level logging Speeding up runpod | Pierce Freeman Inline footnotes with html templates Parsing Common Crawl in a day for $60 An era of rich CLI All or nothing with remote work The Next 10 Years | Pierce Freeman Adding wheels to flash-attention | Pierce Freeman LLMs as interdisciplinary agents | Pierce Freeman New Zealand | Pierce Freeman Representations in autoregressive models | Pierce Freeman Let's talk about Siri | Pierce Freeman Minimum viable public infrastructure | Pierce Freeman Reasoning vs. Memorization in LLMs Automatically migrate enums in alembic Greater sequence lengths will set us free On learning to ski | Pierce Freeman Dolomites | Pierce Freeman Using grpc with node and typescript Opportunity years | Pierce Freeman Buzzword peaks and valleys | Pierce Freeman Buenos Aires | Pierce Freeman Network routing interaction on MacOS Independent work: November recap Debugging slow pytorch training performance The provenance of copy and paste Debugging tips for neural network training Patagonia | Pierce Freeman Santiago | Pierce Freeman My 2022 digital travel kit AWS vs GCP - GPU Availability V2 Independent work: October recap | Pierce Freeman Planning Patagonia Relationship modeling | Pierce Freeman The power of status updates A new chapter | Pierce Freeman Give my library a coffee shop AWS vs GCP - GPU Availability V1 Switzerland | Pierce Freeman Headfull browsers beat headless | Pierce Freeman Webcrawling tradeoffs | Pierce Freeman Copenhagen | Pierce Freeman
Local tools should still use vaults
2026-02-10 · via Pierce Freeman

Engineers have always been obsessed with automating the minutia so we can focus on the fun stuff. But writing software has historically been A) hard B) expensive. That usually meant that we would spend a week automating what we could have done by hand in a few minutes. Or we wouldn't try at all.

I'm nowhere close to the first person to reflect that agents have changed that equation. Especially with self-feedback loops, agents can do a pretty damn good job on the first pass - and can certainly succeed at most of these minutia automations when given enough feedback and freedom to run in an environment with the right tools.

I've been trying to make a concerted effort to automate even the smallest of tasks, especially when they're annoyingly asynchronous. The most recent project1 was automating the import and alignment process of our podcast feeds after we record.2 Before that, some family image organization scripts. I probably have tens of adhoc scripts littered around my github at this point.

This has led to the proliferation of env files across my system, as I naturally incorporate the same design principles that I would use for a shipping system: pydantic-settings config definition, refactored package, etc. Except it's not a shipping system and I don't plan on it becoming one.

I realized that storing my credentials in some vault would be a better way; but most proper vaults (AWS Secrets Manager, Hashicorp Vault, etc) are meant for enterprise use. For local scripts I would much rather interplay with my keychain management platform 1Password.

Enter: vaultdantic, a super simple plugin for Pydantic settings.

from pydantic import SecretStr
from pydantic_settings import BaseSettings, SettingsConfigDict
from vaultdantic import OnePasswordConfigDict, VaultMixin

class ExampleSettings(BaseSettings, VaultMixin):
    model_config = SettingsConfigDict(
        env_prefix="EXAMPLE_",
    )
    model_vault_config = OnePasswordConfigDict(
        vault="Engineering",
        entry="example-service",
    )

    api_token: SecretStr
    workspace_id: str

config = ExampleSettings()

It does exactly what you'd expect. On initialization, it will try to inspect your existing environment for env credentials. If it can't find the right ones it will fall back to accessing 1Password via your password or fingerprint.

I've started to switch over all my adhoc projects to use this convention. It ends up being really convenient as a default for these local scripts. Adding a new backend like Bitwarden or LastPass should be as simple as adding another subclass of the main provider. And if you ever need to eject and publish something to the cloud, you can do that too:

uv run sync-vault-to-env

This also takes me closer to a long held goal of mine to be able to freely wipe my laptop and not worry about data loss. I'm not confident I'm there yet, but a combination of NAS, version control, and these default vault settings is getting me meaningfully closer. Hope it's useful to you too.

  1. Project is even giving it too much credit when you're just doing a few codex calls. Agent-launch? ↩

  2. 1. Import video from our two camcorders to our local NAS
    2. Extract the audio files from our Audio Hijack recording session
    3. Align audio files to the start time of the video files
    4. Transcode the raw prores files into mp4 for our editor
    5. Upload all artifacts to frame (our file sharing host)

    This amounted to saving a few clicks after we recorded, but because some of this stuff can only happen synchronously (like hardware accelerated ffmpeg commands) it made for an annoying post-record workflow. ↩