<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: aabbcc1241</title><link>https://news.ycombinator.com/user?id=aabbcc1241</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 14 Jun 2026 12:51:09 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=aabbcc1241" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by aabbcc1241 in "Ask HN: AI companies' bots are making my server slow, what do you do?"]]></title><description><![CDATA[
<p>I saw them used in the linux community, maybe it's finally my time to use/need this kind of tools.<p>(At the same time, I'm happy if my site can help the AIs / its users, but I prefer it not significantly slow down my own usage. There should be a balanced combination)</p>
]]></description><pubDate>Mon, 30 Mar 2026 16:59:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=47576826</link><dc:creator>aabbcc1241</dc:creator><comments>https://news.ycombinator.com/item?id=47576826</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47576826</guid></item><item><title><![CDATA[Ask HN: AI companies' bots are making my server slow, what do you do?]]></title><description><![CDATA[
<p>Do you reject them or put them in lower priority?<p>So far the AI bots are honest on the user agent. But my low budget server is significantly slower than it should be when I'm using it as a human.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47498749">https://news.ycombinator.com/item?id=47498749</a></p>
<p>Points: 3</p>
<p># Comments: 4</p>
]]></description><pubDate>Tue, 24 Mar 2026 04:58:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=47498749</link><dc:creator>aabbcc1241</dc:creator><comments>https://news.ycombinator.com/item?id=47498749</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47498749</guid></item><item><title><![CDATA[New comment by aabbcc1241 in "Snow Simulation Toy"]]></title><description><![CDATA[
<p>Some naming (suggested by grok) are indie website, handmade web, or digital garden.</p>
]]></description><pubDate>Wed, 28 Jan 2026 11:55:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=46794182</link><dc:creator>aabbcc1241</dc:creator><comments>https://news.ycombinator.com/item?id=46794182</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46794182</guid></item><item><title><![CDATA[New comment by aabbcc1241 in "Snow Simulation Toy"]]></title><description><![CDATA[
<p>I like the website, sharing interesting creation, and linking to other interesting websites made by the peers.<p>Is there a neural/positive term to describe this kind of website? (beside call it "old school" or "good old day"?)</p>
]]></description><pubDate>Wed, 28 Jan 2026 01:21:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=46789775</link><dc:creator>aabbcc1241</dc:creator><comments>https://news.ycombinator.com/item?id=46789775</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46789775</guid></item><item><title><![CDATA[New comment by aabbcc1241 in "I made my own Git"]]></title><description><![CDATA[
<p>Interesting take. I'm using btrfs (instead of ext4) with compression enabled (using zstd), so most of the files are compressed "transparently" - the files appear as normal files to the applications, but on disk it is compressed, and the application don't need to do the compress/decompress.</p>
]]></description><pubDate>Wed, 28 Jan 2026 00:16:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=46789173</link><dc:creator>aabbcc1241</dc:creator><comments>https://news.ycombinator.com/item?id=46789173</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46789173</guid></item><item><title><![CDATA[New comment by aabbcc1241 in "Show HN: Workaround for YouTube's "Save to Watch Later" Broken in Firefox"]]></title><description><![CDATA[
<p>I found that it is caused by a userscript running below code.<p><pre><code>    // version 1
    let body = document.createElement('body')
    body.innerHTML = document.body.innerHTML

    // version 2
    let body = document.body.cloneNode(true)
</code></pre>
Either version can trigger the bug of the pop up menu now showing up.
The menu is able to show up if doing early return to skip that code.<p>This is wired, that code should not be mutating existing DOM.<p>Update: Below version of sandboxed clone doesn't break the youtube popup menu.<p><pre><code>    // version 3
    let parser = new DOMParser()
    let doc = parser.parseFromString(document.body.outerHTML, 'text/html')
    let body = doc.body</code></pre></p>
]]></description><pubDate>Sat, 03 Jan 2026 03:55:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=46472645</link><dc:creator>aabbcc1241</dc:creator><comments>https://news.ycombinator.com/item?id=46472645</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46472645</guid></item><item><title><![CDATA[New comment by aabbcc1241 in "Show HN: Workaround for YouTube's "Save to Watch Later" Broken in Firefox"]]></title><description><![CDATA[
<p>Thanks for sharing your state.
I just tried again with troubleshoot mode, it works ...<p>Then it seems to be in conflict with some addon I'm using.</p>
]]></description><pubDate>Sat, 03 Jan 2026 02:33:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=46472201</link><dc:creator>aabbcc1241</dc:creator><comments>https://news.ycombinator.com/item?id=46472201</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46472201</guid></item><item><title><![CDATA[Show HN: Workaround for YouTube's "Save to Watch Later" Broken in Firefox]]></title><description><![CDATA[
<p>YouTube's "Save to Watch Later" popover menu has been broken in Firefox for years (at least on my Linux installations). The three-dot menu → "Save to Watch Later" doesn't respond to clicks. Other popover menus work fine (account menu, upload menu), but this specific one is broken.<p>I reported it on Twitter/X (YouTube staff responded asking for feedback), submitted feedback through YouTube's website, but it's still broken as of December 27, 2025.<p>My workaround: Copy video URL → Open Chrome → Save → Switch back to Firefox. Very inconvenient when Firefox is your main browser.<p>I finally built a userscript workaround that fixes this for me:<p><pre><code>  - Adds a direct "Watch Later" button to the video menu via DOM injection (bypasses broken popover)
  - Saves videos to localStorage and automatically saves them when they appear in recommendation sidebars on other pages
  - Injects pending videos directly into the Watch Later playlist page DOM (shows them at the top with clear "not saved yet" indicators)
