{"version":"https://jsonfeed.org/version/1","title":"Micro.blog - Frank van Puffelen","home_page_url":"https://micro.blog","feed_url":"https://micro.blog/posts/puf","_microblog":{"about":"https://micro.blog/about/api","id":"2152","username":"puf","bio":"","pronouns":"","is_following":false,"is_you":false,"following_count":2,"discover_count":0},"author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://www.gravatar.com/avatar/4df6cf8a2fa4219b0990c579e3f5cffd?s=96&d=https%3A%2F%2Fmicro.blog%2Fimages%2Fblank_avatar.png"},"items":[{"id":"89419297","content_html":"<p>🎡 Hilaire Hiler’s color wheel 🎨🌈</p><p>Step into a circular room at the SF Marine Museum and look up.</p><p>Hiler's Prismatarium fills the ceiling with a 30-color wheel from his self-developed chart, each color representing a different emotion or mood.</p><p>More: <a href=\"https://puf.io/socials/2026-01-26-san-francisco-aquatic-park-maritime-museum/\">puf.io/socials/2026-...</a></p><div class=\"microblog_collection\">\n<img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreia4c7v4g3wfqljw3atdr4szebzv2k2vrjg7oxah2jyiszcswpfkzu\" alt=\"\" loading=\"lazy\"><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreidxre57htse7rmdxvwl5hccsnjm45y7frkjgvwf3oqyq4me2glwtu\" alt=\"\" loading=\"lazy\">\n</div>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mkt4vfpksz2c","date_published":"2026-05-01T22:00:49+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-05-01 22:00","date_timestamp":1777672849,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"89409475","content_html":"<p>You can now write Cloud Functions in Dart in a documented way 💙☁️</p><p>This works for callable/HTTP triggers, but not (yet) for background triggers - like when you write a document to Firestore, create a user in Auth, etc</p><p>So… let's upvote that issue 🙏📈</p><p><a href=\"https://firebase.uservoice.com/forums/948424-general/suggestions/51256099-support-background-triggers-like-firestore-in-cl\">Support background triggers (like Firestore) in Cloud Functions...</a></p> <a href=\"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mkss7gyyym2j\">bsky.app</a>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mkss7gyyym2j","date_published":"2026-05-01T18:49:35+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-05-01 18:49","date_timestamp":1777661375,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"89399745","content_html":"<p>If you're in the SFMOMA atrium and look up, you might spot... movement in the sky. 👣✨</p><p>Check out my latest post on the Oculus Bridge and Olafur Eliasson’s \"One-way colour tunnel\": <a href=\"https://puf.io/socials/2026-03-03-sfmoma-colour-tunnel/\">puf.io/socials/2026-...</a></p>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mksijo73tr2t","date_published":"2026-05-01T15:56:18+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-05-01 15:56","date_timestamp":1777650978,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"89356446","content_html":"<p>What a lovely Google Doodle today 🇺🇸🛣️🎉</p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreihlkq6pms5rc4q5i7zu5mz5d2rz5wmlhe5eog75frago4f64gsuru\" alt=\"Stylized “Google” logo designed like neon Route 66 signage, with a highway shield reading “Historic Route 66” in the center and a caption below: “Celebrating the Route 66 Centennial.”\" loading=\"lazy\"></p>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mkqrwu3ssv2e","date_published":"2026-04-30T23:39:27+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-30 23:39","date_timestamp":1777592367,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"89340981","content_html":"<p>Clipper ships → Clipper Cards 🚢💳</p><p>At SF Maritime Museum model Clipper ships show these fastest ships of their time. 🚤</p><p>Those Clipper Cards on display? They’re the namesake of today’s transit card, honoring the speed of those ships of yore. 🤯</p><p>More: <a href=\"https://puf.io/socials/2026-01-26-san-francisco-aquatic-park-maritime-museum/\">puf.io/socials/2026-...</a></p><div class=\"microblog_collection\">\n<img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreibghgxszcth532bdonp6x36fmb62eecazxgfkgxz3cgauydozlory\" alt=\"\" loading=\"lazy\"><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreidopqy2sjmbn4inm7rejoo2egffplqi7nc5tbatjt3iuccvtj5cgu\" alt=\"\" loading=\"lazy\">\n</div>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mkqb7mukji2j","date_published":"2026-04-30T18:40:06+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-30 18:40","date_timestamp":1777574406,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"89257691","content_html":"<p>🎨🧜‍♂️ Throughout the SF Maritime Museum are gorgeous murals and architectural details created as part of the PWA.</p><p>Some originals, some (partially) restored, all highlighting marine life﹠the building’s original artistic vision.</p><p>Also: those views! 😍</p><p><a href=\"https://puf.io/socials/2026-01-26-san-francisco-aquatic-park-maritime-museum/\">puf.io/socials/2026-...</a></p><div class=\"microblog_collection\">\n<img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreigxh57j7fge7rifo6jws2vciekiom2sdv64bemqeop6yfewkujiem\" alt=\"\" loading=\"lazy\"><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreibtxlonnjaybycdu32gxzcgpz4aphg2xzo5vonww7kykwlur3gl7m\" alt=\"\" loading=\"lazy\"><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreiamht4a3rwioa2loi74zzcy3z5ukp7cy7ke6zrfcxa4or5ybxv26y\" alt=\"\" loading=\"lazy\">\n</div>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mknf2mev3f2e","date_published":"2026-04-29T15:10:54+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-29 15:10","date_timestamp":1777475454,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"89217941","content_html":"<p>📚🤓 The Bobiverse book series opens in 2016, when Bob Johansson gets killed by a car during a Cryonics convention.</p><p>In book 1 (We Are Legion), he's revived in computer form in 2133, and helps save humanity from self-destruction.</p><p>Book 5 is the latest: summary and review 👇<br>1/3</p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreidyiwtmso7n4fe44m3xx2q4rghp33ymmd33e76de2m3tpmxuictpa\" alt=\"\" loading=\"lazy\"></p>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mkm2w5qrwz2o","date_published":"2026-04-29T02:36:48+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-29 02:36","date_timestamp":1777430208,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"89186156","content_html":"<p>Somebody on Reddit (r/asksf) asked about good, cheap burger places in SF.</p><p>I find this sort of info much more useful in map form, so I asked Gemini for that.</p><p><a href=\"https://gemini.google.com/share/f94db25d9299\">gemini.google.com/sh...</a></p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreifhvknnyy62xvmaps3rqupiwhgfqs4covxoucevj742dmliq4mh6q\" alt=\"\" loading=\"lazy\"></p>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mkl23cd4ts24","date_published":"2026-04-28T16:49:07+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-28 16:49","date_timestamp":1777394947,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"89140868","content_html":"<p>🌁🖼️ On the ground floor or the SF Maritime Museum, dioramas show how important the waterfront was to San Francisco’s development.</p><p>They visually and textually capture what life was like on the waterfront in the city’s early years.</p><p>More: <a href=\"https://puf.io/socials/2026-01-26-san-francisco-aquatic-park-maritime-museum/\">puf.io/socials/2026-...</a></p><div class=\"microblog_collection\">\n<img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreiddias22mcrgs7wzzblgagfzqfyv3iggew3milcdq4eys5axgdypi\" alt=\"\" loading=\"lazy\"><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreiavroomer3qgq32n5cifcyqqg2zjpoki5zheb7ttgrszxk32oas3q\" alt=\"\" loading=\"lazy\">\n</div>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mkj4zid5hf2z","date_published":"2026-04-27T22:36:27+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-27 22:36","date_timestamp":1777329387,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"89064387","content_html":"<p>🤘📖 A few years ago I bounced off the TV series Daisy Jones &amp; The Six… turns out I just didn’t like it in a visual format.</p><p>The audiobook? Loved it. Full cast, great cadence, and a real page-turner - even if the reveal felt anticlimactic.</p><p>★★★★☆<br><a href=\"https://puf.io/books/daisy-jones-&amp;-the-six---taylor-jenkins-reid\">puf.io/books/daisy-j...</a></p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreigruxystqf4mss7rba7gb6jrrnawthqago35gh3urxjunlq5nv5ha\" alt=\"\" loading=\"lazy\"></p>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mkgj6tn6vq24","date_published":"2026-04-26T21:36:14+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-26 21:36","date_timestamp":1777239374,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"89008105","content_html":"<p>🌊 SF Aquatic Park &amp; the waterfront 🏖️</p><p>At the western end of Fisherman’s Wharf, Aquatic Park connects the waterfront to a protected space meant for swimming, sailing, and relaxing.</p><p>It's a public place, right at the edge of the bay.</p><p>More: <a href=\"https://puf.io/socials/2026-01-26-san-francisco-aquatic-park-maritime-museum/\">puf.io/socials/2026-...</a></p><div class=\"microblog_collection\">\n<img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreiho4yambiudhqoob5agvattlpuorqnpdrz2oljespj5xx25i7izm4\" alt=\"\" loading=\"lazy\"><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreifl6nhppb4mofqnch3hp63fyijc7ndqlh3z6776latwbhqr6qoxaq\" alt=\"\" loading=\"lazy\">\n</div>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mkeatufrfk2e","date_published":"2026-04-26T00:01:35+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-26 00:01","date_timestamp":1777161695,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"89008106","content_html":"<p>I stumbled upon Bregman’s writing through *Humankind*, which I liked for its optimistic view on history.</p><p>His De geschiedenis van de vooruitgang (in Dutch only): progress is real, but not guaranteed - and it's on us to preserve it.</p><p>Rating: ★★★☆☆</p><p><a href=\"https://puf.io/books/de-geschiedenis-van-de-vooruitgang---rutger-bregman/\">puf.io/books/de-gesc...</a></p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreif5inrcwmx5gviqhia4zqzeq3u45ohfyk52bfrysydf233ip3eesq\" alt=\"\" loading=\"lazy\"></p>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mkdmxij3eh2o","date_published":"2026-04-25T18:05:43+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-25 18:05","date_timestamp":1777140343,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"88962770","content_html":"<p>🏗️🎨 The Maritime Museum was built as part of President Roosevelt’s Work Progress Administration </p><p>It created work for 1000s of San Franciscans, including many local artists﹠helped turn the dream of an aquatic park for the people into reality.</p><p>More: <a href=\"https://puf.io/socials/2026-01-26-san-francisco-aquatic-park-maritime-museum/\">puf.io/socials/2026-...</a></p><div class=\"microblog_collection\">\n<img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreiarohdcuzta7thbbelmfn3nzukk3srnu2fpsouhl7wjyjalg7nrpa\" alt=\"\" loading=\"lazy\"><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreievwgpfmo44j77yncfxf7wmkms5olcuknc5lssz4susbupivlxexe\" alt=\"\" loading=\"lazy\">\n</div>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mkbinlyy7z2z","date_published":"2026-04-24T21:43:16+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-24 21:43","date_timestamp":1777066996,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"88955426","content_html":"<p>Let's do some final 'vibe coding' in Vegas!</p><p><a href=\"https://bsky.app/search?q=%23GoogleCloudNext\">#GoogleCloudNext</a> ☁️⏭️🎰</p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreih4mvmcavgknvoldoie6j5hnnsgqymohwm4mtotbvaimehj2ot6ju\" alt=\"\" loading=\"lazy\"></p>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mkb3hzhpcx2s","date_published":"2026-04-24T17:47:30+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-24 17:47","date_timestamp":1777052850,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"88936551","content_html":"<p>💙</p><p>☁️⏭️🎰</p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreics2j3pmhw22gudxmb7tf2vazqcch6ukp3wuzqaih6w727pa5mpwi\" alt=\"\" loading=\"lazy\"></p>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mkaqtxulsh2j","date_published":"2026-04-24T14:37:20+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-24 14:37","date_timestamp":1777041440,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"88878093","content_html":"<p>I'm at the Google Cloud Next developer keynote.</p><p>Gemini Enterprise Agentic Platform</p><p>=</p><p>Great Reinforced Enterprise AI Tooling</p><p>GEAP = GREAT, get it?</p><p><a href=\"https://bsky.app/search?q=%23GoogleCloudNext\">#GoogleCloudNext</a></p><div class=\"microblog_collection\">\n<img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreiehclw4z5s2kqyvvolz464smnrtwahbeirs2rkagefs3hocs2et2u\" alt=\"\" loading=\"lazy\"><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreifevdyewycjkxbye4e6olfp6ejyjb6n44vtzek7bk44m4c3ty2rve\" alt=\"\" loading=\"lazy\">\n</div>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mk6kkpo5xy2c","date_published":"2026-04-23T17:39:27+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-23 17:39","date_timestamp":1776965967,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"88862869","content_html":"<p>🌁 SF Maritime Museum 🚢</p><p>That unusual building at the head of Aquatic Park isn’t random.<br>Get far enough away and its ship-like shape becomes clear.</p><p>Even the stands﹠bleachers on either side blend in so well they feel like part of the ship itself.</p><p>Link in first comment ⬇️<br>1/2</p><div class=\"microblog_collection\">\n<img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreico7lym3zurrkvxazu3hfikeeafd5qyrk3qo72v6yop5awkxsdzle\" alt=\"\" loading=\"lazy\"><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreib5qc4thnkyw2siaw4qf24luo67kfgd6f7ghrapblrk5djqqudrlq\" alt=\"\" loading=\"lazy\">\n</div>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mk6dlaid3424","date_published":"2026-04-23T15:34:29+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-23 15:34","date_timestamp":1776958469,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"88825078","content_html":"<p>The AI models we use nowadays are much more than just the LLM. More and more differentiation is moving into the system prompts and other tooling built around the core LLM.</p><p><a href=\"https://bsky.app/profile/did:plc:ympscj7qcsrcpj4qz35qhs3v\">Addy Osmani</a> explains this much better than I can, so go read:</p><p><a href=\"https://addyosmani.com/blog/agent-harness-engineering/\">Agent Harness Engineering</a></p><p>A coding agent is the model plus everything you...</p> <a href=\"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mk4wikrk7s24\">bsky.app</a>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mk4wikrk7s24","date_published":"2026-04-23T02:07:41+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-23 02:07","date_timestamp":1776910061,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"88821902","content_html":"<p>New (to me) in Firestore: update multiple documents with one API call.</p><p>This is perfect for backfill and other DB migration scenarios.</p><p>Only in the enterprise edition, but worth checking out for all.</p><p><a href=\"https://docs.cloud.google.com/firestore/native/docs/pipeline/dml#update_documents\">docs.cloud.google.co...</a></p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreifihnc2stzbzbjhr4y2h5igtvz66trnjaeqhh6ihrz3mezmh5ufwy\" alt=\"\" loading=\"lazy\"></p>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mk4pb4tgut2t","date_published":"2026-04-22T23:58:16+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-22 23:58","date_timestamp":1776902296,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"88817515","content_html":"<p>I'm at Cloud Next, but continuing to play with the text search capabilities of Firestore.</p><p>One of the interesting differences is in billing. The first example charges 2 read units (for 1 match), while the second example (using the new search capability) charges 6 read units</p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreihlczdrk2bxsq6t4ejtw5da5cab6kytax6hi7df7duy4bxce6ltsm\" alt=\"\" loading=\"lazy\"></p>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mk4jbwioyg2a","date_published":"2026-04-22T22:11:20+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-22 22:11","date_timestamp":1776895880,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"88801147","content_html":"<p>I'm not sure what company's booth this is at <a href=\"https://bsky.app/search?q=%23GoogleCloudNext%2C\">#GoogleCloudNext,</a> but they have the best swag. 😉</p><p><a href=\"https://bsky.app/search?q=%23PuppyLove\">#PuppyLove</a></p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreielkr2triiqaks2zm33dvpyvh5pcwnp5wulkkh2nki6xpbk3ykxt4\" alt=\"\" loading=\"lazy\"></p>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mk3yl6zz2n2s","date_published":"2026-04-22T17:12:17+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-22 17:12","date_timestamp":1776877937,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"88743454","content_html":"<p>📚 The Three Coffins showed up on a “best detective stories of all time” list, so I decided to read it. Two impossible murders are neatly solved, but not a personal favorite - I found the writing style a bit snobbish and outdated.</p><p>Rating: ★★★☆☆<br>More: <a href=\"https://puf.io/books/the-three-coffins---john-dickson-carr/\">puf.io/books/the-thr...</a></p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreicjusyhfsiz6hdnpdqpwprqn77ukis3lmtgw2skj3vz4nbwdiib3e\" alt=\"\" loading=\"lazy\"></p>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mk25f67eqy24","date_published":"2026-04-21T23:33:04+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-21 23:33","date_timestamp":1776814384,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"88736443","content_html":"<p>🆕 Oooh… this just showed up in the Firestore docs:</p><p>* Use text search<br>* Use geospatial search</p><p>So full-text search and geo-queries are now in Firestore, probably gonna be a Cloud Next announcement.</p><p>If you don't see me on here for a few hours, you know what I'm playing with<br>1/2</p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreihylyxzl33gfmcjojkovn5qi427tj7tsmn7xasjni7vy4jzfxkyni\" alt=\"\" loading=\"lazy\"></p>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mjzttahvnk2j","date_published":"2026-04-21T20:41:59+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-21 20:41","date_timestamp":1776804119,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"88717276","content_html":"<p>Does Google Stich have a companion Lilo product? 🤔</p><p>I mean, they'd likely get a very quick cease &amp; desist from Disney. But... that might be worth it? 🤷</p><p>@stitchbygoogle @dalmaer @_davideast</p>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mjzfmpdy7q2t","date_published":"2026-04-21T16:27:46+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-21 16:27","date_timestamp":1776788866,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"88657562","content_html":"<p>“Evil begins when you begin to treat people as things.”</p><p>    -  Terry Pratchett, I Shall Wear Midnight</p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fcdn.bsky.app%2Fimg%2Ffeed_fullsize%2Fplain%2Fdid%3Aplc%3Ar5shvvsyaq3kfatc3novwud6%2Fbafkreif5gdvfw3qeu2eqrmoaachg7ab5ao35l3oqhjoe3lirfwcuwuqc5i\" alt=\"\" loading=\"lazy\"></p>","summary":"","url":"https://bsky.app/profile/did:plc:r5shvvsyaq3kfatc3novwud6/post/3mjx7thilcp2s","date_published":"2026-04-20T19:38:47+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2026-04-20 19:38","date_timestamp":1776713927,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"56442168","content_html":"<p><a href=\"http://paul.kinlan.me\">@paul.kinlan.me</a></p>\n<p>&gt; . val.town is an amazing service and has the concept of inbound email “vals”. Vals are small chunks of TypeScript/JS attached to an email address that when emailed will run.</p>\n<p>How the heck is this part not in the main feature list, while outbound email is?!?</p>\n<p>Email is the original queueing system, and it still scales <em>very</em> well.</p>\n","url":"https://micro.blog/puf/56442168","date_published":"2025-01-31T18:31:44+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2025-01-31 18:31","date_timestamp":1738348304,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"14927025","content_html":"<p><a href=\"http://paul.kinlan.me\">@paul.kinlan.me</a> 👍👏🚀</p>\n","url":"https://micro.blog/puf/14927025","date_published":"2022-12-14T05:01:12+00:00","author":{"name":"Frank van Puffelen","url":"http://puf.io","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fwww.gravatar.com%2Favatar%2F4df6cf8a2fa4219b0990c579e3f5cffd%3Fs%3D96%26d%3Dhttps%253A%252F%252Fmicro.blog%252Fimages%252Fblank_avatar.png","_microblog":{"username":"puf"}},"_microblog":{"date_relative":"2022-12-14 05:01","date_timestamp":1670994072,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}}]}