flâneur

Eden Chan

22 followers · 29 following · 1061 views

on the atlas — 115

highlights — 2133

  • Every technical term you use without explanation is a toll booth on the highway to understanding. One toll? Fine. Your audience will pay for it. Two? They're starting to wonder if this trip is worth it. Three tolls in 30 seconds?
    Gmail
  • But familiarity isn't the same as clarity.
    Gmail
  • yt-dlp can use browser cookies to get access to Facebook videos. This should have something similar. yt-dlp --cookies-from-browser firefox https://www.facebook.com/1234videos/5678/
    Monolith – CLI tool for saving complete web pages as a single HTML file | Hacker News
  • simonw on March 24, 2024 | next [–] Well this is fun... from the README here I learned I can do this on macOS: /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \ --headless --incognito --dump-dom https://github.com > /tmp/github.html And get an HTML file for a page after the JavaScript has been executed. Wrote up a TIL about this with more details: https://til.simonwillison.net/chrome/headless My own https://shot-scraper.datasette.io/ tool (which uses headless Playwright Chromium under the hood) has a command for this too: shot-scraper html https://github.com/ > /tmp/github.html
    Monolith – CLI tool for saving complete web pages as a single HTML file | Hacker News
  • I have since switched to SingleFile⁠ to make static HTML snapshots, which unlike MAFF/MHTML, are viewable without any problems in mainstream browsers.
    Archiving URLs · Gwern.net
  • I wanted to limit the number of archives I had to make or host, but the burden was becoming unsustainable when combined with other site maintenance needs. I had no excuse from expensive cloud storage (even 100GB would have near-zero marginal cost after my move to Hetzner⁠ dedicated hosting in 2017), rewriting links would be easy using the Pandoc API, SingleFile was working well when I used it manually & had a convenient CLI mode for scripting purposes like this, and working on fixing broken links was annoying me slightly more every time.
    Archiving URLs · Gwern.net
  • linkchecker --check-extern -odot --complete -v --ignore-url=^mailto --no-warnings http://www.longbets.org | grep -F http # | grep -F -v -e "label=" -e "->" -e '" [' -e '" ]' -e "/ " | sed -e "s/href=\"//" -e "s/\",//" -e "s/ //" | filter-urls | sort --unique >> ~/.urls.txt
    Archiving URLs · Gwern.net
  • Keep goals simple” doesn’t have to mean “do less”—the best way to keep goals simple is to find the latent structure that enables a clean recursive decomposition into subgoals. This often requires a deceptive amount of work—both cognitive and hands-on-keyboard—to identify the right intermediate goals, but I’ve found that it pays off immensely by clarifying what’s important to work on.
    How I've run major projects | benkuhn.net
  • On the other hand, I often see other people miss chances to do those things, maybe for lack of having seen a good playbook.
    How I've run major projects | benkuhn.net
  • Want to give this a go? # If you want to give the Baked Data pattern a try, I recommend starting out using the combination of Datasette, GitHub Actions and Vercel. Hopefully the examples I’ve provided above are a good starting point—also feel free to reach out to me on Twitter or in the Datasette Discussions forum with any questions.
    The Baked Data architectural pattern
  • The Blag is the official xkcd blog
    Blag - explain xkcd
  • llm -m claude-sonnet-4.5 -o thinking 1 -o thinking_budget 4000 \ 'Generate an SVG of a pelican riding a bicycle'
    Claude Sonnet 4.5 is probably the “best coding model in the world” (at least for now)
  • There’s so much more stuff I could add to this: my tweets, my sidebar blog links, maybe even download statistics from PyPI. I’ll see what takes my fancy in the future.
    Building a self-updating profile README for GitHub
  • I couldn’t resist re-using the trick from this blog post and implementing a GitHub Action to automatically keep my profile README up-to-date. Visit github.com/simonw and you’ll see a three-column README showing my latest GitHub project releases, my latest blog entries and my latest TILs.
    Building a self-updating profile README for GitHub
  • curl 'https://gist.githubusercontent.com/simonw/bdc7b894eedcfd54f0a2422ea8feaa80/raw/9a76a9a33d16b8c5a8c036e0d92c2cb9bf83267c/tweets.json' | \ llm -m gemini-exp-1206 -s 'Group these into a set of definitions that illustrate the various different shapes of definition. For each of your definitions include quotes of the tweets that support that definition. Answer in markdown'
    Using tweets gathered from https://til.simonwillison.net/twitter/collecting-replies
  • I’ve been very hesitant to use the term “agent” for meaningful communication over the last couple of years. It felt to me like the ultimate in buzzword bingo—everyone was talking about agents, but if you quizzed them everyone seemed to hold a different mental model of what they actually were.
    I think “agent” may finally have a widely enough agreed upon definition to be useful jargon now
  • An LLM agent runs tools in a loop to achieve a goal.
    I think “agent” may finally have a widely enough agreed upon definition to be useful jargon now
  • instead, emphasizing that it’s a tool for building agents beyond just customizing the existing Claude Code product. That’s available for both TypeScript and Python.
    Claude Sonnet 4.5 is probably the “best coding model in the world” (at least for now)
  • Pay me to send you less!
    Claude Sonnet 4.5 is probably the “best coding model in the world” (at least for now)
  • As you can see in the resulting conversation transcript, it did a really impressive job of this! It churned away across dozens of different tool calls, eventually outputting the following summary of its activity:
    Claude Sonnet 4.5 is probably the “best coding model in the world” (at least for now)
  • tree_notes.md file which you first populate with your plan and then use for notes as you go along.
    Claude Sonnet 4.5 is probably the “best coding model in the world” (at least for now)
  • The claude.ai web interface (not yet the Claude iPhone native app) recently added the ability for Claude to write and then directly execute code in a sandboxed server environment, using Python and Node.js. I wrote about that in detail three weeks ago.
    Claude Sonnet 4.5 is probably the “best coding model in the world” (at least for now)
  • This space moves so fast—Gemini 3 is rumored to land soon so who knows how long Sonnet 4.5 will continue to hold the “best coding model” crown.
    Claude Sonnet 4.5 is probably the “best coding model in the world” (at least for now)
  • I’m hoping that giving it a clear name can help us have productive conversations about it. There’s so much more to figure out about how to use these tools as effectively as possible.
    Designing agentic loops
  • Designing agentic loops is a very new skill—Claude Code was first released in just February 2025!
    Designing agentic loops
  • Rather than leaning on MCP, I like to create an AGENTS.md (or equivalent) file with details of packages I think they may need to use. For a project that involved taking screenshots of various websites I installed my own shot-scraper CLI tool and dropped the following in AGENTS.md:
    Designing agentic loops
  • Coding agents are really good at running shell commands!
    Designing agentic loops
  • A while ago I was investigating slow cold start times for a scale-to-zero application I was running on Fly.io. I realized I could work a lot faster if I gave Claude Code the ability to directly edit Dockerfiles, deploy them to a Fly account and measure how long they took to launch.
    Designing agentic loops
  • Option 2 is my favorite. I like to use GitHub Codespaces for this—it provides a full container environment on-demand that’s accessible through your browser and has a generous free tier too
    Designing agentic loops
  • Despite the existence of container escapes I think option 1 using Docker or the new Apple container tool is a reasonable risk to accept for most people.
    Designing agentic loops
  • A critical new skill to develop is designing agentic loops. One way to think about coding agents is that they are brute force tools for finding solutions to coding problems. If you can reduce your problem to a clear goal and a set of tools that can iterate towards that goal a coding agent can often brute force its way to an effective solution
    Designing agentic loops
  • LLM agent is something that runs tools in a loop to achieve a goal. The art of using them well is to carefully design the tools and loop for them to use.
    Designing agentic loops
  • Differentiation is Survival and the Universe Wants You to be Typical This is my last annual shareholder letter as the CEO of Amazon, and I have one last thing of utmost importance I feel compelled to teach. I hope all Amazonians take it to heart. Here is a passage from Richard Dawkins’ (extraordinary) book The Blind Watchmaker. It’s about a basic fact of biology. “Staving off death is a thing that you have to work at. Left to itself – and that is what it is when it dies – the body tends to revert to a state of equilibrium with its environment. If you measure some quantity such as the temperatu…
    2020 Letter to Shareholders
  • This is where I found Obsidian to be the most helpful, it shines as a second brain. Unlike rigid note-taking apps, the bidirectional linking mirrors how our minds naturally connect ideas. The Zettelkasten and PARA methods provide flexible frameworks that eliminate the cognitive overhead of deciding where to store information.
    Blog - Note-Taking with Obsidian - char.blog
  • Speed Over Perfection
    Blog - Note-Taking with Obsidian - char.blog
  • automation is a tool for understanding.
    Blog - Automate to Think - char.blog
  • automation often fails in organisations. They try to automate processes they don't fully understand.
    Blog - Automate to Think - char.blog
  • The real power comes from what I call "skill stack arbitrage." When you can competently operate across multiple domains, you start seeing opportunities that specialists can't even perceive.
    Blog - Being a High-Leverage Generalist - char.blog
  • Today's most interesting opportunities exist at the intersections
    Blog - Being a High-Leverage Generalist - char.blog
  • The real power of automation isn't in saving time - it's in forcing clarity. When I automate security analysis pipelines, I'm not just making the process faster. I'm creating a precise model of what "analysis" actually means. Each edge case I handle reveals something about the nature of security threats. Each optimisation exposes patterns in how attacks manifest.
    Blog - Automate to Think - char.blog
  • Follow Your Curiosity Vector
    Blog - Being a High-Leverage Generalist - char.blog
  • The key is to approach generalism strategically - this isn't about random skill collection, but deliberate capability building. Here's how to execute this in practice: Map Your Industry's Intersection Points
    Blog - Being a High-Leverage Generalist - char.blog
  • Oh my god. This is some insane work. You're practically rebuilding the entire web stack, but in a perfectionist way. Now I just got to perfectionize a Bun1.2-Svelte5Kit-DrizzleORM-PayloadCMS-TailwindCSS4 app and I will starve to death because coding gets a higher priority than food ._.
    Bun 1.2 - YouTube
  • UW IS the squid game Shitpost Every term a few get eliminated with the first round causing the most casualties; the cheaters knowing the exam questions ahead of time; the profs(triangles) keeping the avg low, forcing people to form cliques and fight for their lives in the games(coop)
    UW IS the squid game : r/uwaterloo
  • The same problem has been brought up over and over again -- even when Nortel was at its peak: https://youtu.be/sDdC3-LT7pM?t=342 The US has always had unbelievably deep pockets and a much more competitive market when it comes to talent. Big tech firms have offices in Canada, but they won't pay nearly as much here both due to cost of living as well as not needing to. You really cannot compete with the US in money -- really nobody can. Canada's proximity to the US as well as the fact that uni grads are much less likely to care where they live make it basically impossible to retain key Canadian t…
    Poilievre says Waterloo tech graduates are "our biggest export right now" : r/uwaterloo
  • Paying off Provincial Portion of NSLSC I contacted the NSLSC via live chat and confirmed that it is possible to direct payment to either Federal or Provincial portions of the loan. This question has been asked in this sub before (specifically about OSAP/ Ontario) and the answers I've found are misinformed. So, to set the record straight: Livechat screenshot (names redacted) To do it, you have to send a letter and a cheque to NSLSC indicating which loan you want to allocate funds to. Details from the chat: Please include your full name and your SIN or loan number in your written request to allo…
    Paying off Provincial Portion of NSLSC : r/PersonalFinanceCanada
  • Well that wasn't super useful bro. Here you go: https://www.reddit.com/r/PersonalFinanceCanada/comments/v7pzyc/paying_off_provincial_portion_of_nslsc/
    Save interest on OSAP payments : r/uwaterloo
  • It is a stochastic policy because it makes sense to apply it when constructing 𝑥 x can be done through a sequence of steps, which can be thought of as internal actions (they are meant to construct things like thoughts or plans or explanations). That sequential construction is convenient to sample compositional objects, which can often be defined by composing elements in some order, with generally many possible orders leading to the same object.
    The GFlowNet Tutorial
  • CEO of a startup, I tell them it’s like getting punched in the face with a smile on…every day.
    Every's First Entrepreneur in Residence, Brandon Gell
  • An essay is a great MVP for a product.
    Every's First Entrepreneur in Residence, Brandon Gell