</code></pre>
Why this approach? YouTube has complex authentication checking, so you can't simply send a POST request to add videos to playlists. Instead, the script waits for videos to naturally appear in recommendation sidebars, then clicks YouTube's own "Watch Later" buttons (which DO work in Firefox when hovered).<p>Works in Firefox with Tampermonkey or other userscript addons.<p>Code: <a href="https://gist.github.com/beenotung/6cfb46bd5f4f800ac5393317536714fe" rel="nofollow">https://gist.github.com/beenotung/6cfb46bd5f4f800ac539331753...</a><p>Sharing in case other Firefox users are experiencing the same issue. I hope YouTube will eventually fix this and make sure it works not just in Chrome, but until then, this script works for me.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46402072">https://news.ycombinator.com/item?id=46402072</a></p>
<p>Points: 2</p>
<p># Comments: 3</p>
]]></description><pubDate>Sat, 27 Dec 2025 14:27:07 +0000</pubDate><link>https://gist.github.com/beenotung/6cfb46bd5f4f800ac5393317536714fe</link><dc:creator>aabbcc1241</dc:creator><comments>https://news.ycombinator.com/item?id=46402072</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46402072</guid></item><item><title><![CDATA[New comment by aabbcc1241 in "A high schooler writes about AI tools in the classroom"]]></title><description><![CDATA[
<p>Instead of not letting the students to use AI, how about we adjust the assessment method, and learning objective, to let the students do something that AI along cannot do, so that they can do it w/wo AI but still build up their own skill.<p>In the workplace, we're using AI anyway.<p>I'm not sure if this direction is suitable for kids, like we still learn to do calculation even when we have calculator (which is needed for some cases, but for complex math, we opt for tools)</p>
]]></description><pubDate>Fri, 05 Sep 2025 15:33:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=45139761</link><dc:creator>aabbcc1241</dc:creator><comments>https://news.ycombinator.com/item?id=45139761</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45139761</guid></item><item><title><![CDATA[New comment by aabbcc1241 in "Red Programming Language"]]></title><description><![CDATA[
<p>I know asciidoc from red and erlang, it's a nice language. Not sure why it is not as popular as markdown.</p>
]]></description><pubDate>Wed, 21 May 2025 02:32:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=44047788</link><dc:creator>aabbcc1241</dc:creator><comments>https://news.ycombinator.com/item?id=44047788</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44047788</guid></item><item><title><![CDATA[Show HN: Gen-ts-type – Code Generate TS Type from JSON data with collapsed field]]></title><description><![CDATA[
<p>I built a tool to generate TypeScript types from JSON/JS data, initially to tackle the deeply nested arrays in for a few JSON RPC API (e.g., array[0].content.section.contents[0].item.contents[0] could be a aItem or bItem). Some existing tools generate named union types at every level, which can get messy. This tool automatically converts fields to optional at the right depth, making the types cleaner and easier to use.<p>Features:
- Web UI: Paste JSON, get TypeScript types instantly
- CLI or importable in TypeScript projects
- Handles complex types (nested objects, arrays, etc.)
- Supports optional fields and union types where needed<p>Try the Web UI: <a href="https://gen-ts-type.surge.sh" rel="nofollow">https://gen-ts-type.surge.sh</a><p>Also published on github and npm as gen-ts-type<p>Feedback welcome!</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44047656">https://news.ycombinator.com/item?id=44047656</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 21 May 2025 02:03:44 +0000</pubDate><link>https://gen-ts-type.surge.sh</link><dc:creator>aabbcc1241</dc:creator><comments>https://news.ycombinator.com/item?id=44047656</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44047656</guid></item><item><title><![CDATA[New comment by aabbcc1241 in "Mozilla Firefox – Official GitHub repo"]]></title><description><![CDATA[
<p>I made a search index for github repo [1] because it takes quite some time for github to load the repositories page (which is the page to allow searching),<p>And sometimes even using the exact repo name in Google search, I cannot see the corresponding (non-popular) repo.<p>[1] <a href="https://res-index.hkit.cc" rel="nofollow">https://res-index.hkit.cc</a></p>
]]></description><pubDate>Fri, 16 May 2025 19:22:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=44008945</link><dc:creator>aabbcc1241</dc:creator><comments>https://news.ycombinator.com/item?id=44008945</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44008945</guid></item><item><title><![CDATA[New comment by aabbcc1241 in "Critical CSS"]]></title><description><![CDATA[
<p>It will be great if it is package as a library</p>
]]></description><pubDate>Wed, 07 May 2025 02:46:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=43911758</link><dc:creator>aabbcc1241</dc:creator><comments>https://news.ycombinator.com/item?id=43911758</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43911758</guid></item><item><title><![CDATA[New comment by aabbcc1241 in "JSX over the Wire"]]></title><description><![CDATA[
<p>Hey, thanks for sharing "JSX Over the Wire"! As the creator of ts-liveview, I’m thrilled to see Dan’s ideas on server-side JSX rendering and minimal client updates—they mesh so well with my work.<p>ts-liveview is a TypeScript framework I built (grab it as a starter project on GitHub[1]) for real-time, server-rendered apps. It uses JSX/TSX to render HTML server-side and, in WebSocket mode, updates the DOM by targeting specific CSS selectors (document.querySelector) over WebSockets or HTTP/2 streaming. This keeps client-side JavaScript light, delivering fast, SEO-friendly pages and reactive UIs, much like Dan’s “JSX over the wire” vision.<p>What’s your take on this server-driven approach? Could it shake up how we build apps compared to heavy client-side frameworks? Curious if you’ve tried ts-liveview yet—it’s been a fun project to dig into these ideas!<p>[1] <a href="https://github.com/beenotung/ts-liveview">https://github.com/beenotung/ts-liveview</a></p>
]]></description><pubDate>Wed, 16 Apr 2025 11:15:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=43703926</link><dc:creator>aabbcc1241</dc:creator><comments>https://news.ycombinator.com/item?id=43703926</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43703926</guid></item><item><title><![CDATA[New comment by aabbcc1241 in "Show HN: Check out my new egg-citing game for the brain"]]></title><description><![CDATA[
<p>I enjoy the game, I wish it has different level of difficulty.<p>E.g. for easier mode. It should only generate pattern that is "beneficial" to the current board.</p>
]]></description><pubDate>Mon, 10 Mar 2025 07:41:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=43317883</link><dc:creator>aabbcc1241</dc:creator><comments>https://news.ycombinator.com/item?id=43317883</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43317883</guid></item><item><title><![CDATA[Paradigm shifts for the decentralized Web (2017)]]></title><description><![CDATA[
<p>Article URL: <a href="https://ruben.verborgh.org/blog/2017/12/20/paradigm-shifts-for-the-decentralized-web/">https://ruben.verborgh.org/blog/2017/12/20/paradigm-shifts-for-the-decentralized-web/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43166495">https://news.ycombinator.com/item?id=43166495</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 25 Feb 2025 00:08:14 +0000</pubDate><link>https://ruben.verborgh.org/blog/2017/12/20/paradigm-shifts-for-the-decentralized-web/</link><dc:creator>aabbcc1241</dc:creator><comments>https://news.ycombinator.com/item?id=43166495</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43166495</guid></item><item><title><![CDATA[Ask HN: Do you prefer tailing or leading comma?]]></title><description><![CDATA[
<p>In the js space, people often leave a tailing comma at the end of each line, when writing the elements of an array.<p>I was the practise of using leading comma in Elm, where we put a comma at the beginning of each line, when writing elements of a list.<p>I'm also using leading comma (and leading and/or) when writing sql query.<p>For example:<p><pre><code>    select
      user.id
    , user.username
    from user
    where user.ban_time is null
      and user.activate_time is not null</code></pre></p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42416080">https://news.ycombinator.com/item?id=42416080</a></p>
