<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: ucarion</title><link>https://news.ycombinator.com/user?id=ucarion</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 25 Jun 2026 18:44:23 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=ucarion" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by ucarion in "My Favorite Bugs: Invalid Surrogate Pairs"]]></title><description><![CDATA[
<p>> I do not agree that slice() should operate on extended grapheme clusters. Don’t lump the grapheme cluster/scalar value split in with the sins of UTF-16 and its unreliable code point/code unit split.<p>Maybe a simpler argument against this idea is that the definition of an extended grapheme cluster changes between versions of Unicode. The relevant standard is on its 47th revision (not all of which change extended grapheme clusters, but many do): <a href="https://www.unicode.org/reports/tr29/" rel="nofollow">https://www.unicode.org/reports/tr29/</a></p>
]]></description><pubDate>Sat, 16 May 2026 20:10:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=48163346</link><dc:creator>ucarion</dc:creator><comments>https://news.ycombinator.com/item?id=48163346</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48163346</guid></item><item><title><![CDATA[New comment by ucarion in "Zugzwang"]]></title><description><![CDATA[
<p>In old-school chess AIs, zugzwang is also of interest because it can break null-move pruning[0], which is a way to prune the search tree. "Null move" just means "skip your turn", and the assumption that skipping your turn is always worse than the optimal move. But in zugzwang positions, that assumption is wrong, so you have to avoid doing null-move pruning.<p>Stockfish's heuristic for "risk of zugzwang" is basically "only kings and pawns left over", alongside logic for "is null-move pruning even useful right now" [1]:<p><pre><code>    // Step 9. Null move search with verification search
    if (cutNode && ss->staticEval >= beta - 16 * depth - 53 * improving + 378 && !excludedMove
        && pos.non_pawn_material(us) && ss->ply >= nmpMinPly && !is_loss(beta))
    {

</code></pre>
[0]: <a href="https://en.wikipedia.org/wiki/Null-move_heuristic" rel="nofollow">https://en.wikipedia.org/wiki/Null-move_heuristic</a><p>[1]: <a href="https://github.com/official-stockfish/Stockfish/blob/1a882efc7fc22b3b16893a406e6060916022fcc4/src/search.cpp#L928-L930" rel="nofollow">https://github.com/official-stockfish/Stockfish/blob/1a882ef...</a></p>
]]></description><pubDate>Sat, 02 May 2026 16:43:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=47987958</link><dc:creator>ucarion</dc:creator><comments>https://news.ycombinator.com/item?id=47987958</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47987958</guid></item><item><title><![CDATA[New comment by ucarion in "Show HN: Twitch Roulette – Find live streamers who need views the most"]]></title><description><![CDATA[
<p>Leads me to discover: <a href="https://www.twitch.tv/chat_loadtest_01" rel="nofollow">https://www.twitch.tv/chat_loadtest_01</a> ... neat!</p>
]]></description><pubDate>Sat, 28 Mar 2026 05:22:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=47551886</link><dc:creator>ucarion</dc:creator><comments>https://news.ycombinator.com/item?id=47551886</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47551886</guid></item><item><title><![CDATA[New comment by ucarion in "What does " 2>&1 " mean?"]]></title><description><![CDATA[
<p>I've almost never needed any of these, but there's all sorts of weird redirections you can do in GNU Bash: <a href="https://www.gnu.org/software/bash/manual/bash.html#Redirecting-Output" rel="nofollow">https://www.gnu.org/software/bash/manual/bash.html#Redirecti...</a></p>
]]></description><pubDate>Thu, 26 Feb 2026 22:54:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=47173276</link><dc:creator>ucarion</dc:creator><comments>https://news.ycombinator.com/item?id=47173276</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47173276</guid></item><item><title><![CDATA[New comment by ucarion in "ASCII-Driven Development"]]></title><description><![CDATA[
<p>It is news to me that manipulating ASCII art is something AI can do well! I remember this being something LLMs were all particularly horrible at. But I just checked and it seems to work at least with Opus 4.5.<p>claude(1) with Opus 4.5 seems to be able to take the examples in that article, and handle things like "collapse the sidebar" or "show me what it looks like with an open modal" or "swap the order of the second and third rows". I remember not long ago you'd get back UI mojibake if you asked for this.<p>Goes to show you really can't rest on your laurels for longer than 3 months with these tools.</p>
]]></description><pubDate>Sat, 10 Jan 2026 19:34:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=46569141</link><dc:creator>ucarion</dc:creator><comments>https://news.ycombinator.com/item?id=46569141</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46569141</guid></item><item><title><![CDATA[New comment by ucarion in "Fran Sans – font inspired by San Francisco light rail displays"]]></title><description><![CDATA[
<p>Eddie Izzard was joking in 1998 about the "The" and the prohibited names for The City (<a href="https://youtu.be/QRB_GhLXCds?si=R4kYkodzvYDxe33H&t=276" rel="nofollow">https://youtu.be/QRB_GhLXCds?si=R4kYkodzvYDxe33H&t=276</a>), so it's probably been like this for many decades thence!</p>
]]></description><pubDate>Mon, 24 Nov 2025 02:09:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=46029599</link><dc:creator>ucarion</dc:creator><comments>https://news.ycombinator.com/item?id=46029599</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46029599</guid></item><item><title><![CDATA[New comment by ucarion in "Show HN: Find Hidden Gems on HN"]]></title><description><![CDATA[
<p>For those unfamiliar: <a href="https://news.ycombinator.com/item?id=26998308">https://news.ycombinator.com/item?id=26998308</a> ... It's basically a bunch of posts that 'dang and 'tomhow (others too? idk) think are underrated, so it tends to be potent hacker-catnip stuff.</p>
]]></description><pubDate>Fri, 29 Aug 2025 16:50:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=45066459</link><dc:creator>ucarion</dc:creator><comments>https://news.ycombinator.com/item?id=45066459</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45066459</guid></item><item><title><![CDATA[New comment by ucarion in "What are OKLCH colors?"]]></title><description><![CDATA[
<p>For others, I'm sure parent knows: OKLCH is largely a bugfix for CILEAB. Both try to make a color space where even steps feel evenly spaced to a human. But CIELAB had procedural flaws in its creation.<p>See slide 19: <a href="https://www.w3.org/Graphics/Color/Workshop/slides/talk/lilley" rel="nofollow">https://www.w3.org/Graphics/Color/Workshop/slides/talk/lille...</a> -- if you ask CIELAB to make "pure blue" (RGB 0 0 100%) become grayscale, the intermediate colors become purple to the human eye. The entire point of a perceptual color space is that that doesn't happen. OKLCH fixes that.<p>BTW, credit to Björn Ottosson, who basically side-projected a color space into the web standards and more: <a href="https://bottosson.github.io/posts/oklab/" rel="nofollow">https://bottosson.github.io/posts/oklab/</a> ... folks like him are why we sometimes have nice things!</p>
]]></description><pubDate>Mon, 25 Aug 2025 16:26:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=45015599</link><dc:creator>ucarion</dc:creator><comments>https://news.ycombinator.com/item?id=45015599</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45015599</guid></item><item><title><![CDATA[New comment by ucarion in "Pixel 10 Phones"]]></title><description><![CDATA[
<p>Kind of moot anyway; 100x zoom is equivalent to a 2400mm lens (with no stabilization assist). If you can hand-aim that on target, you're an elite marksman.</p>
]]></description><pubDate>Wed, 20 Aug 2025 18:56:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=44965029</link><dc:creator>ucarion</dc:creator><comments>https://news.ycombinator.com/item?id=44965029</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44965029</guid></item><item><title><![CDATA[New comment by ucarion in "Astronomy Photographer of the Year 2025 shortlist"]]></title><description><![CDATA[
<p>Seems their IG has some of these, including the shot from the article: <a href="https://www.instagram.com/tripodtales/p/C8hRS0ctzCp/" rel="nofollow">https://www.instagram.com/tripodtales/p/C8hRS0ctzCp/</a><p>Factory Butte: <a href="https://www.instagram.com/tripodtales/p/C6gg-wpS-tr/" rel="nofollow">https://www.instagram.com/tripodtales/p/C6gg-wpS-tr/</a><p>"Long Dong Silver": <a href="https://www.instagram.com/tripodtales/p/C-yLCskOGiC/" rel="nofollow">https://www.instagram.com/tripodtales/p/C-yLCskOGiC/</a></p>
]]></description><pubDate>Sat, 09 Aug 2025 00:13:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=44842974</link><dc:creator>ucarion</dc:creator><comments>https://news.ycombinator.com/item?id=44842974</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44842974</guid></item><item><title><![CDATA[New comment by ucarion in "Astronomy Photographer of the Year 2025 shortlist"]]></title><description><![CDATA[
<p>> Into the Past by Jim Hildreth<p>The area in this photo -- the Caineville Mesa, Factory Butte, "Long Dong Silver" (I'm not aware of a more polite name) -- is some of the strangest land in America. It really is that lunar blue gray. The Temples of the Sun and Moon (enormous natural sandcastles) are also nearby, and are similarly eerie in the evening.<p>The closest I've ever felt to being in space. Recommend!</p>
]]></description><pubDate>Fri, 08 Aug 2025 16:53:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=44839183</link><dc:creator>ucarion</dc:creator><comments>https://news.ycombinator.com/item?id=44839183</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44839183</guid></item><item><title><![CDATA[Kashikodokoro Riding Car]]></title><description><![CDATA[
<p>Article URL: <a href="https://en.wikipedia.org/wiki/Kashikodokoro_Riding_Car">https://en.wikipedia.org/wiki/Kashikodokoro_Riding_Car</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44749498">https://news.ycombinator.com/item?id=44749498</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 31 Jul 2025 20:00:39 +0000</pubDate><link>https://en.wikipedia.org/wiki/Kashikodokoro_Riding_Car</link><dc:creator>ucarion</dc:creator><comments>https://news.ycombinator.com/item?id=44749498</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44749498</guid></item><item><title><![CDATA[New comment by ucarion in "We made Postgres writes faster, but it broke replication"]]></title><description><![CDATA[
<p>Since we both worked there: I can think of a few places at Segment where we'd have added more reporting/analytics/search if it weren't such a pain to set up a OLAP copy of our control plane databases. Remember how much engineering effort we spent on teams that did nothing but control plane database stuff?<p>Data plane is a different story, but not everything is 1m+ RPS.</p>
]]></description><pubDate>Mon, 21 Jul 2025 18:51:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=44638935</link><dc:creator>ucarion</dc:creator><comments>https://news.ycombinator.com/item?id=44638935</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44638935</guid></item><item><title><![CDATA[New comment by ucarion in "An Interactive Guide to Rate Limiting"]]></title><description><![CDATA[
<p>Shuffle-sharding is similar to stochastic Blue stuff, and you'll find Amazon talking about it:<p><a href="https://aws.amazon.com/builders-library/workload-isolation-using-shuffle-sharding/" rel="nofollow">https://aws.amazon.com/builders-library/workload-isolation-u...</a><p>Which isn't exactly what you're talking about, but between that and other things in the "Builder's Library" series, you can see that people <i>are</i> doing this, and writing about it.</p>
]]></description><pubDate>Fri, 06 Jun 2025 16:36:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=44202580</link><dc:creator>ucarion</dc:creator><comments>https://news.ycombinator.com/item?id=44202580</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44202580</guid></item><item><title><![CDATA[New comment by ucarion in "What a developer needs to know about SCIM"]]></title><description><![CDATA[
<p>In practice, identity providers (Okta, Entra, etc.) will retry for a bit before reporting to the IDP admin that their SCIM connection to the SaaS vendor is unhealthy. From there, things get fixed ad-hoc.<p>Okta and Entra have different request patterns, and so have differing artifacts if the SaaS vendor's state diverges from the desired state. Okta tends to be more stable, because they usually GET-then-PUT (c.f. compare-and-set). Entra likes to PATCH, which leads to dead-reckoning artifacts.<p>What you're describing is an interesting and hard problem in computer science, but SCIM is not trying <i>that</i> hard to get it right.</p>
]]></description><pubDate>Fri, 06 Jun 2025 16:23:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=44202432</link><dc:creator>ucarion</dc:creator><comments>https://news.ycombinator.com/item?id=44202432</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44202432</guid></item><item><title><![CDATA[New comment by ucarion in "What a developer needs to know about SCIM"]]></title><description><![CDATA[
<p>To really support Entra in particular, you must have to reference Entra's implicit spec, which is roughly documented here:<p><a href="https://github.com/AzureAD/SCIMReferenceCode/tree/master/Microsoft.SystemForCrossDomainIdentityManagement/Schemas">https://github.com/AzureAD/SCIMReferenceCode/tree/master/Mic...</a><p>One way this comes up is that the way those C# objects serialize, there are properties that Microsoft will send you in form `"key": { "value": "xxx" }`, but which they expect that you read back to them of the form `"key": "xxx"`.<p>It's best to not take the SCIM RFCs too literally.</p>
]]></description><pubDate>Fri, 06 Jun 2025 16:14:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=44202337</link><dc:creator>ucarion</dc:creator><comments>https://news.ycombinator.com/item?id=44202337</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44202337</guid></item><item><title><![CDATA[New comment by ucarion in "Show HN: Tesseral – Open-Source Auth"]]></title><description><![CDATA[
<p>Django is in the works! As is Laravel and Rails (my first love).</p>
]]></description><pubDate>Thu, 29 May 2025 15:39:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=44127115</link><dc:creator>ucarion</dc:creator><comments>https://news.ycombinator.com/item?id=44127115</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44127115</guid></item><item><title><![CDATA[New comment by ucarion in "Show HN: Tesseral – Open-Source Auth"]]></title><description><![CDATA[
<p>Right now we offer prebuilt pages you can redirect to, as well as SDKs your clientside JavaScript can talk to if you want to reskin. Said SDKs are glorified cURL wrappers, and our prebuilt pages are built using them too.<p>Prebuilt UIs: <a href="https://tesseral.com/docs/features/self-serve-organization-settings">https://tesseral.com/docs/features/self-serve-organization-s...</a><p>The API they talk to, which you can talk to too: <a href="https://tesseral.com/docs/frontend-api-reference/tesseral-frontend-api">https://tesseral.com/docs/frontend-api-reference/tesseral-fr...</a></p>
]]></description><pubDate>Thu, 29 May 2025 15:18:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=44126921</link><dc:creator>ucarion</dc:creator><comments>https://news.ycombinator.com/item?id=44126921</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44126921</guid></item><item><title><![CDATA[New comment by ucarion in "Show HN: Tesseral – Open-Source Auth"]]></title><description><![CDATA[
<p>Since Tesseral's data model is that users belong-to organizations, anytime you have a user, an organization is also available to you (e.g. in the context of a JWT's claims, or an API call to `api.tesseral.com/v1/users/user_...`, etc):<p>For authz checks, you have a similar denormalization when you use Tesseral's RBAC. When a user gets an access token, those access tokens have a list of `actions` that the user is allowed to carry out. All of our SDKs have a `hasPermission` function that basically just `accessToken.actions.contains(...)`:<p>e.g. Go: <a href="https://pkg.go.dev/github.com/tesseral-labs/tesseral-sdk-go@v0.0.7/auth#HasPermission" rel="nofollow">https://pkg.go.dev/github.com/tesseral-labs/tesseral-sdk-go@...</a><p>Again in Go, here's the data type for access tokens:<p><a href="https://pkg.go.dev/github.com/tesseral-labs/tesseral-sdk-go#AccessTokenClaims" rel="nofollow">https://pkg.go.dev/github.com/tesseral-labs/tesseral-sdk-go#...</a> (organization lives in .Organization, list of permissions lives in .Actions)<p>So we do a little bit of denormalization whenever we mint an access token, but in exchange your code doesn't need to do any network hops to get an organization or do a permission check. (Access tokens are ES256-signed, and our SDKs handle caching the public keys, so that network hop is very infrequent.)</p>
]]></description><pubDate>Thu, 29 May 2025 15:14:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=44126891</link><dc:creator>ucarion</dc:creator><comments>https://news.ycombinator.com/item?id=44126891</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44126891</guid></item><item><title><![CDATA[New comment by ucarion in "Show HN: Tesseral – Open-Source Auth"]]></title><description><![CDATA[
<p>Thanks Aeneas!</p>
]]></description><pubDate>Thu, 29 May 2025 14:59:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=44126754</link><dc:creator>ucarion</dc:creator><comments>https://news.ycombinator.com/item?id=44126754</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44126754</guid></item></channel></rss>