<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: tybug</title><link>https://news.ycombinator.com/user?id=tybug</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 12 Apr 2026 09:05:10 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=tybug" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by tybug in "Hegel, a universal property-based testing protocol and family of PBT libraries"]]></title><description><![CDATA[
<p>We plan to rewrite hypothesis in rust and expose an FFI through that! This is a medium term plan (months, not weeks or years), but we're acutely aware that relying on a python component is not a long-term solution.</p>
]]></description><pubDate>Fri, 10 Apr 2026 14:26:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=47718680</link><dc:creator>tybug</dc:creator><comments>https://news.ycombinator.com/item?id=47718680</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47718680</guid></item><item><title><![CDATA[New comment by tybug in "Hegel, a universal property-based testing protocol and family of PBT libraries"]]></title><description><![CDATA[
<p>Yes! I just wrote up documentation for the protocol earlier this week: <a href="https://hegel.dev/reference/protocol" rel="nofollow">https://hegel.dev/reference/protocol</a>.<p>In reality, we hope to provide more guidance than this to people who want to write their own language frontend. This protocol reference doesn't talk about the realities of [hegel-core](<a href="https://github.com/hegeldev/hegel-core" rel="nofollow">https://github.com/hegeldev/hegel-core</a>) and how to invoke it, for example.<p>We intend to write a "How to write your own Hegel library" how-to guide. You can subscribe to this issue to get notified when we write that: <a href="https://github.com/hegeldev/website/issues/3" rel="nofollow">https://github.com/hegeldev/website/issues/3</a>.<p>If you're eager, pointing your favorite LLM at <a href="https://hegel.dev/reference/protocol" rel="nofollow">https://hegel.dev/reference/protocol</a> + <a href="https://github.com/hegeldev/hegel-rust" rel="nofollow">https://github.com/hegeldev/hegel-rust</a> and asking it to write you one for your language of choice should be enough to get you started!</p>
]]></description><pubDate>Thu, 09 Apr 2026 20:03:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=47709026</link><dc:creator>tybug</dc:creator><comments>https://news.ycombinator.com/item?id=47709026</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47709026</guid></item><item><title><![CDATA[New comment by tybug in "Hegel, a universal property-based testing protocol and family of PBT libraries"]]></title><description><![CDATA[
<p>I didn't expect to see Hegel when opening up HN today! Feel free to ask any questions about it. We released hegel-go earlier this week, and plan to release hegel-cpp sometime next week, so look forward to that :)</p>
]]></description><pubDate>Thu, 09 Apr 2026 19:55:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=47708906</link><dc:creator>tybug</dc:creator><comments>https://news.ycombinator.com/item?id=47708906</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47708906</guid></item><item><title><![CDATA[New comment by tybug in "Hypothesis, Antithesis, synthesis"]]></title><description><![CDATA[
<p>To put it on the record: my position is current models can't get us there, and neither can the next iteration of models, but in two model iterations this will be worth doing. There's a <i>lot</i> of fiddly details in Hypothesis that are critical to get right. You can get a plausible 80% port with agents today but find they've structured it in a way to make it impossible to get to 100%.</p>
]]></description><pubDate>Tue, 24 Mar 2026 23:16:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=47510950</link><dc:creator>tybug</dc:creator><comments>https://news.ycombinator.com/item?id=47510950</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47510950</guid></item><item><title><![CDATA[New comment by tybug in "Hypothesis, Antithesis, synthesis"]]></title><description><![CDATA[
<p>`from_type` just supports a bunch more things than rust ever can due to the flexibility of python's type system. `from_type(object)` is amazing, for example, and not something we can write in rust.</p>
]]></description><pubDate>Tue, 24 Mar 2026 23:05:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=47510829</link><dc:creator>tybug</dc:creator><comments>https://news.ycombinator.com/item?id=47510829</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47510829</guid></item><item><title><![CDATA[New comment by tybug in "Hypothesis, Antithesis, synthesis"]]></title><description><![CDATA[
<p>Yep, `#[derive(DefaultGenerator)]` and `generators::default<T>()` are the right tools here.<p>This is one of the areas we've dogfooded the least, so we'd definitely be happy to get feedback on any sharp corners here!<p>I think `from_type` is one of Hypothesis's most powerful and ergonomic strategies, and that while we probably can't get quite to that level in rust, we can still get something that's pretty great.</p>
]]></description><pubDate>Tue, 24 Mar 2026 18:48:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=47507365</link><dc:creator>tybug</dc:creator><comments>https://news.ycombinator.com/item?id=47507365</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47507365</guid></item><item><title><![CDATA[New comment by tybug in "Hypothesis, Antithesis, Synthesis"]]></title><description><![CDATA[
<p>I actually think there's another angle here where PBT helps, which wasn't explored in the blog post.<p>That angle is <i>legibility</i>. How do you know your AI-written slop software is doing the right thing? One would normally read all the code. Bad news: that's not much less labor intensive as not using AI at all.<p>But, if one has comprehensive property-based tests, they can instead read only the property-based tests to convince themselves the software is doing the right thing.<p>By analogy: one doesn't need to see the machine-checked proof to know the claim is correct. One only needs to check the theorem statement is saying the right thing.</p>
]]></description><pubDate>Tue, 24 Mar 2026 16:16:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=47504963</link><dc:creator>tybug</dc:creator><comments>https://news.ycombinator.com/item?id=47504963</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47504963</guid></item><item><title><![CDATA[New comment by tybug in "Hypothesis, Antithesis, synthesis"]]></title><description><![CDATA[
<p>As possibly the one community on earth where it's actually better to post the code than the blog post: TL;DR this is a universal property-based testing protocol (<a href="https://github.com/hegeldev/hegel-core" rel="nofollow">https://github.com/hegeldev/hegel-core</a>) and family of libraries (<a href="https://github.com/hegeldev/hegel-rust" rel="nofollow">https://github.com/hegeldev/hegel-rust</a>, more to come later).<p>I've talked with lots of people in the PBT world who have always seen something like this as the end goal of the PBT ecosystem. It seemed like a thing that would happen eventually, someone just had to do it. I'm super excited to actually be doing it and bringing great PBT to every and any language.<p>It doesn't hurt that this is coming right as great PBT in every language is suddenly a lot more important thanks to AI code!</p>
]]></description><pubDate>Tue, 24 Mar 2026 15:46:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=47504401</link><dc:creator>tybug</dc:creator><comments>https://news.ycombinator.com/item?id=47504401</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47504401</guid></item><item><title><![CDATA[Property-based testing is about to rule the (software) world]]></title><description><![CDATA[
<p>Article URL: <a href="https://tybug.dev/specs/">https://tybug.dev/specs/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46978534">https://news.ycombinator.com/item?id=46978534</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 11 Feb 2026 18:10:00 +0000</pubDate><link>https://tybug.dev/specs/</link><dc:creator>tybug</dc:creator><comments>https://news.ycombinator.com/item?id=46978534</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46978534</guid></item><item><title><![CDATA[New comment by tybug in "Hypothesis: Property-Based Testing for Python"]]></title><description><![CDATA[
<p>Appreciate the thoughts <3. I do think there might be stronger examples we could choose. Possibly json encode/decode..</p>
]]></description><pubDate>Fri, 07 Nov 2025 20:48:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=45850943</link><dc:creator>tybug</dc:creator><comments>https://news.ycombinator.com/item?id=45850943</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45850943</guid></item><item><title><![CDATA[New comment by tybug in "Hypothesis: Property-Based Testing for Python"]]></title><description><![CDATA[
<p>(Hypothesis maintainer here) If you have recommendations for a better example on the front page, I'd love to hear them! (I mean this entirely genuinely and non-sarcastically; I agree sorting can give misleading ideas, but it is also concise and well understood by every reader).</p>
]]></description><pubDate>Thu, 06 Nov 2025 04:09:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=45831330</link><dc:creator>tybug</dc:creator><comments>https://news.ycombinator.com/item?id=45831330</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45831330</guid></item><item><title><![CDATA[New comment by tybug in "Hypothesis: Property-Based Testing for Python"]]></title><description><![CDATA[
<p>(Hypothesis maintainer here)<p>Yup, a standard test suite just doesn't run for long enough for coverage guidance to be worthwhile by default.<p>That said, coverage-guided fuzzing can be a really valuable and effective form of testing (see eg <a href="https://hypofuzz.com/" rel="nofollow">https://hypofuzz.com/</a>).</p>
]]></description><pubDate>Wed, 05 Nov 2025 06:59:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=45820135</link><dc:creator>tybug</dc:creator><comments>https://news.ycombinator.com/item?id=45820135</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45820135</guid></item><item><title><![CDATA[New comment by tybug in "Elm Test Distributions"]]></title><description><![CDATA[
<p>Nice! "testing your test code" is particularly important when dealing with PBT distributions, especially when your generator gets more complicated.<p>Tyche [0] is another cool tool for addressing the same problem, visualizing the PBT distribution but not making assertions about it.<p>[0] <a href="https://github.com/tyche-pbt/tyche-extension">https://github.com/tyche-pbt/tyche-extension</a></p>
]]></description><pubDate>Fri, 02 May 2025 20:24:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=43874233</link><dc:creator>tybug</dc:creator><comments>https://news.ycombinator.com/item?id=43874233</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43874233</guid></item><item><title><![CDATA[New comment by tybug in "Falsify: Hypothesis-Inspired Shrinking for Haskell (2023)"]]></title><description><![CDATA[
<p>The Hypothesis explain phase [1][2] does this!<p><pre><code>  fails_on_empty_third_arg(
      a = "",  # or any other generated value
      b = "",  # or any other generated value
      c = "",  
      d = "",  # or any other generated value
  )
