<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><link>https://bsky.app/profile/webreflection.bsky.social</link><title>@webreflection.bsky.social - Andrea Giammarchi</title><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mp4dovnxis2s</link><description>ProcessingInstruction is coming back (for good!) so who am I for not providing already a polyfill?&#xA;&#xA;https://github.com/ungap/processing-instruction&#xA;&#xA;see merged issue from @WHATWG at the top of the README to know more or follow up, if interest 👋</description><pubDate>25 Jun 2026 11:37 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mp4dovnxis2s</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mozeq5baj22p</link><description>are you still doing the awkward atob/btoa dance to convert to and from base64? you can stop it now, it&#39;s fully supported on modern environments and it can be polyfilled in here:&#xA;https://github.com/ungap/base64#readme</description><pubDate>24 Jun 2026 07:17 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mozeq5baj22p</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mnv2hig6qs2a</link><description>TFW you are tired of reusing always the same pattern to enable/disable debugging and you&#39;d like to have some tiny tool to deal with it ... because it&#39;s an awesome pattern 🥰&#xA;&#xA;https://github.com/WebReflection/devbugger#readme</description><pubDate>09 Jun 2026 20:38 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mnv2hig6qs2a</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mncrac6ozk2b</link><description>new in DS4 Chat:&#xA;&#xA;  * bootstrap with your own system prompt&#xA;  * highlight out of the box for code&#xA;  * auto scrolling when images or other transformations happen as answer, right after the answer ends (load event for images)&#xA;&#xA;https://github.com/WebReflection/ds4-chat#readme</description><pubDate>02 Jun 2026 14:05 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mncrac6ozk2b</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mmtqxxv72k2y</link><description>Preact-like signals in 0.5K with all tests and benchmarks + 100% code coverage up and running, in case you&#39;d like to explore signals without paying any &#34;bloat tax&#34; (not that Preact or alien-signals are bloated, yet this is 0.5K)&#xA;https://github.com/WebReflection/signals#readme</description><pubDate>27 May 2026 14:50 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mmtqxxv72k2y</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mme4r3gzns2c</link><description>unobtrusive and &#34;as fast as it can be&#34; polyfill for both Map and WeakMap methods such as getOrInsert and getOrInsertComputed: https://github.com/ungap/map-extensions#readme&#xA;&#xA;Fully typed too 👋</description><pubDate>21 May 2026 09:38 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mme4r3gzns2c</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mm4pv24hvk2l</link><description>if you have any interest in a possible future where JSON can serialize and deserialize more than just 5 types, follow this space/proposal 👋&#xA;&#xA;https://es.discourse.group/t/jsonregistry-allows-branded-instances-in-regular-json/2569</description><pubDate>18 May 2026 10:59 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mm4pv24hvk2l</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mly5gcq4y22l</link><description>CORS landed in ds4 so it&#39;s now very simple to chat with it through this little (and fun) project from any mobile or desktop machine with a browser:&#xA;&#xA;https://github.com/WebReflection/ds4-chat</description><pubDate>16 May 2026 15:18 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mly5gcq4y22l</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mltb6prpbs22</link><description>my work and AI are not different topics anymore, here my TL;DR summary for May (busy times, I might not update that space as frequently as I&#39;ve previously done) 👋&#xA;&#xA;https://webreflection.github.io/standup/2026/05/14.html</description><pubDate>14 May 2026 16:42 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mltb6prpbs22</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mlsj3nakoc2a</link><description>getOrInsertComputed in Map/WeakMap is actually pretty cool, it simplifies caching a lot and it&#39;s not limited to synchronous values, example:&#xA;&#xA;const cache = new Map;&#xA;&#xA;const asText = async page =&gt; fetch(page).then(r =&gt; r.text());&#xA;&#xA;await cache.getOrInsertComputed(&#39;index&#39;, asText);</description><pubDate>14 May 2026 09:31 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mlsj3nakoc2a</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mk6en6imm22d</link><description>tired of the forward and backward tone/engagement around MutationObserver being able to snitch into Shadow DOM Roots?&#xA;&#xA;https://github.com/WebReflection/shadow-observer#shadow-observer</description><pubDate>23 Apr 2026 15:53 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mk6en6imm22d</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mjk2ctqqmk2r</link><description>D1 is awesome but its API a bit &#34;outdated&#34; to me ... so I&#39;ve written and tested template literals tags for it and I am pretty pleased with the result (and ergonomics).&#xA;&#xA;https://github.com/WebReflection/d1-tags/tree/main?tab=readme-ov-file</description><pubDate>15 Apr 2026 13:55 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mjk2ctqqmk2r</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mj3f22ptms2g</link><description>am I the only one seeing a repeatable pattern out of this story?&#xA;&#xA;AI is awesome if you know what to ask and what to build, it still requires knowledge around that &#34;what&#34;, right?&#xA;&#xA;https://undark.org/2026/04/01/sweden-schools-books/</description><pubDate>09 Apr 2026 17:57 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mj3f22ptms2g</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3miym3cqjfk2z</link><description>updated to GNOME 50 and emoji-copy isn&#39;t working anymore? there you go:&#xA;https://github.com/FelipeFTN/Emoji-Copy/issues/141#issuecomment-4207369085</description><pubDate>08 Apr 2026 15:25 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3miym3cqjfk2z</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mich6jocy22h</link><description>whenever I read posts like &#34;don&#39;t us JS Array reduce&#34; I&#39;m like:&#xA;&#xA;const gcd = (a, b) =&gt; (b ? gcd(b, a % b) : a);&#xA;const lcm = (a, b) =&gt; (a * b) / gcd(a, b);&#xA;&#xA;[2, 3, 4, 5].reduce((p, c) =&gt; lcm(p, c)); // 60&#xA;[12, 18, 36].reduce((p, c) =&gt; gcd(p, c)); // 6&#xA;&#xA;I mean ... 🤷</description><pubDate>30 Mar 2026 19:59 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mich6jocy22h</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mi5j2oimfk2c</link><description>apparently my account has been compromised on bsky ... it&#39;s honestly the only service out there that never offered me (until today), or enforced, 2FA, it was kinda inevitable, yet my deepest apologies if my account spam/scammed you by any mean 🙏</description><pubDate>28 Mar 2026 20:49 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mi5j2oimfk2c</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mgurngr4r22t</link><description>in case anyone is interested, I am documenting what I am working on regularly (each week) with links and every other detail needed to understand where I come from and where I am heading.&#xA;&#xA;This is OSS to me, nobody can blame me for not being transparent 😇&#xA;&#xA;https://github.com/WebReflection/standup#readme</description><pubDate>12 Mar 2026 16:04 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mgurngr4r22t</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mgqblpjspk2s</link><description>in today &#34;nobody asked for it, thanks!&#34; news, the recent issue filed against flatted module (333M downloads per months) kinda &#34;scared&#34; me to the point I rewrote the whole thing in a binary friendly format: flatted-view: please test it, thank you 🙏&#xA;&#xA;https://github.com/WebReflection/flatted-view#readme</description><pubDate>10 Mar 2026 21:06 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mgqblpjspk2s</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mgks4pf2zs2j</link><description>flatted is out with a tiny yet important update for the JS variant: if you stringify 50K objects that point to each other you no longer have call stack recursion error on parse, it just works 🥳</description><pubDate>08 Mar 2026 16:45 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mgks4pf2zs2j</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mg327rnobk2i</link><description>in today &#34;good morning OSS&#34; news, &#xA;@golang&#xA; receives its first *flatted* implementation, making flatted now usable in JS, TS, Python, PHP and, ultimately Go 🥳&#xA;Huge thank to &#xA;Harald Fielker&#xA; for helping out (writing everything), lets&#39; go beyond 300M Downloads!&#xA;https://github.com/WebReflection/flatted?tab=readme-ov-file#flatted</description><pubDate>02 Mar 2026 10:28 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mg327rnobk2i</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mftxcghny22g</link><description>dear followers, I need to ask you a little favor: I am trying to fix the Web around SharedArrayBuffer and the ability to synchronize any task from a never blocking Worker, I need you to tell me if this page is blank or shows &#34;async&#34; as channel, thank you!&#xA;&#xA;webreflection.pythonanywhere.com&#xA;https://webreflection.pythonanywhere.com/</description><pubDate>27 Feb 2026 14:47 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mftxcghny22g</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mf34lvzfvk2m</link><description>there&#39;s one primitive missing on the Web and that&#39;s the ability to synchronously make a Worker busy while querying the main thread ... in coincident I&#39;ve solved that but the missing primitive is hurting a lot (for debugging reasons) so ... here I am again:&#xA;https://github.com/WebReflection/reflected/#readme</description><pubDate>17 Feb 2026 17:45 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mf34lvzfvk2m</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3me7tfyxpgc2x</link><description>today I’ve quickly glued together two libraries that makes custom elements without shadow dom as fast and as simple as it can get and for every browsers … after reading the N post about ShadowDOM issues with CSS.&#xA;&#xA;You can stop that madness already 👋&#xA;&#xA;https://github.com/WebReflection/elements#readme</description><pubDate>06 Feb 2026 21:19 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3me7tfyxpgc2x</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mdzzg747rc2n</link><description>JS Proxy are wonderful, penalized by TS inability to actually understand/deal with these but the things that these unlock are incredible!&#xA;&#xA;It might be a niche use case but if you need cached results, here my next go-to library:&#xA;https://github.com/WebReflection/cached-proxy#readme</description><pubDate>04 Feb 2026 13:50 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mdzzg747rc2n</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mdi7ag4uj22e</link><description>this might be handy for any &#34;forever waiting&#34; pattern that requires instant reactivity + it doesn&#39;t leak compared to the original post that inspired it 😇&#xA;&#xA;https://github.com/WebReflection/gen-q#readme</description><pubDate>28 Jan 2026 11:47 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mdi7ag4uj22e</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3mcz4zq6bu222</link><description>a common complain about our minimalistic TOML parser is that it wouldn&#39;t support trailing commas ... well, v0.4.0 does now, keeping it ~540bytes after brotli 🥳&#xA;&#xA;https://github.com/WebReflection/basic-toml#readme</description><pubDate>22 Jan 2026 11:57 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3mcz4zq6bu222</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3m5lfi64y6k2x</link><description>&#34;Let&#39;s Call The Whole Thing Off&#34; 🎶🎵&#xA;&#xA;https://github.com/WebReflection/packatoon#readme</description><pubDate>14 Nov 2025 09:45 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3m5lfi64y6k2x</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3m5bgzp2evk2s</link><description>if you use Proxies and you bind methods returned on `get` trap, please read carefully why that&#39;s a bad idea and how to avoid doing that:&#xA;&#xA;https://es.discourse.group/t/reflect-set-args-receiver-throwing-for-no-reason/2462/8</description><pubDate>10 Nov 2025 10:46 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3m5bgzp2evk2s</guid></item><item><link>https://bsky.app/profile/webreflection.bsky.social/post/3m5bbdizkmc2s</link><description>so ... TOON is basically JSONH but 14 years later? ... cool 🙄&#xA;&#xA;https://medium.com/medialesson/json-vs-toon-a-new-era-of-structured-input-19cbb7fc552b&#xA;&#xA;https://github.com/WebReflection/JSONH</description><pubDate>10 Nov 2025 09:04 +0000</pubDate><guid isPermaLink="false">at://did:plc:xrd4louojimip3igz6awkfnn/app.bsky.feed.post/3m5bbdizkmc2s</guid></item></channel></rss>