<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: SebastianKra</title><link>https://news.ycombinator.com/user?id=SebastianKra</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 05 Jun 2026 07:18:39 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=SebastianKra" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by SebastianKra in "Does anybody like React?"]]></title><description><![CDATA[
<p>Maybe it's a me-thing, but when I see the creators of a system I trust basically deprecate it, then I try to re-evaluate my viewpoint. Also, when I read the post a few years back, I honestly thought that it must have been a product of its time.<p>> Every UI is <i>always</i> some mapping of the state.<p>Sure, but it previously wasn't described as such. It was described as a list of imperative operations "if x do that" (unless the developer just gave up and had a giant refreshEverything() function).
IIRC, at the time, MVC had a common problem of controller bloat, precisely because it was trying to perform the reconciliation between view and model imperatively rather than simply describing it as a function. MVVM solved this partially with data-binding, but depending on the framework, you still had lackluster handling of derived state inside the view-model.<p>> What does "pure representation" mean to you?<p>I mean that, the render function of the component is a 100% pure function of the state that the framework injects. By "render function" I mean everything except the statements beginning with `use...`. Those are just React's syntax for defining the component. Another framework such as SwiftUI might have defined them outside the function.<p>> But can you elaborate the <i>specific</i> advantages you believe the react approach gives us over, say, MVC?<p>There are so many resources on this, so I don't know what I can say to convince you, but I'll try:<p>* The Compiler. Regardless of whether you think it’s self-inflicted complexity (I don’t), functional patterns generally are easier to statically analyze and transform.<p>* Transitions, concurrent rendering, suspense, & time-slicing. All of these are possible by rendering components with outdated state. A low priority update may trigger a loading state and defer its commit. Meanwhile, high priority updates can continue to work as usual. In the past ~2 years, this is easily where I've seen the most UX & DX gains in frontend.<p>* Most importantly: readability. Even if components are only 90% pure, I still see side-effects and state clearly marked. Even in MVVM, I've seen so much spaghetti from my coworkers. In  React & post-React frameworks, when debugging a component, I have a much narrower range of things I need to check. For example, I don't have to worry that an object I'm reading from is being mutated by a component on a completely different route.<p>Overall, the reason why this post rubs me the wrong way, is that you took a theoretical design document, misunderstood it for the actual, practical implementation and snarked at the authors for not going with the "obviously correct" solution of OOP. Not seeing the bigger picture in 2018 is understandable, but now it's... interesting.</p>
]]></description><pubDate>Tue, 26 May 2026 16:44:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=48282218</link><dc:creator>SebastianKra</dc:creator><comments>https://news.ycombinator.com/item?id=48282218</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48282218</guid></item><item><title><![CDATA[New comment by SebastianKra in "Does anybody like React?"]]></title><description><![CDATA[
<p>Interesting that you still stand by that, even after Apple moved to the exact same model with Swift UI.<p>Narrowmindedly worrying about syntactical differences is contributing nothing to the conversation. The point is relinquishing control of state to the framework (be it via props, hooks or @State), and drawing the UI as a pure representation of whatever the framework tells you. Hence ui = f(state). This gets you a metric ton of advantages, which is why every modern framework is doing it.<p>Classes, by themselves, are inadequate as containers for state unless that state must only exist in memory and never be observed, synchronized or serialized. You can attempt to patch that with decorators, ORMs or whatever, but now you're doing the same thing as React is doing with functions.</p>
]]></description><pubDate>Tue, 26 May 2026 10:51:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48277920</link><dc:creator>SebastianKra</dc:creator><comments>https://news.ycombinator.com/item?id=48277920</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48277920</guid></item><item><title><![CDATA[New comment by SebastianKra in "On The <dl> (2021)"]]></title><description><![CDATA[
<p>I don't want that. I don't want to care about screen readers (unfortunately I have to). I want a system where I can pick well-defined rules and then css can style it, screen readers will understand it, automations can parse it, keyboard navigation is free.<p>Obviously thats not what we got, but I feel like the set of established UI patterns is manageable enough that it <i>could</i> be built.<p>A great example is the new <select> styling that developers styled in all kinds of creative ways. Now give me that for comboboxes, trees, data-grids etc...</p>
]]></description><pubDate>Sat, 23 May 2026 18:24:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=48249938</link><dc:creator>SebastianKra</dc:creator><comments>https://news.ycombinator.com/item?id=48249938</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48249938</guid></item><item><title><![CDATA[New comment by SebastianKra in "Cursor Introduces Composer 2.5"]]></title><description><![CDATA[
<p>It seems obvious that they plan to eventually drop VSCode. 
I'd be willing to take them up on that offer. Their agent window is genuinely better as a starting point.<p>What annoys me is how little they want to integrate with ...anything. Wanna open a link in your default browser? Use our built-in chromium fork, we insist. Wanna open a location in Zed? No, please use our half-baked editor re-implementation. Wanna open a location in <i>Cursors own vscode-based editor</i>? You can't. Managed to work around that somehow? We changed your files to "Worktree TS", disabling all your language servers. It's like programming on an iPhone.</p>
]]></description><pubDate>Tue, 19 May 2026 17:52:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=48196697</link><dc:creator>SebastianKra</dc:creator><comments>https://news.ycombinator.com/item?id=48196697</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48196697</guid></item><item><title><![CDATA[New comment by SebastianKra in "I’ve banned query strings"]]></title><description><![CDATA[
<p>You're conflating correctly targeted ads and useful information.<p>If you sell gambling ads to an addicted gambler, the gambler doesn't get useful information.<p>Niche interests might get a pass. But then again: if I’m getting an ad for a 3D printing product on a 3D printing review site, its very likely that the advertised product wasn’t actually the best and is just artificially pushed on me.</p>
]]></description><pubDate>Mon, 11 May 2026 07:00:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=48091866</link><dc:creator>SebastianKra</dc:creator><comments>https://news.ycombinator.com/item?id=48091866</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48091866</guid></item><item><title><![CDATA[New comment by SebastianKra in "I’ve banned query strings"]]></title><description><![CDATA[
<p>Textbook marketing speak: “Don't you <i>want</i> more relevant ads?”.<p>It assumes that “ads” = useful information, but that's rare at best. Most ads focus on stealing your attention and creating a fear of missing out. NordVPN isn't educating you. They just manufacture a need and then hope that you won't invest time in researching a better option.<p>Why would I give them more leverage to do that?</p>
]]></description><pubDate>Sun, 10 May 2026 14:43:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=48084407</link><dc:creator>SebastianKra</dc:creator><comments>https://news.ycombinator.com/item?id=48084407</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48084407</guid></item><item><title><![CDATA[New comment by SebastianKra in "Networking changes coming in macOS 27"]]></title><description><![CDATA[
<p>Have they, by chance, also fixed the issue where MacOs' SMB implementation is unusably slow when copying many small files?<p>A backup of my 2TB MacBook literally takes weeks.</p>
]]></description><pubDate>Tue, 28 Apr 2026 10:58:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=47932751</link><dc:creator>SebastianKra</dc:creator><comments>https://news.ycombinator.com/item?id=47932751</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47932751</guid></item><item><title><![CDATA[New comment by SebastianKra in "What async promised and what it delivered"]]></title><description><![CDATA[
<p>The function coloring problem represents multiple complaints. I disagree that the propagation of async makes the sync case irrelevant. In the frontend, receiving a promise has completely different implications on loading states. In the backend, I usually try to separate side-effects from pure functions, so the pure functions are usually sync.<p>Because JS is single threaded, fs.readSync will freeze the entire app. The only case where I would find that acceptable is in cli-scripts. But that could also be achieved with nodejs’ support for top-level await. There's perhaps a slight overhead from the Promise being created, but JS-Engines have so many optimizations that I don't even know if that matters. If nothing else is scheduled, awaiting a promise is functionally the same as blocking. Even in rare cases where you <i>do</i> want to block other scheduled events from running, you could achieve that with an explicit locking mechanism instead.<p>You could argue that filesystem access is fast so blocking everything is fine, but what if the file happens to be on a NAS somewhere?</p>
]]></description><pubDate>Sun, 26 Apr 2026 16:45:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=47911670</link><dc:creator>SebastianKra</dc:creator><comments>https://news.ycombinator.com/item?id=47911670</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47911670</guid></item><item><title><![CDATA[New comment by SebastianKra in "What async promised and what it delivered"]]></title><description><![CDATA[
<p>The discussion around async await always focuses on asynchronous use-cases, but I see the biggest benefits when writing synchronous code. In JS, <i>not</i> having await in front of a statement means that nothing will interfere with your computation. This simplifies access to shared state without race conditions.<p>The other advantage is a rough classification in the type system. <i>Not</i> marking a function as async means that the author believes it can be run in a reasonable amount of time and is safe to run eg. on a UI main thread. In that sense, the propagation through the call hierarchy is a feature, not a bug.<p>I can see that maintaining multiple versions of a function is annoying for library authors, but on the other hand, functions like fs.readSync shouldn’t even exist. Other code could be running on this thread, so it's not acceptable to just freeze it arbitrarily.</p>
]]></description><pubDate>Sat, 25 Apr 2026 19:00:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=47903668</link><dc:creator>SebastianKra</dc:creator><comments>https://news.ycombinator.com/item?id=47903668</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47903668</guid></item><item><title><![CDATA[New comment by SebastianKra in "Apple's accidental moat: How the "AI Loser" may end up winning"]]></title><description><![CDATA[
<p>Knowing Apple's track history with materials, I guess the seats will look like used iPad Smart Keyboard Folios after two years.</p>
]]></description><pubDate>Mon, 13 Apr 2026 10:50:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=47750232</link><dc:creator>SebastianKra</dc:creator><comments>https://news.ycombinator.com/item?id=47750232</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47750232</guid></item><item><title><![CDATA[New comment by SebastianKra in "Subscription bombing and how to mitigate it"]]></title><description><![CDATA[
<p>I suspect everyone feels that way except SaaS providers. They could just give you a checkbox to turn the newsletter off, but they don't.</p>
]]></description><pubDate>Thu, 02 Apr 2026 06:55:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=47610866</link><dc:creator>SebastianKra</dc:creator><comments>https://news.ycombinator.com/item?id=47610866</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47610866</guid></item><item><title><![CDATA[New comment by SebastianKra in "LibreOffice and the Art of Overreacting"]]></title><description><![CDATA[
<p>This prompted me to look it up.<p>Are we seriously talking about a white box with placeholder text, or has there been a development since then?<p><a href="https://www.phoronix.com/image-viewer.php?id=2026&image=libreoffice_donate_1a_lrg" rel="nofollow">https://www.phoronix.com/image-viewer.php?id=2026&image=libr...</a></p>
]]></description><pubDate>Thu, 26 Mar 2026 11:48:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=47529315</link><dc:creator>SebastianKra</dc:creator><comments>https://news.ycombinator.com/item?id=47529315</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47529315</guid></item><item><title><![CDATA[New comment by SebastianKra in "Tuna: A new, modern, modal launcher for macOS"]]></title><description><![CDATA[
<p>This composability was also a defining feature of Launchbar.<p>I loved it, but eventually found that Raycasts approach of having predefined plugins for each use case is more performant <i>, discoverable </i> and usable.<p>Kinda like how the unix philosophy was beaten by integrated full-stack applications.<p>* since anything can be composed, everything must be in the same search index. This slows down the index, and means you need to sift through more irrelevant results.</p>
]]></description><pubDate>Wed, 25 Feb 2026 11:34:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=47150197</link><dc:creator>SebastianKra</dc:creator><comments>https://news.ycombinator.com/item?id=47150197</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47150197</guid></item><item><title><![CDATA[New comment by SebastianKra in "LibreOffice blasts OnlyOffice for working with Microsoft to lock users in"]]></title><description><![CDATA[
<p>Link to the actual source: <a href="https://blog.documentfoundation.org/blog/2026/02/16/why-odf-and-not-ooxml/" rel="nofollow">https://blog.documentfoundation.org/blog/2026/02/16/why-odf-...</a></p>
]]></description><pubDate>Sat, 21 Feb 2026 09:59:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=47099195</link><dc:creator>SebastianKra</dc:creator><comments>https://news.ycombinator.com/item?id=47099195</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47099195</guid></item><item><title><![CDATA[New comment by SebastianKra in "A beginner's guide to split keyboards"]]></title><description><![CDATA[
<p>Maybe it's related to finger length. On the home row, my index finger is somewhat stretched and my little finger is bent.</p>
]]></description><pubDate>Fri, 20 Feb 2026 12:37:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=47087244</link><dc:creator>SebastianKra</dc:creator><comments>https://news.ycombinator.com/item?id=47087244</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47087244</guid></item><item><title><![CDATA[New comment by SebastianKra in "Looks: A Halide Mark III Preview"]]></title><description><![CDATA[
<p>I felt so vindicated when Halide finally released Process Zero, years after the iPhone 13.<p>I still remember that 50-page community thread of people complaining about the ugly camera, and one guy swearing up and down that “it's fine, it's fine you're all wrong”.<p>> It's your *expectations* that are wrong, not the phone. If you go out and buy a "professional" $6000 DSLR and $6000 lens… you will have many of these same issues.<p>Then Process Zero comes and solves all of my issues...<p>I love your work. Keep doing what you do.<p><a href="https://discussions.apple.com/thread/253181534?sortBy=rank&page=3" rel="nofollow">https://discussions.apple.com/thread/253181534?sortBy=rank&p...</a></p>
]]></description><pubDate>Tue, 17 Feb 2026 11:21:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47046270</link><dc:creator>SebastianKra</dc:creator><comments>https://news.ycombinator.com/item?id=47046270</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47046270</guid></item><item><title><![CDATA[New comment by SebastianKra in "Discord Alternatives, Ranked"]]></title><description><![CDATA[
<p>> Imagine a Matrix client […] e2ee […]<p>The biggest immediate win that we can achieve for our users is to remove all (!) technical jargon from our landing pages and product ui.<p>This is a problem throughout all FOSS. For example in KDE:<p>> Do x when Plasma starts.<p>Wtf do I care what Plasma is. Oh, you mean my computer? Yeah makes sense.<p>Raycast: You can search files, have a calculator, a translator…<p>KRunner: You can run terminal commands and convert characters to hexadecimal.<p>It is so obvious that these products are designed by developers for developers. From my experience, this friction is <i>everything</i>. You cannot expect people to intuitively figure it out.</p>
]]></description><pubDate>Tue, 10 Feb 2026 12:25:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=46958801</link><dc:creator>SebastianKra</dc:creator><comments>https://news.ycombinator.com/item?id=46958801</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46958801</guid></item><item><title><![CDATA[New comment by SebastianKra in "Clean Coder: The Dark Path (2017)"]]></title><description><![CDATA[
<p>The idea that tests can replace a type system (and vice versa) is a known fallacy.<p>Discussed here, two years before this article was written: <a href="https://www.destroyallsoftware.com/talks/ideology" rel="nofollow">https://www.destroyallsoftware.com/talks/ideology</a></p>
]]></description><pubDate>Mon, 09 Feb 2026 12:04:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=46944334</link><dc:creator>SebastianKra</dc:creator><comments>https://news.ycombinator.com/item?id=46944334</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46944334</guid></item><item><title><![CDATA[New comment by SebastianKra in "Netbird – Open Source Zero Trust Networking"]]></title><description><![CDATA[
<p>We also had a bunch of problems. The DNS resolution didn't work, and support was unable to figure out the reason.<p>A coworker reported domain access breaking when he went to office 1, but fixed itself when he went to office 2.<p>For a while, when you logged in with the wrong account, it was near impossible to replace it. This on is fixed now, but the entire thing still feels very much like paying for beta software.</p>
]]></description><pubDate>Sun, 01 Feb 2026 20:57:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=46849303</link><dc:creator>SebastianKra</dc:creator><comments>https://news.ycombinator.com/item?id=46849303</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46849303</guid></item><item><title><![CDATA[New comment by SebastianKra in "I was wrong about TypeScript part 1"]]></title><description><![CDATA[
<p>The no-unsafe-* type-aware eslint rules are important.<p>Even with strict mode and noImplicitAny, secret any's can sneak into the codebase for the weirdest reasons (for example, poorly typed libraries. looking at you, Knex).<p>tseslint saves you from a ton of such gotchas.</p>
]]></description><pubDate>Fri, 02 Jan 2026 13:53:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=46464733</link><dc:creator>SebastianKra</dc:creator><comments>https://news.ycombinator.com/item?id=46464733</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46464733</guid></item></channel></rss>