</code></pre>
[1] <a href="https://hypothesis.readthedocs.io/en/latest/reference/api.html#hypothesis.Phase.explain" rel="nofollow">https://hypothesis.readthedocs.io/en/latest/reference/api.ht...</a><p>[2] <a href="https://github.com/HypothesisWorks/hypothesis/pull/3555">https://github.com/HypothesisWorks/hypothesis/pull/3555</a></p>
]]></description><pubDate>Mon, 21 Apr 2025 02:44:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=43748112</link><dc:creator>tybug</dc:creator><comments>https://news.ycombinator.com/item?id=43748112</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43748112</guid></item><item><title><![CDATA[New comment by tybug in "Property-Based Testing for the People"]]></title><description><![CDATA[
<p>That kind of behavior can happen at the threshold of Hypothesis' internal limit on entropy - though if you're not hitting HealthCheck.data_too_large then this seems unlikely.<p>Let me know if you have a reproducer, I'd be curious to take a look.</p>
]]></description><pubDate>Tue, 07 Jan 2025 01:46:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=42618302</link><dc:creator>tybug</dc:creator><comments>https://news.ycombinator.com/item?id=42618302</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42618302</guid></item><item><title><![CDATA[New comment by tybug in "Show HN: PBT – A property-based testing library for Ruby"]]></title><description><![CDATA[
<p>(not OP but I would be surprised if the answer wasn't) yes, because you're changing the order in which the random draws are interpreted. But this isn't a problem in practice because you generally aren't changing the generator in the middle of debugging a failure.</p>
]]></description><pubDate>Wed, 22 May 2024 17:31:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=40443661</link><dc:creator>tybug</dc:creator><comments>https://news.ycombinator.com/item?id=40443661</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40443661</guid></item><item><title><![CDATA[New comment by tybug in "BB(3, 3) is Hard"]]></title><description><![CDATA[
<p>You're right, I misstated this - but I don't think this is fatal. The other sibling commenters pointed out the real issue with my thinking.<p>The argument goes the same even though I misspoke here. If the machine {halts, runs forever} then ZFC is consistent. But this is a contradiction; so ZFC must be inconsistent. Tada, I have an inconsistency proof!<p>That was the implied next step which made me think my logic was clearly incorrect (which, it was).</p>
]]></description><pubDate>Tue, 17 Oct 2023 05:40:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=37911039</link><dc:creator>tybug</dc:creator><comments>https://news.ycombinator.com/item?id=37911039</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37911039</guid></item><item><title><![CDATA[New comment by tybug in "BB(3, 3) is Hard"]]></title><description><![CDATA[
<p>I suppose I did!<p>I was having a hard time reconciling this with the intuition that BB(n) is in principle "computable" (colloquially speaking) for any n - my thinking went that if I want to compute BB(n), I can enumerate turing machines and run them until they halt, since infinitely looping machines are excluded from BB(n). But of course I have now reduced this to the halting problem! How do you know when you're "done" for that n? You don't.<p>Thanks to you and sibling commenters.</p>
]]></description><pubDate>Tue, 17 Oct 2023 05:38:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=37911030</link><dc:creator>tybug</dc:creator><comments>https://news.ycombinator.com/item?id=37911030</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37911030</guid></item><item><title><![CDATA[New comment by tybug in "BB(3, 3) is Hard"]]></title><description><![CDATA[
<p>I'm hoping someone can enlighten me here. My understanding is that there is a turing machine of 748 states [0], which halts iff ZFC is inconsistent (Thm 1). But this machine is a "physical" object, in the sense that we can materialize it on a computer and run it. Though we don't have the computing power for this currently, there is nothing in principle stopping us from running this machine for BB(748) steps: if it halts, we have proven by Thm 1 that ZFC is inconsistent. If not, we have similarly proven that ZFC is consistent.<p>I want to stress that this is key to my confusion. This is not just some abstract result; this is a computation that <i>we can perform</i> and draw a real value from.<p>Of course, I'll now fall back on godel's second incompleteness theorem and say that one cannot prove, inside ZFC, that ZFC is consistent. But if the above turing machine halts, then we proved ZFC is consistent - a contradiction!<p>Where is the mistake here? My current guess is there is a technical detail in the proof of Thm 1 which uses a stronger metatheory than ZFC to show that the 758-state turing machine halts iff ZFC is inconsistent. This is not a contradiction, because yes, we can run the turing machine for BB(748) steps, but that will only show that ZFC+ proves ZFC is consistent, which is already well known - ZFC + there exists an inaccessible cardinal does the job.<p>However, I haven't looked at the paper in detail to know whether this is the case. Does anybody who has thought deeply about this problem have insight to offer?<p>[0] <a href="https://www.ingo-blechschmidt.eu/assets/bachelor-thesis-undecidability-bb748.pdf" rel="nofollow noreferrer">https://www.ingo-blechschmidt.eu/assets/bachelor-thesis-unde...</a></p>
]]></description><pubDate>Tue, 17 Oct 2023 05:26:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=37910951</link><dc:creator>tybug</dc:creator><comments>https://news.ycombinator.com/item?id=37910951</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37910951</guid></item><item><title><![CDATA[New comment by tybug in "The Undecidability of BB(748): Understanding Godel’s Incompleteness Theorems [pdf]"]]></title><description><![CDATA[
<p>No disagreement here. But I hold that this is an especially confusing way of describing independent statements, especially in this paper, which certainly <i>was</i> written by a logician.<p>I take particular issue with the phrasing because it confused me for years in highschool and throughout undergraduate. How could something be true and not provable? It took me until a model theory course to realize that it cannot, and most pop descriptions of the incompleteness theorem are - dare I say it - wrong. Though I'm sure you would argue it's not <i>wrong</i>, merely an informal description.<p>I would, however, expect a bachelor's thesis not to stray into such confusing territory.</p>
]]></description><pubDate>Mon, 10 Jul 2023 20:51:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=36672790</link><dc:creator>tybug</dc:creator><comments>https://news.ycombinator.com/item?id=36672790</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36672790</guid></item></channel></rss>