<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: gildas</title><link>https://news.ycombinator.com/user?id=gildas</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 31 Aug 2026 14:32:33 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=gildas" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by gildas in "Iceland votes on whether to restart talks on joining EU"]]></title><description><![CDATA[
<p>How many years before you understand what cookie banners are?</p>
]]></description><pubDate>Sat, 29 Aug 2026 12:06:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=49489207</link><dc:creator>gildas</dc:creator><comments>https://news.ycombinator.com/item?id=49489207</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49489207</guid></item><item><title><![CDATA[New comment by gildas in "Show HN: Bento - An entire PowerPoint in one HTML file (edit+view+data+collab)"]]></title><description><![CDATA[
<p>This might interest you as well [1]. Similarly, here is an example of presentation using this format [2].<p>[1] <a href="https://github.com/gildas-lormeau/Polyglot-HTML-ZIP-PNG" rel="nofollow">https://github.com/gildas-lormeau/Polyglot-HTML-ZIP-PNG</a><p>[2] <a href="https://github.com/gildas-lormeau/Polyglot-HTML-ZIP-PNG/raw/main/en-EN/dist/presentation-polyglot-png-zip-html_en-EN.html" rel="nofollow">https://github.com/gildas-lormeau/Polyglot-HTML-ZIP-PNG/raw/...</a></p>
]]></description><pubDate>Wed, 22 Jul 2026 22:03:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=49014083</link><dc:creator>gildas</dc:creator><comments>https://news.ycombinator.com/item?id=49014083</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49014083</guid></item><item><title><![CDATA[Aug 31st 2026: All Manifest V2 extensions removed from the Chrome Web Store]]></title><description><![CDATA[
<p>Article URL: <a href="https://developer.chrome.com/docs/extensions/develop/migrate/mv2-deprecation-timeline">https://developer.chrome.com/docs/extensions/develop/migrate/mv2-deprecation-timeline</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48818657">https://news.ycombinator.com/item?id=48818657</a></p>
<p>Points: 4</p>
<p># Comments: 1</p>
]]></description><pubDate>Tue, 07 Jul 2026 14:50:54 +0000</pubDate><link>https://developer.chrome.com/docs/extensions/develop/migrate/mv2-deprecation-timeline</link><dc:creator>gildas</dc:creator><comments>https://news.ycombinator.com/item?id=48818657</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48818657</guid></item><item><title><![CDATA[New comment by gildas in "I Stored a Website in a Favicon"]]></title><description><![CDATA[
<p>You can even make the file compatible with ZIP (and PDF) on top of that, see <a href="https://github.com/gildas-lormeau/Polyglot-HTML-ZIP-PNG/raw/main/demo.png.zip.html" rel="nofollow">https://github.com/gildas-lormeau/Polyglot-HTML-ZIP-PNG/raw/...</a> (and <a href="https://github.com/gildas-lormeau/Polyglot-HTML-ZIP-PNG" rel="nofollow">https://github.com/gildas-lormeau/Polyglot-HTML-ZIP-PNG</a>)</p>
]]></description><pubDate>Sat, 20 Jun 2026 12:44:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=48608836</link><dc:creator>gildas</dc:creator><comments>https://news.ycombinator.com/item?id=48608836</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48608836</guid></item><item><title><![CDATA[New comment by gildas in "HTML is a native image format, hear me out"]]></title><description><![CDATA[
<p>There is a third option:<p>- Save the page as a self-extracting ZIP file, see <a href="https://github.com/gildas-lormeau/Polyglot-HTML-ZIP-PNG" rel="nofollow">https://github.com/gildas-lormeau/Polyglot-HTML-ZIP-PNG</a></p>
]]></description><pubDate>Thu, 11 Jun 2026 13:25:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=48490049</link><dc:creator>gildas</dc:creator><comments>https://news.ycombinator.com/item?id=48490049</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48490049</guid></item><item><title><![CDATA[New comment by gildas in "Harness engineering: Leveraging Codex in an agent-first world"]]></title><description><![CDATA[
<p>I have an example of a side-project [1] where I think I naturally applied the best practices described in this article. My goal was to see if it's possible to code an entire project using a single agent (Claude).<p>To do this, I "simply" asked the agent, every time it encountered an issue, how to resolve it, using a validation tool or script. I also asked it to code these tools during audits. As a result, I now have over 30+ rules [2] for validating their commits. It's working pretty well now.<p>[1] <a href="https://github.com/gildas-lormeau/rebuild-and-ruin" rel="nofollow">https://github.com/gildas-lormeau/rebuild-and-ruin</a> (let the timer expire to see the "demo" mode)<p>[2] <a href="https://github.com/gildas-lormeau/rebuild-and-ruin/blob/a4c348fc8fb3e3dc3dbb652495be3f5e8da09d23/package.json#L52-L91" rel="nofollow">https://github.com/gildas-lormeau/rebuild-and-ruin/blob/a4c3...</a></p>
]]></description><pubDate>Sun, 07 Jun 2026 11:56:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=48433972</link><dc:creator>gildas</dc:creator><comments>https://news.ycombinator.com/item?id=48433972</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48433972</guid></item><item><title><![CDATA[New comment by gildas in "Gwtar: A static efficient single-file HTML format"]]></title><description><![CDATA[
<p>I just ran a test on a 10GB HTML page and called window.stop() via a 100ms setTimeout, which, in my opinion, simulates what would happen in a better-implemented case in SingleFile if the call to window.stop() were made as soon as the HTTP headers of the fetch request are received (i.e. easy fix). And it actually works. It interrupts the loading at approx. 15MB of data, the rendering of the page, and it's partially and smoothly displayed (no freeze). So it's not totally useless but it deserves to be optimized at a minimum in SingleFile, as I indicated. In the end, the MDN documentation is not very clear...<p>Edit: I've just implemented the "good enough of my machine fix" aka the "easy fix", <a href="https://github.com/gildas-lormeau/single-file-core/commit/a08c69fa1a417b6fccdeeeeb6c20c4faeff59b21" rel="nofollow">https://github.com/gildas-lormeau/single-file-core/commit/a0...</a>.<p>Edit #2: I've just understood that "parent" in "this method cannot interrupt its *parent* document's loading" from the MDN doc probably means the "parent" of the frame (when the script is running into it).</p>
]]></description><pubDate>Sun, 15 Feb 2026 23:43:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=47029009</link><dc:creator>gildas</dc:creator><comments>https://news.ycombinator.com/item?id=47029009</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47029009</guid></item><item><title><![CDATA[New comment by gildas in "Gwtar: A static efficient single-file HTML format"]]></title><description><![CDATA[
<p>The call to window.stop() stops HTML parsing/rendering, which is unnecessary since the script has downloaded the page via HTTP and will decompress it as-is as a binary file (zip.js supports concatenated payloads before and after the zip data). However, in my case, the call to window.stop() is executed asynchronously once the binary has been downloaded, and therefore may be too late. This is probably less effective than in your case with gtwar.<p>I implemented this in the simplest way possible because if the zip file is read from the filesystem, window.stop() must not be called immediately because the file must be parsed entirely. In my case, it would require slightly more complex logic to call window.stop() as early as possible.<p>Edit: Maybe it's totally useless though, as documented here [1]: "Because of how scripts are executed, this method cannot interrupt its parent document's loading, but it will stop its images, new windows, and other still-loading objects." (you mentioned it in the article)<p>[1] <a href="https://developer.mozilla.org/en-US/docs/Web/API/Window/stop" rel="nofollow">https://developer.mozilla.org/en-US/docs/Web/API/Window/stop</a><p>Edit #2: Since I didn't know that window.call() was most likely useless in my case, I understand your approach much better now. Thank you very much for clarifying that with your question!</p>
]]></description><pubDate>Sun, 15 Feb 2026 22:45:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=47028529</link><dc:creator>gildas</dc:creator><comments>https://news.ycombinator.com/item?id=47028529</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47028529</guid></item><item><title><![CDATA[New comment by gildas in "Gwtar: A static efficient single-file HTML format"]]></title><description><![CDATA[
<p>The reason I did not implement the innovative mechanism you describe is because, in my case, all the technical effort was/is focused on reading the archive from the filesystem. No one has suggested it either.<p>Edit: Actually, SingleFile already calls window.stop() when displaying a zip/html file from HTTP, see <a href="https://github.com/gildas-lormeau/single-file-core/blob/22fc429b766d88bae1a9755896a92d9def6e0a37/processors/compression/compression.js#L441" rel="nofollow">https://github.com/gildas-lormeau/single-file-core/blob/22fc...</a></p>
]]></description><pubDate>Sun, 15 Feb 2026 21:52:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=47027992</link><dc:creator>gildas</dc:creator><comments>https://news.ycombinator.com/item?id=47027992</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47027992</guid></item><item><title><![CDATA[New comment by gildas in "Gwtar: A static efficient single-file HTML format"]]></title><description><![CDATA[
<p>I haven't looked closely, but I get the impression that this is an implementation detail which is not really related to the format. In this case, a polyglot zip/html file could also interrupt page loading via a window.stop() call and rely on range requests (zip.js supports them) to unzip and display the page. This could also be transparent for the user, depending on whether the file is served via HTTP or not. However, I admit that I haven't implemented this mechanism yet.</p>
]]></description><pubDate>Sun, 15 Feb 2026 21:38:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=47027845</link><dc:creator>gildas</dc:creator><comments>https://news.ycombinator.com/item?id=47027845</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47027845</guid></item><item><title><![CDATA[New comment by gildas in "Gwtar: A static efficient single-file HTML format"]]></title><description><![CDATA[
<p>I would like to know why ZIP/HTML polyglot format produced by SingleFile [1] and mentioned in the article "achieve static, single, but not efficiency". What's not efficient compared to the gwtar format?<p>[1] <a href="https://github.com/gildas-lormeau/Polyglot-HTML-ZIP-PNG" rel="nofollow">https://github.com/gildas-lormeau/Polyglot-HTML-ZIP-PNG</a></p>
]]></description><pubDate>Sun, 15 Feb 2026 21:30:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=47027770</link><dc:creator>gildas</dc:creator><comments>https://news.ycombinator.com/item?id=47027770</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47027770</guid></item><item><title><![CDATA[Gwtar: A static efficient single-file HTML format]]></title><description><![CDATA[
<p>Article URL: <a href="https://gwern.net/gwtar">https://gwern.net/gwtar</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46771811">https://news.ycombinator.com/item?id=46771811</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 26 Jan 2026 21:28:49 +0000</pubDate><link>https://gwern.net/gwtar</link><dc:creator>gildas</dc:creator><comments>https://news.ycombinator.com/item?id=46771811</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46771811</guid></item><item><title><![CDATA[New comment by gildas in "Await Is Not a Context Switch: Understanding Python's Coroutines vs. Tasks"]]></title><description><![CDATA[
<p>If we were to compare this to the JS world, it seems Python’s async is closer to Babel-style generator-based coroutines [1] than to JavaScript’s async/await execution model.<p>[1] <a href="https://babeljs.io/docs/babel-plugin-transform-async-to-generator" rel="nofollow">https://babeljs.io/docs/babel-plugin-transform-async-to-gene...</a></p>
]]></description><pubDate>Wed, 26 Nov 2025 12:29:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=46056773</link><dc:creator>gildas</dc:creator><comments>https://news.ycombinator.com/item?id=46056773</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46056773</guid></item><item><title><![CDATA[New comment by gildas in "Await Is Not a Context Switch: Understanding Python's Coroutines vs. Tasks"]]></title><description><![CDATA[
<p>You haven't got it wrong, the first example in the article behaves the same in JS, see <a href="https://jsfiddle.net/L5w2q1p7/" rel="nofollow">https://jsfiddle.net/L5w2q1p7/</a>.</p>
]]></description><pubDate>Wed, 26 Nov 2025 11:55:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=46056534</link><dc:creator>gildas</dc:creator><comments>https://news.ycombinator.com/item?id=46056534</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46056534</guid></item><item><title><![CDATA[New comment by gildas in "Perkeep – Personal storage system for life"]]></title><description><![CDATA[
<p>Thank you also for the kind words! Regardoing support, you can choose whichever method you prefer; it makes no difference to me actually.</p>
]]></description><pubDate>Wed, 12 Nov 2025 22:05:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=45907461</link><dc:creator>gildas</dc:creator><comments>https://news.ycombinator.com/item?id=45907461</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45907461</guid></item><item><title><![CDATA[New comment by gildas in "Perkeep – Personal storage system for life"]]></title><description><![CDATA[
<p>Author of SingleFile here. Sorry, this is obviously not normal. Please feel free to report any bugs here <a href="https://github.com/gildas-lormeau/SingleFile/issues" rel="nofollow">https://github.com/gildas-lormeau/SingleFile/issues</a>.</p>
]]></description><pubDate>Wed, 12 Nov 2025 10:14:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=45898421</link><dc:creator>gildas</dc:creator><comments>https://news.ycombinator.com/item?id=45898421</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45898421</guid></item><item><title><![CDATA[New comment by gildas in "Ask HN: How to stop an AWS bot sending 2B requests/month?"]]></title><description><![CDATA[
<p>Great idea, some people have already implemented it for the same type of need, it would seem (see the list of user agents in the source code). Implementation seems simple.<p><a href="https://github.com/0x48piraj/gz-bomb/blob/master/gz-bomb-server.go" rel="nofollow">https://github.com/0x48piraj/gz-bomb/blob/master/gz-bomb-ser...</a></p>
]]></description><pubDate>Fri, 17 Oct 2025 08:51:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=45614560</link><dc:creator>gildas</dc:creator><comments>https://news.ycombinator.com/item?id=45614560</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45614560</guid></item><item><title><![CDATA[New comment by gildas in "Peeking Inside Gigantic Zips with Only Kilobytes"]]></title><description><![CDATA[
<p>FYI, zip.js has no issues with 1 (it can be fixed with standard extra fields), 3 (zip64 support), and 5 (you cannot have more than 64K of comment data at the end of the file).</p>
]]></description><pubDate>Fri, 17 Oct 2025 08:38:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=45614485</link><dc:creator>gildas</dc:creator><comments>https://news.ycombinator.com/item?id=45614485</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45614485</guid></item><item><title><![CDATA[New comment by gildas in "Peeking Inside Gigantic Zips with Only Kilobytes"]]></title><description><![CDATA[
<p>Unfortunately, I will have difficulty answering your question because my knowledge is limited to the zip format. In the use case presented in the article, I find that the zip format meets the need well. Generally speaking, in the context of long-term archiving, its big advantage is also that there are thousands of implementations for reading/writing zip files.</p>
]]></description><pubDate>Thu, 16 Oct 2025 21:03:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=45610632</link><dc:creator>gildas</dc:creator><comments>https://news.ycombinator.com/item?id=45610632</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45610632</guid></item><item><title><![CDATA[New comment by gildas in "Peeking Inside Gigantic Zips with Only Kilobytes"]]></title><description><![CDATA[
<p>For implementation in a library, you can use HttpRangeReader [1][2] in zip.js [3] (disclaimer: I am the author). It's a solid feature that has been in the library for about 10 years.<p>[1] <a href="https://gildas-lormeau.github.io/zip.js/api/classes/HttpRangeReader.html" rel="nofollow">https://gildas-lormeau.github.io/zip.js/api/classes/HttpRang...</a><p>[2] <a href="https://github.com/gildas-lormeau/zip.js/blob/master/tests/all/test-http-range.js" rel="nofollow">https://github.com/gildas-lormeau/zip.js/blob/master/tests/a...</a><p>[3] <a href="https://github.com/gildas-lormeau/zip.js" rel="nofollow">https://github.com/gildas-lormeau/zip.js</a></p>
]]></description><pubDate>Thu, 16 Oct 2025 19:51:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=45609918</link><dc:creator>gildas</dc:creator><comments>https://news.ycombinator.com/item?id=45609918</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45609918</guid></item></channel></rss>