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

推荐订阅源

Forbes - Security
Forbes - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
L
LangChain Blog
量子位
GbyAI
GbyAI
B
Blog RSS Feed
月光博客
月光博客
人人都是产品经理
人人都是产品经理
腾讯CDC
Recent Announcements
Recent Announcements
Microsoft Azure Blog
Microsoft Azure Blog
I
InfoQ
The Cloudflare Blog
D
Docker
Cyberwarzone
Cyberwarzone
U
Unit 42
NISL@THU
NISL@THU
C
Check Point Blog
B
Blog
大猫的无限游戏
大猫的无限游戏
Cisco Talos Blog
Cisco Talos Blog
Recorded Future
Recorded Future
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
G
GRAHAM CLULEY
Engineering at Meta
Engineering at Meta
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 叶小钗
P
Proofpoint News Feed
F
Fortinet All Blogs
V
V2EX
T
Threat Research - Cisco Blogs
T
Threatpost
S
SegmentFault 最新的问题
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园 - 司徒正美
P
Privacy & Cybersecurity Law Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
TaoSecurity Blog
TaoSecurity Blog
Latest news
Latest news
Apple Machine Learning Research
Apple Machine Learning Research
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Y
Y Combinator Blog
P
Privacy International News Feed
L
Lohrmann on Cybersecurity
AWS News Blog
AWS News Blog
G
Google Developers Blog
美团技术团队

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 Local tools should still use vaults 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 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 | Pierce Freeman 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 | Pierce Freeman 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 | Pierce Freeman 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
Just add eggs | Pierce Freeman
2025-06-08 · via Pierce Freeman

John Duff and his molasses company patented the first recipe for cake mix in 1930s. It was a culinary innovation. Completely dehydrated powder where you just add water and bake. In the height of the Depression when people were looking to save any costs they could, cutting back on the baking supplies in the kitchen seemed like a big market opportunity.

Unfortunately for P. Duff & Sons, it was a total flop.1

People didn't like the feeling of baking without having to add any ingredients themselves. It felt unnatural. Duff's 1933 follow-up patent explicitly cited the "psychological disadvantage" of powdered eggs. So they removed them from the recipe. Make users crack a fresh one. The rest of the cooking process stayed the same: you still add water and bake. The eggs take maybe a minute more.

It's minimal effort but still gives bakers the feeling of maximum competence. And Duff was rewarded for it. Sales exploded after the war and cake mix is the go-to way to bake for most people today.

Cracking the egg is as true in software as it is in cake mix.

My LinkedIn content creation tool saywhat.ai launched Fresh last week. It's a deep research agent that figures out what you're selling, who you're selling it to, researches a novel take, then drafts you social content. It works shockingly well.2 From zero context to a full post in under 2 minutes - zero human input required.

I thought it was a pretty magical feature myself. But it was a big departure from our existing workflow. We wanted to test it out before we committed to launching. It wasn't cheap to host.

We featured flagged it to a small beta group of our most engaged users on May 1st. Since it's hard to measure feature adoption when you're just presenting something done for you, we required users to rate each post with an up or down thumb. Rating the post would clear out the slot in their inbox to receive another fresh post the next day.

After letting it run for a week we noticed the engagement numbers were really low. Only 20% of our users were rating their new posts. Which meant that 80% of users either didn't see them or didn't acknowledge the suggestions if they saw them. Either way was bad: since no acknowledgment wouldn't generate their next batch of predictions, their Fresh posts would sit there indefinitely and never improve.

Time for some changes.

First up: Originally Fresh lived on its own separate page so it was possible people were just missing it3. We had to make it more obvious.

  • We tweaked the base / URL of the webapp to redirect to this page conditionally. If users had suggestions available, they would land on the Fresh page. If they had none available, they would instead end at the normal writing interface
  • They would only see the new content when there was content to share instead of landing on an empty page some of the time
  • New badge icon by the section to show how many posts they still had to review

We let this run for a few days. Still, very little engagement.

Our second approach was to add an automatic post expiration. Maybe users just didn't like the topics that we were writing about and didn't bother giving us feedback. Or maybe there was some decision paralysis with deciding if they liked the post or wanted changes.

  • Create a countdown timer for 5 days where we show a more visible warning from 3 days until it expires
  • Treat ignored posts as an implicit rejection
  • Reload the posts with a new version if the users still haven't engaged by the end of the time

We let this run for a few week. Still, very little engagement.

Our third try was otherwise a hail mary. We'd either fix the engagement or kill the feature4. We added an arbitrary loading bar. That's it. That's the feature.

  • Hide the post until users click the Claim Post button
  • Delay for a random interval between ~10-15 seconds and add a loading bar
  • Fade in the post after this interval

The results were so dramatically better I couldn't quite believe the stats. We saw more than 4x more engagement every day when compared to the previous two feature tweaks.

Honestly: I hated the change. It required that people wait longer for results that we could have generated immediately. Every fiber of my optimization being wanted to fight it. But how valuable are instantaneous results if users don't interact with them in the first place?

What won me over were the cost savings. When the logic was fully refactored, it let us cache the research up-front so we had something to write about, but the actual last mile draft was delayed until runtime. So if people never unlock that draft we don't have to pay for the compute to generate the final draft. That coupled with higher engagement was enough for me to give the green light to a full public launch.

John Duff understood in 1933 what we're clearly still learning today: people don't just want results. They want to feel involved in creating them. They need that moment where they crack the egg, hit the button, or watch the progress bar fill up. It's not just about the time or effort. I suspect it's about agency.

The most powerful tools are often not the ones that do everything for you. They're the ones that make you feel like they gave you superpowers. They're the ones that make you feel like you did it yourself. Even when you didn't.

  1. Don't you love when the sons get involved? ↩

  2. I still occasionally hear the argument that LLMs can only generate derivative works from content that was in their input corpus. Maybe, maybe, I believe that for single shot prompt outputs. But when you have temperature > 0 over multiple loops, you're baking in some stochasticity to the message prompts for any message after the first one. The longer you loop, the higher a chance something novel does pop up. ↩

  3. It had a clearly visible place on the nav bar but I suspected people just weren't aware of it. ↩

  4. We kill features all the time. So it wouldn't have been the worst outcome, except that I was convinced the feature had some inherent potential that was currently overlooked. ↩