<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: adrusi</title><link>https://news.ycombinator.com/user?id=adrusi</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 13 Apr 2026 12:48:40 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=adrusi" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by adrusi in "I am not yet ready to switch to Zig from Rust"]]></title><description><![CDATA[
<p>Go has a heavy runtime, including both a garbage collector and a userland scheduler. Those features both make it inappropriate for some applications where you would use c, and also make calling (and especially being called from) foreign code problematic. You effectively cant implement a library in go and then call it from another language, not without considerable ffi overhead at the very least.</p>
]]></description><pubDate>Fri, 14 Jun 2024 16:22:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=40682176</link><dc:creator>adrusi</dc:creator><comments>https://news.ycombinator.com/item?id=40682176</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40682176</guid></item><item><title><![CDATA[New comment by adrusi in "MKBHD, Fisker, and "the worst car ever reviewed""]]></title><description><![CDATA[
<p>42 videos on his car review channel plus 13 videos on his main channel (a few might be crossposted) plus a couple tesla reviews from several years earlier than the others.<p>So 50+.</p>
]]></description><pubDate>Sat, 09 Mar 2024 08:27:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=39650320</link><dc:creator>adrusi</dc:creator><comments>https://news.ycombinator.com/item?id=39650320</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39650320</guid></item><item><title><![CDATA[New comment by adrusi in "WebAssembly Playground"]]></title><description><![CDATA[
<p>it's maybe negligible compared to the code-size bloat of web applications, but delivering large libraries over the network with only limited caching is less than ideal</p>
]]></description><pubDate>Mon, 05 Feb 2024 06:52:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=39258108</link><dc:creator>adrusi</dc:creator><comments>https://news.ycombinator.com/item?id=39258108</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39258108</guid></item><item><title><![CDATA[New comment by adrusi in "Augmenting the Markdown Language for Great Python Graphical Interfaces"]]></title><description><![CDATA[
<p>At least in English, typographic conventions have historically equated underlining with italics, and the reason the underscore key is present on your keyboard is because it was used on typewriters to format text that would have been italicized in printed text.<p>Surrounding text with underscores to indicate italicization is intuitive to anyone who is familiar with that convention.<p>Personally, I find surrounding text with forward slashes <i>exactly</i> wrong for italicization, because I mentally apply a skew-transform to the text to make the slashes into vertical lines, which leaves the text itself slanted in the wrong direction. Backslashes would make more sense, and also avoid looking like regular expressions. But literally no one uses that convention and we do <i>not</i> need a new one.</p>
]]></description><pubDate>Sun, 21 Jan 2024 22:44:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=39083860</link><dc:creator>adrusi</dc:creator><comments>https://news.ycombinator.com/item?id=39083860</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39083860</guid></item><item><title><![CDATA[New comment by adrusi in "C23: A Slightly Better C"]]></title><description><![CDATA[
<p><i>while at the same time being memory safe.</i><p>memory safety doesn't mean just one thing, but probably it requires either a lot of rust-like features, a tracing garbage collector, or automatic reference counting.<p><i>the language being small enough that all basics can be grasped in a day</i><p>that disqualifies taking the rust-like path.<p><i>able to use all c libraries through ffi. without loss of performance or extra fu.</i><p>that disqualifies most (all?) advanced tracing gc strategies<p><i>it must not have massive pauses or stop the world GC.</i><p>that disqualifies simpler tracing gc strategies<p>depending on what precisely you're looking for, it's possible it might be a pipe dream. but it's also possible you'll find what you want in one of D, Nim or Swift. Swift is probably the closest to what you want on technical merit, but obviously extremely tied to Apple. D and Nim strap you with their particular flavor of tracing gc, which may or may not be suited to your needs.</p>
]]></description><pubDate>Sun, 21 Jan 2024 22:21:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=39083687</link><dc:creator>adrusi</dc:creator><comments>https://news.ycombinator.com/item?id=39083687</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39083687</guid></item><item><title><![CDATA[New comment by adrusi in "Flying kites deliver container-sized power generation"]]></title><description><![CDATA[
<p>The cost of the land to the grower is lower on account of the presence of the turbines.</p>
]]></description><pubDate>Fri, 19 Jan 2024 00:49:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=39050207</link><dc:creator>adrusi</dc:creator><comments>https://news.ycombinator.com/item?id=39050207</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39050207</guid></item><item><title><![CDATA[New comment by adrusi in "NewPipe – Lightweight YouTube experience for Android"]]></title><description><![CDATA[
<p><i>I do not understand why one should use this</i><p>I don't care to sit through sponsor reads, nothing more to it than that. When I'm viewing on a client that doesn't support sponsorblock, I'll manually seek to the end of the segment. Supporting the creator is great; I pay for YouTube Premium, though thanks to uBlock Origin I wouldn't see the add if even if I stopped paying. To a couple creators, I send a regular donation. If I could spend another $10/mo to make up for any revenue my sponsorblock usage loses other creators, I'd do that, but I'm less enthusiastic about regularly listening to sales pitches for the same products over and over again.<p>Also: I'm not sure how common it is for YouTube sponsorship contracts to have payment contingent on the view count for the section of the video with the sponsored segment, and I'm not sure if the way sponsorblock skips such segments is visible to YouTube's analytics. With at least some of the most prolific sponsors of creators I watch (Audible, Brilliant, etc) the payout is based on how many viewers sign up for a trial through the affiliate link. And YouTube has no incentive to make it easy for creators to share their detailed analytics with third-party sponsors, since independent sponsorships cut YouTube out of the deal. YouTube would prefer creators replace their independent sponsor reads with mid-roll ads.</p>
]]></description><pubDate>Sun, 05 Nov 2023 11:30:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=38150190</link><dc:creator>adrusi</dc:creator><comments>https://news.ycombinator.com/item?id=38150190</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38150190</guid></item><item><title><![CDATA[New comment by adrusi in "Bringing garbage collected programming languages efficiently to WebAssembly"]]></title><description><![CDATA[
<p><i>That idea of a universal/generic VM supporting many languages has been tried many times, with limited success</i><p>What wasm is doing is something different than previous efforts. The gc facilities aren't provided for the sake of interop with other languages, or for the sake of sharing development resources across language runtime implementations. Wasm is providing gc facilities so that managed-memory runtime languages can target wasm environments without suffering on account of limitations imposed by the restrictive memory model, and secondarily to reduce bundle sizes.<p>Wasm can potentially support more tunable gc parameters to better suit the guest language's idiosyncrasies than can other general purpose language runtimes. And unlike the runtimes we're comparing it against, language implementers don't have to option of making something bespoke.</p>
]]></description><pubDate>Fri, 03 Nov 2023 15:12:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=38130000</link><dc:creator>adrusi</dc:creator><comments>https://news.ycombinator.com/item?id=38130000</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38130000</guid></item><item><title><![CDATA[New comment by adrusi in "Unix Structured Concurrency"]]></title><description><![CDATA[
<p>The surprising behavior was that the child process received the configured signal not when the <i>process</i> that created it exited, but rather when the specific <i>thread</i> that called fork(2) exited.<p>The parent process was an event loop based python program whose main function was to manage the creation and deletion of these child processes, and the simplest way to spawn child processes without blocking the event loop is to call fork(2) on a thread pool. My thread pool was triaging the number of worker threads based on demand, so occasionally it would decide a worker was no longer needed, and all the child processes that happened to have been created on <i>that</i> thread would get SIGKILL'd — something you rarely want when using a thread pool!<p>I didn't want the child processes to die unless the parent <i>process</i>'s business logic decided they were no longer needed, or if the parent was itself killed (this latter reason being the motivation for setting PDEATHSIG).<p>Once I understood <i>why</i> my processes were dying, the solution was simple: make sure the worker threads never exit.</p>
]]></description><pubDate>Wed, 11 Oct 2023 23:33:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=37851744</link><dc:creator>adrusi</dc:creator><comments>https://news.ycombinator.com/item?id=37851744</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37851744</guid></item><item><title><![CDATA[New comment by adrusi in "Unix Structured Concurrency"]]></title><description><![CDATA[
<p>I had a hell of a time a few months ago debugging why my child processes were dying, before learning that PDEATHSIG=9 (don't ask) kills child processes when the <i>thread</i> that created them in the parent process exits.<p>My debugging was not aided by the fact that disabling the code where I set PDEATHSIG had no effect, since someone else's code was invisibly setting it regardless.</p>
]]></description><pubDate>Wed, 11 Oct 2023 22:07:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=37850916</link><dc:creator>adrusi</dc:creator><comments>https://news.ycombinator.com/item?id=37850916</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37850916</guid></item><item><title><![CDATA[New comment by adrusi in "I can tolerate anything except the outgroup (2014)"]]></title><description><![CDATA[
<p>I'm quite nearby to Scott in social space, and no, I don't think it's just "never come up." It's a very highly selected scene.</p>
]]></description><pubDate>Wed, 06 Sep 2023 17:13:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=37407992</link><dc:creator>adrusi</dc:creator><comments>https://news.ycombinator.com/item?id=37407992</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37407992</guid></item><item><title><![CDATA[New comment by adrusi in "Rethinking Window Management"]]></title><description><![CDATA[
<p>I really appreciate apps that open new windows where it makes sense, but I'm pretty sure the reason it died out is because people started using too many windows for conventional floating window managers to handle. I'm not sure if many people really felt the burden it would have caused, because the growth in number of windows arguably began with having many webpages open at once, and firefox, and then later internet explorer with version 7 (or maybe 6?), introduced tabs as a core part of using a web browser.<p>When I'm using a tiling window manager that supports tab-style layouts (i3, sway, gnome+popOS) applications that open new windows liberally are great because the alternative is to have an ad hoc bespoke window manager inside every application, and it's much better to have a single consistent window management experience at the OS level with one set of keybondings and predictable behavior.<p>But if I had to have a floating window for every webpage I have open, I'd never find anything!</p>
]]></description><pubDate>Wed, 26 Jul 2023 22:31:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=36886102</link><dc:creator>adrusi</dc:creator><comments>https://news.ycombinator.com/item?id=36886102</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36886102</guid></item><item><title><![CDATA[New comment by adrusi in "Coroutines for Go"]]></title><description><![CDATA[
<p>A goroutine really is implemented as a coroutine though. It's just that without this runtime optimization, there hasn't been a way to interact with them without letting a multithreaded scheduler manage their execution.<p>I don't remember where I came across this, but many years ago I saw python-style generators termed "semi-coroutines" which I'm a fan of. Python (frustratingly) doesn't implement them this way, but the beauty of generators is that by limiting the scope where execution can be suspended to the highest-level stack frame, you can statically determine how much memory is needed for the (semi-)coroutine, so it doesn't require a single allocation.<p>Zig takes that a step farther by considering recursive functions second-class, which lets the compiler keep track of the maximum stack depth of any function,  and thereby allow you to allocate a stack frame for any non-recursive function inside of another stack frame, enabling zero-allocation full coroutines, as long as the function isn't recursive.<p>That would... probably be overkill for Go, since marginal allocations are very cheap, and you're already paying the runtime cost for dynamic stack size, so the initial allocation can be tiny.<p>I would <i>love</i> to see full proper coroutine support make it to Go, freeing users of the overhead of the multithreaded scheduler on the occasions where coroutine patterns work best. I remember back in 2012 or so, looking at examples of Go code that showed off goroutine's utility as control flow primitives even when parallelism wasn't desired and being disappointed that those patterns would likely be rare on account of runtime overhead, and sure enough I hardly ever see them.</p>
]]></description><pubDate>Mon, 17 Jul 2023 21:08:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=36764115</link><dc:creator>adrusi</dc:creator><comments>https://news.ycombinator.com/item?id=36764115</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36764115</guid></item><item><title><![CDATA[New comment by adrusi in "Coroutines for Go"]]></title><description><![CDATA[
<p>This is an interface that can be implemented in terms of goroutines and channels, but can also be implemented with a lower-overhead scheduler tweak. The article shows how it could be implemented using goroutines and channels, and then reports the result of that implementation versus an optimized version that avoids synchronization overhead and scheduler latency which is unnecessary with this pattern.<p>Currently, you could use goroutines and channels to implement a nice way to provide general iteration support for user-defined data structures, but because of the overhead, people most often opt for clunkier solutions. This change would give us the best of both worlds.</p>
]]></description><pubDate>Mon, 17 Jul 2023 20:46:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=36763824</link><dc:creator>adrusi</dc:creator><comments>https://news.ycombinator.com/item?id=36763824</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36763824</guid></item><item><title><![CDATA[New comment by adrusi in "Why Kakoune – The quest for a better code editor (2016)"]]></title><description><![CDATA[
<p>Kakoune is scripted over IPC, not bash scripts. The configuration language has some built in functionality for embedding bash scripts, and for smaller plugins or one-off personal customization, yeah you can do everything in a bash script.<p>But absolutely nothing forces you to implementing plugins as shell scripts! kak-lsp, which provides great integration with language servers, is written in rust. Peneira, a fuzzy finder tool, is implemented in python. People have written libraries for various languages that make interfacing with kakoune from your language of choice quite convenient.<p>The decision to make all extension functionality work over IPC instead of an embedded scripting language means everything that the editor is capable of can be controlled by any piece of software over a thoughtfully crafted and well-documented interface. Also the extensions people write for kakoune end up also serving as general purpose utilities that can be integrated into stuff other than kakoune.<p>I've always considered kakoune's approach to extensibility the main selling point of the editor. It has quite phenomenal plugin support for such a niche editor, and it's way easier to make your own plugin than it is with other editors because of how streamline the API is.</p>
]]></description><pubDate>Wed, 21 Jun 2023 22:54:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=36425830</link><dc:creator>adrusi</dc:creator><comments>https://news.ycombinator.com/item?id=36425830</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36425830</guid></item><item><title><![CDATA[New comment by adrusi in "Notes on Vision Pro"]]></title><description><![CDATA[
<p>I see a lot of the pricey functionality they packed into this thing as about making it less onerous to put on. People need to actually decide to put it on to do stuff that they <i>could</i> do with their existing devices.<p>There's one unavoidable obstacle to people wanting to put on the headset: you're going to look really weird and isolated to other people in your environment. The tech to solve this problem doesn't exist, and maybe it's too high a barrier and this product category just isn't going to work. But Apple is betting that if they chip away at all the other reasons to not put on the headset, it'll cross the threshold where it wearing it becomes a regular routine for most people who buy one.<p>If they can bootstrap that into an ecosystem so that there's things you'll want to do with the device that you <i>couldn't</i> do with your other devices, at that point they can start selling a cheaper device that doesn't try to solve the onerousness problem through sheer luxury.</p>
]]></description><pubDate>Wed, 07 Jun 2023 10:18:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=36225005</link><dc:creator>adrusi</dc:creator><comments>https://news.ycombinator.com/item?id=36225005</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36225005</guid></item><item><title><![CDATA[New comment by adrusi in "Apple brings Final Cut Pro and Logic Pro to iPad"]]></title><description><![CDATA[
<p>You can sideload UTM if you sign it with your own developer key, and run VMs with JIT-based acceleration.<p>It’ll sometimes get killed by the OS without much you can do about it though.</p>
]]></description><pubDate>Tue, 09 May 2023 21:11:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=35880445</link><dc:creator>adrusi</dc:creator><comments>https://news.ycombinator.com/item?id=35880445</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35880445</guid></item><item><title><![CDATA[New comment by adrusi in "Starbucks CEO will work a shift at the company’s cafes once a month"]]></title><description><![CDATA[
<p>I don’t know the details around this, but it seems like it would be near impossible to get 100% ethical sourcing, because no matter how good your process of vetting suppliers is, at Starbucks scale, you’re going to get fraud. A shady supplier just needs to bribe or blackmail one of your procurement staff to look the other way.</p>
]]></description><pubDate>Thu, 23 Mar 2023 15:54:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=35276699</link><dc:creator>adrusi</dc:creator><comments>https://news.ycombinator.com/item?id=35276699</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35276699</guid></item><item><title><![CDATA[New comment by adrusi in "The Janet Language"]]></title><description><![CDATA[
<p>It's somewhat youthful internet slang. You'd hear it at the American public highschool I was at 12 years ago.</p>
]]></description><pubDate>Sat, 18 Feb 2023 16:47:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=34848312</link><dc:creator>adrusi</dc:creator><comments>https://news.ycombinator.com/item?id=34848312</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34848312</guid></item><item><title><![CDATA[New comment by adrusi in "Roland’s 50th Anniversary Concept Piano"]]></title><description><![CDATA[
<p>For anyone price-sensitive, I highly recommend getting the cheapest 88-key hammer-action keyboard you can find and hooking it up to Pianoteq Stage rather than buying a dedicated digital piano.<p>Exception if you're going to travel with it. Built-in sounds save you on setup time.</p>
]]></description><pubDate>Fri, 06 Jan 2023 16:15:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=34276495</link><dc:creator>adrusi</dc:creator><comments>https://news.ycombinator.com/item?id=34276495</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34276495</guid></item></channel></rss>