<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: tonyg</title><link>https://news.ycombinator.com/user?id=tonyg</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 29 Jun 2026 12:27:41 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=tonyg" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[I-Regexp: An Interoperable Regular Expression Format]]></title><description><![CDATA[
<p>Article URL: <a href="https://datatracker.ietf.org/doc/html/rfc9485">https://datatracker.ietf.org/doc/html/rfc9485</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48705393">https://news.ycombinator.com/item?id=48705393</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 28 Jun 2026 08:12:45 +0000</pubDate><link>https://datatracker.ietf.org/doc/html/rfc9485</link><dc:creator>tonyg</dc:creator><comments>https://news.ycombinator.com/item?id=48705393</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48705393</guid></item><item><title><![CDATA[New comment by tonyg in "Regular expressions that work “everywhere”"]]></title><description><![CDATA[
<p>That's one of the reasons RFC 9485, "I-Regexp: An Interoperable Regular Expression Format", is important.<p><a href="https://datatracker.ietf.org/doc/html/rfc9485" rel="nofollow">https://datatracker.ietf.org/doc/html/rfc9485</a></p>
]]></description><pubDate>Sun, 28 Jun 2026 08:12:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=48705391</link><dc:creator>tonyg</dc:creator><comments>https://news.ycombinator.com/item?id=48705391</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48705391</guid></item><item><title><![CDATA[New comment by tonyg in "How to choose between Hindley-Milner and bidirectional typing"]]></title><description><![CDATA[
<p>*Mitchell Wand</p>
]]></description><pubDate>Thu, 19 Feb 2026 08:27:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=47071323</link><dc:creator>tonyg</dc:creator><comments>https://news.ycombinator.com/item?id=47071323</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47071323</guid></item><item><title><![CDATA[New comment by tonyg in "“Stop Designing Languages. Write Libraries Instead” (2016)"]]></title><description><![CDATA[
<p>I will not. I refuse</p>
]]></description><pubDate>Wed, 07 Jan 2026 13:04:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=46525948</link><dc:creator>tonyg</dc:creator><comments>https://news.ycombinator.com/item?id=46525948</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46525948</guid></item><item><title><![CDATA[I Want You to Understand Chicago]]></title><description><![CDATA[
<p>Article URL: <a href="https://aphyr.com/posts/397-i-want-you-to-understand-chicago">https://aphyr.com/posts/397-i-want-you-to-understand-chicago</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45859402">https://news.ycombinator.com/item?id=45859402</a></p>
<p>Points: 735</p>
<p># Comments: 486</p>
]]></description><pubDate>Sat, 08 Nov 2025 19:47:26 +0000</pubDate><link>https://aphyr.com/posts/397-i-want-you-to-understand-chicago</link><dc:creator>tonyg</dc:creator><comments>https://news.ycombinator.com/item?id=45859402</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45859402</guid></item><item><title><![CDATA[Recreating the Canon Cat document interface]]></title><description><![CDATA[
<p>Article URL: <a href="https://lab.alexanderobenauer.com/updates/the-jasper-report">https://lab.alexanderobenauer.com/updates/the-jasper-report</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45593390">https://news.ycombinator.com/item?id=45593390</a></p>
<p>Points: 118</p>
<p># Comments: 16</p>
]]></description><pubDate>Wed, 15 Oct 2025 14:42:14 +0000</pubDate><link>https://lab.alexanderobenauer.com/updates/the-jasper-report</link><dc:creator>tonyg</dc:creator><comments>https://news.ycombinator.com/item?id=45593390</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45593390</guid></item><item><title><![CDATA[New comment by tonyg in "Cap'n Web: a new RPC system for browsers and web servers"]]></title><description><![CDATA[
<p>Is .map specialcased or do user functions accepting callbacks work the same way? Because you could do the Scott-Mogensen thing of #ifTrue:ifFalse: if so, dualizing the control-flow decision making, offering a menu of choices/continuations.</p>
]]></description><pubDate>Mon, 22 Sep 2025 18:20:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=45337414</link><dc:creator>tonyg</dc:creator><comments>https://news.ycombinator.com/item?id=45337414</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45337414</guid></item><item><title><![CDATA[New comment by tonyg in "Synthesizing Object-Oriented and Functional Design to Promote Re-Use"]]></title><description><![CDATA[
<p>(1998). Java existed, but neither Scala nor Java-with-generics did.<p>From the conclusion:<p>"We have presented a programming protocol, Extensible Visitor, that can be used to construct systems with extensible recursive data domains and toolkits. It is a novel combination of the functional and object-oriented programming styles that draws on the strengths of each. The object-oriented style is essential to achieve extensibility along the data dimension, yet tools are organized in a functional fashion, enabling extensibility in the functional dimension. Systems based on the Extensible Visitor can be extended without modification to existing code or recompilation (which is an increasingly important concern)."</p>
]]></description><pubDate>Tue, 09 Sep 2025 14:47:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=45182674</link><dc:creator>tonyg</dc:creator><comments>https://news.ycombinator.com/item?id=45182674</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45182674</guid></item><item><title><![CDATA[The $200M Reason AMQP Became a Standard – A CTO's Inside Story [video]]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.youtube.com/watch?v=NcpTbK8x_eg">https://www.youtube.com/watch?v=NcpTbK8x_eg</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45180054">https://news.ycombinator.com/item?id=45180054</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 09 Sep 2025 10:25:36 +0000</pubDate><link>https://www.youtube.com/watch?v=NcpTbK8x_eg</link><dc:creator>tonyg</dc:creator><comments>https://news.ycombinator.com/item?id=45180054</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45180054</guid></item><item><title><![CDATA[New comment by tonyg in "Web apps in a single, portable, self-updating, vanilla HTML file"]]></title><description><![CDATA[
<p>I don't think that's right - IIRC it used to be possible to write out a file, if loaded from a file:// URL, directly from JavaScript. Then that ability got nobbled because security (justifiable) without properly thinking through a good alternative (not justifiable). I mourn the loss of the ability, TiddlyWiki was in a class of its own and there should have been many more systems inspired by its design. Alas.<p>ETA: Wikipedia has reminded me the feature was called UniversalXPConnect, and it was a Firefox thing and wasn't cross-browser. It still sucks that it was removed without sensible replacement.</p>
]]></description><pubDate>Mon, 18 Aug 2025 21:22:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=44945485</link><dc:creator>tonyg</dc:creator><comments>https://news.ycombinator.com/item?id=44945485</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44945485</guid></item><item><title><![CDATA[New comment by tonyg in "Please Commit More Blatant Academic Fraud (2021)"]]></title><description><![CDATA[
<p>> Undermining the credibility of computer science research is the best possible outcome for the field, since the institution in its current form does not deserve the credibility that it has.<p>Horseshit. This might be true for AI research (and even there that's an awfully broad brush you're using, mate), but it's certainly not true for other areas of computer science.</p>
]]></description><pubDate>Fri, 21 Feb 2025 08:57:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=43125513</link><dc:creator>tonyg</dc:creator><comments>https://news.ycombinator.com/item?id=43125513</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43125513</guid></item><item><title><![CDATA[New comment by tonyg in "Intensional Joy (a concatenative account of internal structure)"]]></title><description><![CDATA[
<p>> Static analysis can tell what forms are invoking an fexpr and which are function calls. It's not got different from knowing which are macros. That problem can be solved.<p>I don't think this is the case. Consider Kernel's<p><pre><code>  ($lambda (f) (f (+ 3 4)))
</code></pre>
Is `f` a fexpr or a closure? We cannot know until runtime.</p>
]]></description><pubDate>Sat, 15 Feb 2025 09:20:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=43057168</link><dc:creator>tonyg</dc:creator><comments>https://news.ycombinator.com/item?id=43057168</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43057168</guid></item><item><title><![CDATA[New comment by tonyg in "Preserves: An Expressive Data Language"]]></title><description><![CDATA[
<p>There are no string keys in the Person example above. You could add some, though, or use numbers instead with the same host-language API:<p><pre><code>  Person = <person @name String @address Address>
</code></pre>
as above, or<p><pre><code>  Person = <person {
    @name "name": String
    @address "address": Address
  }>
