<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: leontrolski</title><link>https://news.ycombinator.com/user?id=leontrolski</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 13 Jun 2026 19:57:24 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=leontrolski" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by leontrolski in "All of human cooking compressed into 2 megabytes"]]></title><description><![CDATA[
<p>Neat.<p>I'm trying to compress recipes into little schematics <a href="https://leontrolski.github.io/recipes.html" rel="nofollow">https://leontrolski.github.io/recipes.html</a></p>
]]></description><pubDate>Wed, 27 May 2026 12:10:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=48293036</link><dc:creator>leontrolski</dc:creator><comments>https://news.ycombinator.com/item?id=48293036</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48293036</guid></item><item><title><![CDATA[New comment by leontrolski in "Generalised plusequals"]]></title><description><![CDATA[
<p>What would be the equivalent to this in Haskell (with or without lens):<p><pre><code>    cat = Cat(age=3)
    l = [1, [2, cat], 4]
    alt l[1][1].age.=9
</code></pre>
That would give us l equal to:<p><pre><code>    [1, [2, Cat(age=9)], 4]</code></pre></p>
]]></description><pubDate>Sat, 25 Apr 2026 08:55:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=47899853</link><dc:creator>leontrolski</dc:creator><comments>https://news.ycombinator.com/item?id=47899853</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47899853</guid></item><item><title><![CDATA[New comment by leontrolski in "Generalised plusequals"]]></title><description><![CDATA[
<p>This is surprising to me:<p><pre><code>  l[1][1].age:9
  # (1,(2,{"age":9}),4)
