[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"lab-list":3},{"entries":4,"now":21,"publishingDay":27},[5,13],{"slug":6,"tag":7,"issueNumber":8,"publishedAt":9,"title":10,"excerpt":11,"readingTimeMinutes":12},"double-opt-in-without-captcha","Build notes",2,"2026-10-13T18:34:10.191051+00:00","A double opt-in signup without a CAPTCHA","How the Lab signup checks addresses without a CAPTCHA: a hidden honeypot, a per-IP limit, a signed 48-hour link and a confirm button instead of a confirm link.",5,{"slug":14,"tag":15,"issueNumber":16,"publishedAt":17,"title":18,"excerpt":19,"readingTimeMinutes":20},"ship-with-claude-code","Lesson",1,"2026-10-13T16:21:59.304547+00:00","How I ship with Claude Code: my spec-driven workflow","How I build this site with Claude Code: specs and tickets as GitHub issues, one ticket per session, and a stop at every decision that's mine to make, not the agent's.",4,{"building":22,"learning":23,"nextUp":24,"skillsLearningNow":25,"updatedAt":26},"Markly","Skills","Oneline","Video","2026-10-06T04:51:22.673725+00:00",null]