<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: ossopite</title><link>https://news.ycombinator.com/user?id=ossopite</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 18 Apr 2026 04:05:22 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=ossopite" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by ossopite in "Reports of code's death are greatly exaggerated"]]></title><description><![CDATA[
<p>Did you write it or did an LLM?<p>I find some irony in seeing the telltale tropes of conventional LLM writing there</p>
]]></description><pubDate>Mon, 23 Mar 2026 08:24:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=47486698</link><dc:creator>ossopite</dc:creator><comments>https://news.ycombinator.com/item?id=47486698</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47486698</guid></item><item><title><![CDATA[New comment by ossopite in "Cancellations in async Rust"]]></title><description><![CDATA[
<p>I think the send/recv with a timeout example is very interesting, because in a language where futures start running immediately without being polled, I think the situation is likely to be the opposite way around. send with a timeout is probably safe (you may still send if the timeout happened, which you might be sad about, but the message isn't lost), while recv with a timeout is probably unsafe, because you might read the message out of the channel but then discard it because you selected the timeout completion instead. And the fix is similar, you want to select either the timeout or 'something is available' from the channel, and if you select the latter you can peek to get the available data.</p>
]]></description><pubDate>Fri, 03 Oct 2025 20:04:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=45467188</link><dc:creator>ossopite</dc:creator><comments>https://news.ycombinator.com/item?id=45467188</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45467188</guid></item><item><title><![CDATA[New comment by ossopite in "How many HTTP requests/second can a single machine handle? (2024)"]]></title><description><![CDATA[
<p>Single core performance isn't just clock frequency. It must be multiplied by average IPC, but really it's more difficult since you have to account for factors like new SIMD instructions. Effective IPC improvements are where a significant fraction of single core speedup came from in this period</p>
]]></description><pubDate>Sun, 31 Aug 2025 20:26:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=45086772</link><dc:creator>ossopite</dc:creator><comments>https://news.ycombinator.com/item?id=45086772</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45086772</guid></item><item><title><![CDATA[New comment by ossopite in "Working through 'Writing A C Compiler'"]]></title><description><![CDATA[
<p>Ok, that's true, but my claim is that recursive descent parsing does not have to use the visitor pattern and indeed using recursive descent parsing is not the same as using the visitor pattern (you can do the former without the latter and I claim that you usually do)</p>
]]></description><pubDate>Sat, 12 Jul 2025 19:41:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=44544546</link><dc:creator>ossopite</dc:creator><comments>https://news.ycombinator.com/item?id=44544546</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44544546</guid></item><item><title><![CDATA[New comment by ossopite in "Working through 'Writing A C Compiler'"]]></title><description><![CDATA[
<p>I think I'm missing something here. if you have a grammar rule R with children A and B, and a function in your recursive descent parser that corresponds to R, why can R not call the parser functions for A and B, which return AST nodes themselves, and then construct another AST node using the result of those? Where was the visitor pattern required here?</p>
]]></description><pubDate>Sat, 12 Jul 2025 19:38:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=44544522</link><dc:creator>ossopite</dc:creator><comments>https://news.ycombinator.com/item?id=44544522</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44544522</guid></item><item><title><![CDATA[New comment by ossopite in "Working through 'Writing A C Compiler'"]]></title><description><![CDATA[
<p>I see that you've found an example of how recursive descent parsing actually can be implemented with the visitor pattern, which I've never come across before, and I didn't read it carefully enough to understand the motivation - but that doesn't mean they are the same thing - the recursive descent parsers I've seen before just inspect which tokens are seen and directly construct AST nodes<p>as an adendum, the reason I don't understand the motivation is that the visitor pattern in the way I described it is useful when you have many different operations to perform on your AST. If you have only one operation on tokens - parsing into an AST - I'm not sure why you need dynamic dispatch on a second thing, the first thing being the token type. Maybe the construction is that different operations correspond to different 'grammar rules'?</p>
]]></description><pubDate>Sat, 12 Jul 2025 19:29:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=44544453</link><dc:creator>ossopite</dc:creator><comments>https://news.ycombinator.com/item?id=44544453</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44544453</guid></item><item><title><![CDATA[New comment by ossopite in "Working through 'Writing A C Compiler'"]]></title><description><![CDATA[
<p>What?<p>The visitor pattern is a technique for dynamic dispatch on two values (typically one represents 'which variant of data are we working with' and the other 'which operation are we performing'). You would not generally use that in recursive descent parsing, because when parsing you don't have an AST yet, so 'which variant of data' doesn't make sense, you are just consuming tokens from a stream.</p>
]]></description><pubDate>Sat, 12 Jul 2025 17:49:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=44543697</link><dc:creator>ossopite</dc:creator><comments>https://news.ycombinator.com/item?id=44543697</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44543697</guid></item><item><title><![CDATA[New comment by ossopite in "What 'Project Hail Mary' teaches us about the PlanetScale vs. Neon debate"]]></title><description><![CDATA[
<p>I would add Vernor Vinge's A Fire Upon the Deep and A Deepness in the Sky to these suggestions</p>
]]></description><pubDate>Sat, 05 Jul 2025 23:00:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=44476242</link><dc:creator>ossopite</dc:creator><comments>https://news.ycombinator.com/item?id=44476242</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44476242</guid></item><item><title><![CDATA[New comment by ossopite in "NASA study reveals Venus crust surprise"]]></title><description><![CDATA[
<p>From the headline I can't decide if it was a study in astronomy or gastronomy</p>
]]></description><pubDate>Mon, 12 May 2025 21:21:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=43967579</link><dc:creator>ossopite</dc:creator><comments>https://news.ycombinator.com/item?id=43967579</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43967579</guid></item><item><title><![CDATA[New comment by ossopite in "Pipelining might be my favorite programming language feature"]]></title><description><![CDATA[
<p>It seems like it originated in the Isabelle proof assistant ML dialect in the mid 90s <a href="https://web.archive.org/web/20190217164203/https://blogs.msdn.microsoft.com/dsyme/2011/05/17/archeological-semiotics-the-birth-of-the-pipeline-symbol-1994/" rel="nofollow">https://web.archive.org/web/20190217164203/https://blogs.msd...</a></p>
]]></description><pubDate>Tue, 22 Apr 2025 06:47:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=43759639</link><dc:creator>ossopite</dc:creator><comments>https://news.ycombinator.com/item?id=43759639</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43759639</guid></item><item><title><![CDATA[New comment by ossopite in "PEP 750 – Template Strings"]]></title><description><![CDATA[
<p>I'm not sure if t-strings help here? unless I misread the PEP, it seems like they still eagerly evaluate the interpolations.<p>There is an observation that you can use `lambda` inside to delay evaluation of an interpolation, but I think this lambda captures any variables it uses from the context.</p>
]]></description><pubDate>Thu, 10 Apr 2025 21:01:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=43647982</link><dc:creator>ossopite</dc:creator><comments>https://news.ycombinator.com/item?id=43647982</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43647982</guid></item><item><title><![CDATA[New comment by ossopite in "Functors: Identity, Composition, and fmap"]]></title><description><![CDATA[
<p>I hadn't heard of this property before, thanks for introducing me to it!<p>V gubhtug vg fbhaqrq fhecevfvat sbe n glcr r gb orunir guvf jnl jura V jebgr zl pbzzrag, ohg abj V ernyvfr gung vg zvtug or pbzzba va nal vzcyrzragngvba bs rdhnyf gung uvqrf vagreany fgngr, n fvzcyr rknzcyr orvat n frg/znc qngnglcr jubfr rdhnyvgl vzcyrzragngvba vtaberf vafregvba beqre ohg jubfr vgrengvba beqre qrcraqf ba vg.</p>
]]></description><pubDate>Sat, 05 Apr 2025 20:55:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=43596754</link><dc:creator>ossopite</dc:creator><comments>https://news.ycombinator.com/item?id=43596754</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43596754</guid></item><item><title><![CDATA[New comment by ossopite in "Functors: Identity, Composition, and fmap"]]></title><description><![CDATA[
<p>Gung'f snve. Gura V guvax, abg pbafvqrevat nal cnegvphyne cebtenzzvat ynathntr, gur nafjre qrcraqf ba ubj Frg qrgrezvarf rdhnyvgl bs ryrzragf. Vs vg hfrf fbzr vzcyrzragngvba bs rdhnyvgl/pbzcnevfba sbe glcr r gung pna fnl gung fbzr inyhrf bs glcr r ner rdhny gung ner arireguryrff qvfgvathvfunoyr, gura Frg vfa'g n shapgbe</p>
]]></description><pubDate>Sat, 05 Apr 2025 20:40:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=43596652</link><dc:creator>ossopite</dc:creator><comments>https://news.ycombinator.com/item?id=43596652</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43596652</guid></item><item><title><![CDATA[New comment by ossopite in "Functors: Identity, Composition, and fmap"]]></title><description><![CDATA[
<p>ROT13<p>Fb V guvax gur nafjre eribyirf nebhaq gur pbzcbfvgvba ynj. Va bgure jbeqf, vf sznc (sznc frg s) t rdhny gb sznc frg (t . s) sbe nal s naq t?<p>V guvax guvf ubyqf bayl vs s naq t ner cher (be znlor whfg vs t vf cher?). fb znlor vs lbh vtaber hafnsr bcrengvbaf va unfxryy vg'f gehr? vg'f pregnvayl abg gehr va s#/bpnzy. vzntvar gung s vf sha _ -> 0 naq t vf sha _ -> arkg_vag_sebz_zhgnoyr_pbhagre (). gura sznc frg (t . s) qbrfa'g punatr gur fvmr bs gur frg juvyr sznc (sznc frg s) t cebqhprf n fvatyrgba frg.</p>
]]></description><pubDate>Sat, 05 Apr 2025 20:12:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=43596463</link><dc:creator>ossopite</dc:creator><comments>https://news.ycombinator.com/item?id=43596463</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43596463</guid></item><item><title><![CDATA[New comment by ossopite in "Four Lectures on Standard ML (1989) [pdf]"]]></title><description><![CDATA[
<p>I suppose by enumerations you mean sum types. I would argue that these are pretty fundamental? you have product types (structs/records/tuples) - a value is made up of x and y - and sum types - a value can be either X or Y. I think the combination of these is what you need to precisely express any concrete data type.</p>
]]></description><pubDate>Sun, 30 Mar 2025 19:02:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=43526612</link><dc:creator>ossopite</dc:creator><comments>https://news.ycombinator.com/item?id=43526612</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43526612</guid></item><item><title><![CDATA[New comment by ossopite in "Koto Programming Language"]]></title><description><![CDATA[
<p>I'm curious what you have in mind when it comes to ways in which OCaml is insistent on being functional while F# isn't. After all, OCaml has mutable data structures, mutable record fields, for loops and so on. Is it just that more libraries assume immutability and use functional abstractions?</p>
]]></description><pubDate>Sat, 29 Mar 2025 14:21:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=43515785</link><dc:creator>ossopite</dc:creator><comments>https://news.ycombinator.com/item?id=43515785</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43515785</guid></item><item><title><![CDATA[New comment by ossopite in "Koto Programming Language"]]></title><description><![CDATA[
<p>I think you really are describing ocaml, which is a great language, although its ecosystem isn't the best. It probably inspired most of the features you mentioned in rust. It also supports OOP (hence the O) but it's easy to avoid.<p>That said, I wouldn't compare it to scripting languages. The lack of implicit conversions / traits / ad-hoc polymorphism means it's not that convenient for scripting.</p>
]]></description><pubDate>Sat, 29 Mar 2025 13:42:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=43515470</link><dc:creator>ossopite</dc:creator><comments>https://news.ycombinator.com/item?id=43515470</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43515470</guid></item><item><title><![CDATA[New comment by ossopite in "100x defect tolerance: How we solved the yield problem"]]></title><description><![CDATA[
<p>Without offering any opinion on its merits, if you think justifying this controversial claim is off topic, then so is the claim and you shouldn't have written it.</p>
]]></description><pubDate>Thu, 16 Jan 2025 10:01:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=42723433</link><dc:creator>ossopite</dc:creator><comments>https://news.ycombinator.com/item?id=42723433</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42723433</guid></item><item><title><![CDATA[New comment by ossopite in "Shaping ligatures in monospace fonts"]]></title><description><![CDATA[
<p>> The only real advantage that a proportional font has is that you can squeeze more text into a particular space and as a result you can read faster<p>I would disagree with that - I find it easier, more comfortable rather than just faster to read any text in a proportional font because the spacing of characters is, well, proportional to what the form of each letter requires. I think it makes it easier to recognise words. It's true that code has a lot of unusual combinations of characters but still it is mostly ordinary words. A proportional font that makes those unusual combinations of punctutation characters less clear is certainly bad, but there are proportional fonts that don't.</p>
]]></description><pubDate>Fri, 10 Jan 2025 21:11:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=42660284</link><dc:creator>ossopite</dc:creator><comments>https://news.ycombinator.com/item?id=42660284</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42660284</guid></item><item><title><![CDATA[New comment by ossopite in "Can life emerge around a white dwarf?"]]></title><description><![CDATA[
<p>I think you wrote compare forward as a long version of cf., but I believe cf. is actually short for the latin <i>confer</i></p>
]]></description><pubDate>Sun, 08 Dec 2024 10:57:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=42356432</link><dc:creator>ossopite</dc:creator><comments>https://news.ycombinator.com/item?id=42356432</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42356432</guid></item></channel></rss>