</code></pre>
or<p><pre><code>  Person = {
    @name 1: String
    @address 2: Address
  }
</code></pre>
etc. all produce the same host-language record, e.g. in TypeScript<p><pre><code>  export type Person = {
    name: String,
    address: Address,
  };</code></pre></p>
]]></description><pubDate>Fri, 31 Jan 2025 21:02:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=42891949</link><dc:creator>tonyg</dc:creator><comments>https://news.ycombinator.com/item?id=42891949</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42891949</guid></item><item><title><![CDATA[New comment by tonyg in "Preserves: An Expressive Data Language"]]></title><description><![CDATA[
<p>Thank you! I wonder if something a bit contrived such as small-caps could help. I'll experiment.</p>
]]></description><pubDate>Thu, 30 Jan 2025 12:59:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=42877314</link><dc:creator>tonyg</dc:creator><comments>https://news.ycombinator.com/item?id=42877314</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42877314</guid></item><item><title><![CDATA[New comment by tonyg in "Preserves: An Expressive Data Language"]]></title><description><![CDATA[
<p>Date and datetime are left to convention: <a href="https://preserves.dev/conventions.html#dates-and-times" rel="nofollow">https://preserves.dev/conventions.html#dates-and-times</a><p>Decimals I'm on the fence about. Some discussion here: <a href="https://gitlab.com/preserves/preserves/-/issues/10" rel="nofollow">https://gitlab.com/preserves/preserves/-/issues/10</a></p>
]]></description><pubDate>Thu, 30 Jan 2025 08:40:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=42876067</link><dc:creator>tonyg</dc:creator><comments>https://news.ycombinator.com/item?id=42876067</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42876067</guid></item><item><title><![CDATA[New comment by tonyg in "Preserves: An Expressive Data Language"]]></title><description><![CDATA[
<p>Yeah I struggle with "Preserve" vs "Preserves" sometimes. Was there something in particular that struck you as unfortunate, though?</p>
]]></description><pubDate>Thu, 30 Jan 2025 08:39:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=42876058</link><dc:creator>tonyg</dc:creator><comments>https://news.ycombinator.com/item?id=42876058</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42876058</guid></item><item><title><![CDATA[New comment by tonyg in "Preserves: An Expressive Data Language"]]></title><description><![CDATA[
<p>XML would make a fine choice. It lacks atomic data types other than text, and compound data types other than sequences, unless you count element attributes, which are in a kind of awkward position because of the historical development of the language. Preserves has a richer suite of primitive data types and decomposes XML's elements into separate notions of map, sequence, and tagged value.</p>
]]></description><pubDate>Thu, 30 Jan 2025 08:38:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=42876057</link><dc:creator>tonyg</dc:creator><comments>https://news.ycombinator.com/item?id=42876057</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42876057</guid></item><item><title><![CDATA[New comment by tonyg in "Preserves: An Expressive Data Language"]]></title><description><![CDATA[
<p>Thanks. Yes there are: see sections 15, 16 and 17 of <a href="https://synit.org/book/" rel="nofollow">https://synit.org/book/</a>, where Preserves, Preserves Schemas, and the Syndicated Actor Model make a reactive replacement system layer for linux (essentially an alternative to systemd)</p>
]]></description><pubDate>Thu, 30 Jan 2025 08:07:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=42875911</link><dc:creator>tonyg</dc:creator><comments>https://news.ycombinator.com/item?id=42875911</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42875911</guid></item><item><title><![CDATA[New comment by tonyg in "Preserves: An Expressive Data Language"]]></title><description><![CDATA[
<p>The version number is the schema language version, not the version of the collection of types described in the file.<p>The schema language is extensible/evolvable in that pattern matching ignores extra entries in a sequence and extra key/value pairs in a dictionary. So you could have a "version 1" of a schema with<p><pre><code>  Person = <person @name String> .
</code></pre>
and a "version 2" with<p><pre><code>  Person = @v2 <person @name String @address Address>
         / @v1 <person @name String> .
</code></pre>
Then, Person.v2 from "version 2" would be parseable by Person from "version 1", and Person from "version 1" would parse using "version 2" as a Person.v1.<p>The schema language is in production but the design is still a work in progress and I expect more changes before a 1.0 release of the schema language.<p>(The schema language is completely separate from the preserves data model, by the way -- one could imagine other schema languages being used instead/as well)</p>
]]></description><pubDate>Thu, 30 Jan 2025 08:05:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=42875898</link><dc:creator>tonyg</dc:creator><comments>https://news.ycombinator.com/item?id=42875898</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42875898</guid></item><item><title><![CDATA[New comment by tonyg in "Preserves: An Expressive Data Language"]]></title><description><![CDATA[
<p>Yeah EDN is quite similar. Preserves has no nil, allows any value as a tag, gets into the weeds more on when strings are equal or not, doesn't distinguish lists and vectors, and doesn't require each kind of tagged element to define an equivalence. And it has annotations (vs EDN's comments) and embedded values.</p>
]]></description><pubDate>Wed, 29 Jan 2025 15:39:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=42866228</link><dc:creator>tonyg</dc:creator><comments>https://news.ycombinator.com/item?id=42866228</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42866228</guid></item></channel></rss>