<p>Points: 1</p>
<p># Comments: 4</p>
]]></description><pubDate>Sat, 14 Dec 2024 10:27:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=42416080</link><dc:creator>aabbcc1241</dc:creator><comments>https://news.ycombinator.com/item?id=42416080</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42416080</guid></item><item><title><![CDATA[New comment by aabbcc1241 in "AllRGB – use each RGB values once to make images"]]></title><description><![CDATA[
<p>The objective of allRGB is simple: To create images with one pixel for every RGB color (16,777,216); not one color missing, and not one color twice.</p>
]]></description><pubDate>Sat, 07 Dec 2024 12:13:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=42349263</link><dc:creator>aabbcc1241</dc:creator><comments>https://news.ycombinator.com/item?id=42349263</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42349263</guid></item><item><title><![CDATA[AllRGB – use each RGB values once to make images]]></title><description><![CDATA[
<p>Article URL: <a href="https://allrgb.com/">https://allrgb.com/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42349262">https://news.ycombinator.com/item?id=42349262</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Sat, 07 Dec 2024 12:13:44 +0000</pubDate><link>https://allrgb.com/</link><dc:creator>aabbcc1241</dc:creator><comments>https://news.ycombinator.com/item?id=42349262</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42349262</guid></item><item><title><![CDATA[New comment by aabbcc1241 in "Geometric line-art of Wacław Szpakowski (2017)"]]></title><description><![CDATA[
<p>If you like to explore on programmatic art, you may also have fun with allrgb.<p>That is to use all rgb values exactly once to make an art work.<p>Examples: <a href="https://allrgb.com/" rel="nofollow">https://allrgb.com/</a></p>
]]></description><pubDate>Sat, 07 Dec 2024 12:12:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=42349255</link><dc:creator>aabbcc1241</dc:creator><comments>https://news.ycombinator.com/item?id=42349255</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42349255</guid></item></channel></rss>