</code></pre>
How come it doesn't return just:<p><pre><code>  {"age":9}
</code></pre>
Or is there something totally different going on with references here? As in, how is this different to:<p><pre><code>  l_inner = l[1][1]
  l_inner.age:9</code></pre></p>
]]></description><pubDate>Sat, 25 Apr 2026 08:41:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=47899789</link><dc:creator>leontrolski</dc:creator><comments>https://news.ycombinator.com/item?id=47899789</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47899789</guid></item><item><title><![CDATA[Generalised plusequals]]></title><description><![CDATA[
<p>Article URL: <a href="https://leontrolski.github.io/alt.html">https://leontrolski.github.io/alt.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47896086">https://news.ycombinator.com/item?id=47896086</a></p>
<p>Points: 16</p>
<p># Comments: 11</p>
]]></description><pubDate>Fri, 24 Apr 2026 21:34:25 +0000</pubDate><link>https://leontrolski.github.io/alt.html</link><dc:creator>leontrolski</dc:creator><comments>https://news.ycombinator.com/item?id=47896086</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47896086</guid></item><item><title><![CDATA[“Disregard That” Attacks]]></title><description><![CDATA[
<p>Article URL: <a href="https://calpaterson.com/disregard.html">https://calpaterson.com/disregard.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47524519">https://news.ycombinator.com/item?id=47524519</a></p>
<p>Points: 129</p>
<p># Comments: 94</p>
]]></description><pubDate>Wed, 25 Mar 2026 23:11:34 +0000</pubDate><link>https://calpaterson.com/disregard.html</link><dc:creator>leontrolski</dc:creator><comments>https://news.ycombinator.com/item?id=47524519</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47524519</guid></item><item><title><![CDATA[New comment by leontrolski in "Is anybody else bored of talking about AI?"]]></title><description><![CDATA[
<p>Yes, AI or no AI, tell me about something actually interesting that you're working on.<p>Currently it feels a bit like everyone is talking about what new editor they're using. I don't care about that type of developer tooling very much. AI isn't coming up with some exciting new database, type system, etc etc.<p>"Look at how I'm able to web dev x% faster" because of LLMs is boring.</p>
]]></description><pubDate>Tue, 24 Mar 2026 21:58:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=47510042</link><dc:creator>leontrolski</dc:creator><comments>https://news.ycombinator.com/item?id=47510042</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47510042</guid></item><item><title><![CDATA[Aldo's Game of Music]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.aldodevos.nl/game_of_music/">https://www.aldodevos.nl/game_of_music/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47254933">https://news.ycombinator.com/item?id=47254933</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 04 Mar 2026 22:34:28 +0000</pubDate><link>https://www.aldodevos.nl/game_of_music/</link><dc:creator>leontrolski</dc:creator><comments>https://news.ycombinator.com/item?id=47254933</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47254933</guid></item><item><title><![CDATA[National Raisin Reserve]]></title><description><![CDATA[
<p>Article URL: <a href="https://en.wikipedia.org/wiki/National_Raisin_Reserve">https://en.wikipedia.org/wiki/National_Raisin_Reserve</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46409705">https://news.ycombinator.com/item?id=46409705</a></p>
<p>Points: 6</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 28 Dec 2025 09:30:37 +0000</pubDate><link>https://en.wikipedia.org/wiki/National_Raisin_Reserve</link><dc:creator>leontrolski</dc:creator><comments>https://news.ycombinator.com/item?id=46409705</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46409705</guid></item><item><title><![CDATA[Show HN: I 3D printed a running buggy]]></title><description><![CDATA[
<p>Article URL: <a href="https://leontrolski.github.io/buggy.html">https://leontrolski.github.io/buggy.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45958194">https://news.ycombinator.com/item?id=45958194</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 17 Nov 2025 20:57:29 +0000</pubDate><link>https://leontrolski.github.io/buggy.html</link><dc:creator>leontrolski</dc:creator><comments>https://news.ycombinator.com/item?id=45958194</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45958194</guid></item><item><title><![CDATA[New comment by leontrolski in "Venn Diagram for 7 Sets"]]></title><description><![CDATA[
<p>Ditto, another Upset blog post - <a href="https://leontrolski.github.io/upset.html" rel="nofollow">https://leontrolski.github.io/upset.html</a></p>
]]></description><pubDate>Sat, 08 Nov 2025 11:13:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=45855868</link><dc:creator>leontrolski</dc:creator><comments>https://news.ycombinator.com/item?id=45855868</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45855868</guid></item><item><title><![CDATA[Using Python 3.14 template strings to write Python]]></title><description><![CDATA[
<p>Article URL: <a href="https://leontrolski.github.io/trolskgen.html">https://leontrolski.github.io/trolskgen.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45508428">https://news.ycombinator.com/item?id=45508428</a></p>
<p>Points: 3</p>
<p># Comments: 1</p>
]]></description><pubDate>Tue, 07 Oct 2025 20:30:28 +0000</pubDate><link>https://leontrolski.github.io/trolskgen.html</link><dc:creator>leontrolski</dc:creator><comments>https://news.ycombinator.com/item?id=45508428</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45508428</guid></item><item><title><![CDATA[New comment by leontrolski in "A Early History of Algebraic Data Types"]]></title><description><![CDATA[
<p>Lovely writeup!<p>> Pascal did not have sum types because Wirth thought they were less flexible than untagged unions<p>I'm not sure whether my dream language would have tagged or untagged unions (Scala 3 has both it seems). I'd be interested if anyone has any further points of comparison beyond:<p>Tagged unions, eg. in Rust: enum Tagged {A(i64), B(String), C(f64)}
Untagged unions, eg. in typed Python: Tagged = int | str | float<p>Tagged unions are better as you can represent duplicated types and types with no data, eg: enum Tagged {A, B(f64), C(f64)}<p>Untagged unions are better as you can willy nilly create new subsets and intersections of types. I find often in AST-ish work I want to express eg: def f(x: A | B | C) -> A | B</p>
]]></description><pubDate>Thu, 25 Sep 2025 19:18:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=45377594</link><dc:creator>leontrolski</dc:creator><comments>https://news.ycombinator.com/item?id=45377594</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45377594</guid></item><item><title><![CDATA[New comment by leontrolski in "Do not download the app, use the website"]]></title><description><![CDATA[
<p>A reminder of all the features available right now with PWAs - <a href="https://whatpwacando.today" rel="nofollow">https://whatpwacando.today</a></p>
]]></description><pubDate>Sat, 26 Jul 2025 09:03:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=44692589</link><dc:creator>leontrolski</dc:creator><comments>https://news.ycombinator.com/item?id=44692589</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44692589</guid></item><item><title><![CDATA[Cheeky Python Shell Script]]></title><description><![CDATA[
<p>Article URL: <a href="https://leontrolski.github.io/python-script.html">https://leontrolski.github.io/python-script.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44580676">https://news.ycombinator.com/item?id=44580676</a></p>
<p>Points: 3</p>
<p># Comments: 1</p>
]]></description><pubDate>Wed, 16 Jul 2025 10:35:25 +0000</pubDate><link>https://leontrolski.github.io/python-script.html</link><dc:creator>leontrolski</dc:creator><comments>https://news.ycombinator.com/item?id=44580676</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44580676</guid></item><item><title><![CDATA[New comment by leontrolski in "Postgres LISTEN/NOTIFY does not scale"]]></title><description><![CDATA[
<p>> also fast when transactions are held open<p>In my linked example, on getting the item from the queue, you immediately set the status to something that you're not polling for - does Postgres still have to skip past these tuples (even in an index) until they're vacuumed up?</p>
]]></description><pubDate>Fri, 11 Jul 2025 04:36:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=44528430</link><dc:creator>leontrolski</dc:creator><comments>https://news.ycombinator.com/item?id=44528430</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44528430</guid></item><item><title><![CDATA[New comment by leontrolski in "Postgres LISTEN/NOTIFY does not scale"]]></title><description><![CDATA[
<p>I'd be interested as to how dumb-ol' polling would compare here (the FOR UPDATE SKIP LOCKED method <a href="https://leontrolski.github.io/postgres-as-queue.html" rel="nofollow">https://leontrolski.github.io/postgres-as-queue.html</a>). One day I will set up some benchmarks as this is the kind of thing people argue about a lot without much evidence either way.<p>Wasn't aware of this AccessExclusiveLock behaviour - a reminder (and shameless plug 2) of how Postgres locks interact: <a href="https://leontrolski.github.io/pglockpy.html" rel="nofollow">https://leontrolski.github.io/pglockpy.html</a></p>
]]></description><pubDate>Thu, 10 Jul 2025 21:00:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=44525560</link><dc:creator>leontrolski</dc:creator><comments>https://news.ycombinator.com/item?id=44525560</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44525560</guid></item><item><title><![CDATA[Senior Engineer tries Vibe Coding [video]]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.youtube.com/watch?v=_2C2CNmK7dQ">https://www.youtube.com/watch?v=_2C2CNmK7dQ</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44462091">https://news.ycombinator.com/item?id=44462091</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 04 Jul 2025 07:36:00 +0000</pubDate><link>https://www.youtube.com/watch?v=_2C2CNmK7dQ</link><dc:creator>leontrolski</dc:creator><comments>https://news.ycombinator.com/item?id=44462091</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44462091</guid></item><item><title><![CDATA[Show HN: trolskgen – Ergonomic Codegen for Python]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/leontrolski/trolskgen">https://github.com/leontrolski/trolskgen</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44387972">https://news.ycombinator.com/item?id=44387972</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Thu, 26 Jun 2025 14:45:30 +0000</pubDate><link>https://github.com/leontrolski/trolskgen</link><dc:creator>leontrolski</dc:creator><comments>https://news.ycombinator.com/item?id=44387972</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44387972</guid></item><item><title><![CDATA[My dream thermostat (2024)]]></title><description><![CDATA[
<p>Article URL: <a href="https://leontrolski.github.io/thermostat.html">https://leontrolski.github.io/thermostat.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43910155">https://news.ycombinator.com/item?id=43910155</a></p>
<p>Points: 48</p>
<p># Comments: 68</p>
]]></description><pubDate>Tue, 06 May 2025 22:11:24 +0000</pubDate><link>https://leontrolski.github.io/thermostat.html</link><dc:creator>leontrolski</dc:creator><comments>https://news.ycombinator.com/item?id=43910155</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43910155</guid></item><item><title><![CDATA[New comment by leontrolski in "Show HN: Tkintergalactic - Declarative Tcl/Tk UI Library for Python"]]></title><description><![CDATA[
<p>I plan on using it for semi throw away UIs for things where I don't want the user to have to spin up a Web server. Right now there's no canvas support, but there is that kind of thing in the Tk/Tcl docs (linked in the project). I probably need to add a way to reference a specific Widget so you can access the raw name and run taw Tcl against it.</p>
]]></description><pubDate>Mon, 05 May 2025 21:23:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=43899586</link><dc:creator>leontrolski</dc:creator><comments>https://news.ycombinator.com/item?id=43899586</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43899586</guid></item></channel></rss>