<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: jgavris</title><link>https://news.ycombinator.com/user?id=jgavris</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 25 Oct 2026 12:25:40 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=jgavris" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by jgavris in "The Lobster Programming Language"]]></title><description><![CDATA[
<p>Almost spit out my coffee</p>
]]></description><pubDate>Sun, 08 Mar 2026 12:53:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=47296923</link><dc:creator>jgavris</dc:creator><comments>https://news.ycombinator.com/item?id=47296923</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47296923</guid></item><item><title><![CDATA[New comment by jgavris in "Hackers (1995) Animated Experience"]]></title><description><![CDATA[
<p>They’re trashing our rights!</p>
]]></description><pubDate>Fri, 06 Feb 2026 16:30:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=46914924</link><dc:creator>jgavris</dc:creator><comments>https://news.ycombinator.com/item?id=46914924</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46914924</guid></item><item><title><![CDATA[New comment by jgavris in "Some notes on starting to use Django"]]></title><description><![CDATA[
<p>I was just in the middle of writing something similar above, thanks!</p>
]]></description><pubDate>Wed, 28 Jan 2026 12:43:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=46794583</link><dc:creator>jgavris</dc:creator><comments>https://news.ycombinator.com/item?id=46794583</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46794583</guid></item><item><title><![CDATA[New comment by jgavris in "Some notes on starting to use Django"]]></title><description><![CDATA[
<p>The general approach is to do multiple migrations (add first and make new-code work with both, deploy, remove old-code, then delete old-schema) and this is not specific to Django's ORM in any way, the same goes for any database schema deployment. Take a peek at <a href="https://medium.com/@pranavdixit20/zero-downtime-migrations-in-django-the-advanced-playbook-742d85f1f5c0" rel="nofollow">https://medium.com/@pranavdixit20/zero-downtime-migrations-i...</a> for some ideas.</p>
]]></description><pubDate>Wed, 28 Jan 2026 12:42:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=46794578</link><dc:creator>jgavris</dc:creator><comments>https://news.ycombinator.com/item?id=46794578</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46794578</guid></item><item><title><![CDATA[New comment by jgavris in "Some notes on starting to use Django"]]></title><description><![CDATA[
<p>Of course, ActiveRecord back in 2005.</p>
]]></description><pubDate>Wed, 28 Jan 2026 12:39:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=46794547</link><dc:creator>jgavris</dc:creator><comments>https://news.ycombinator.com/item?id=46794547</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46794547</guid></item><item><title><![CDATA[New comment by jgavris in "Some notes on starting to use Django"]]></title><description><![CDATA[
<p>The Django ORM / migrations are still basically unmatched in happiness factor.</p>
]]></description><pubDate>Wed, 28 Jan 2026 04:07:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=46790934</link><dc:creator>jgavris</dc:creator><comments>https://news.ycombinator.com/item?id=46790934</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46790934</guid></item><item><title><![CDATA[New comment by jgavris in "Doing gigabit Ethernet over my British phone wires"]]></title><description><![CDATA[
<p>This is essentially how some fixed wireless providers (like Starry) deliver the last mile (twisted pair).</p>
]]></description><pubDate>Sat, 24 Jan 2026 23:49:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=46749003</link><dc:creator>jgavris</dc:creator><comments>https://news.ycombinator.com/item?id=46749003</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46749003</guid></item><item><title><![CDATA[New comment by jgavris in "Approachable Swift Concurrency"]]></title><description><![CDATA[
<p>I still feel like Swift 5 (5.2?) was the sweet spot. Right now there are just way too many keywords, making C++ look easy again.<p>Similarly, I find Combine / GCD code far easier to write and read and understand, and the semantics are better than structured concurrency. I have plenty of production Combine code in use by (hundreds of) millions of people and it hasn't needed to be touched in years.</p>
]]></description><pubDate>Wed, 31 Dec 2025 03:03:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=46440818</link><dc:creator>jgavris</dc:creator><comments>https://news.ycombinator.com/item?id=46440818</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46440818</guid></item><item><title><![CDATA[New comment by jgavris in "Git Branches Have No Rules"]]></title><description><![CDATA[
<p>Git ‘remotes’ can have rules (hooks that run on push, and decline).<p>GitHub has ‘branch protection’ which prevents various changes. But GitHub is not Git. A common misconception lately due to its popularity.<p>Git itself is nothing more than a set of tools to manage the versions of a repository. How you choose to use it is up to you, and what you allow.<p>Solo developer? Rebase, or don’t.<p>Do you collaborate? Maybe consider using a SaaS product like GitHub and setup your rules.</p>
]]></description><pubDate>Tue, 02 Jan 2024 23:53:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=38848841</link><dc:creator>jgavris</dc:creator><comments>https://news.ycombinator.com/item?id=38848841</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38848841</guid></item><item><title><![CDATA[New comment by jgavris in "The fun factor of the video game Uplink"]]></title><description><![CDATA[
<p>Cyberarmy was pretty fun too</p>
]]></description><pubDate>Sat, 28 Oct 2023 15:14:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=38050424</link><dc:creator>jgavris</dc:creator><comments>https://news.ycombinator.com/item?id=38050424</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38050424</guid></item><item><title><![CDATA[New comment by jgavris in "Reflect – Multiplayer web app framework with game-style synchronization"]]></title><description><![CDATA[
<p>Definitely a fun demo!</p>
]]></description><pubDate>Thu, 19 Oct 2023 01:43:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=37937219</link><dc:creator>jgavris</dc:creator><comments>https://news.ycombinator.com/item?id=37937219</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37937219</guid></item><item><title><![CDATA[New comment by jgavris in "Personalized learning can feel isolating. Whole class learning can feel personal"]]></title><description><![CDATA[
<p>It’s practically a requirement…let’s say there was no iOS class when I was in school, but there was an App Store.</p>
]]></description><pubDate>Thu, 12 Oct 2023 22:54:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=37864206</link><dc:creator>jgavris</dc:creator><comments>https://news.ycombinator.com/item?id=37864206</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37864206</guid></item><item><title><![CDATA[New comment by jgavris in "Apple Silicon (M1) powered macOS runners are now available in public beta"]]></title><description><![CDATA[
<p>Indeed, it’s not out of reach and compute density is higher than the Mac Pro with Minis (even the core i9). M1 / M2 is vastly higher.</p>
]]></description><pubDate>Mon, 02 Oct 2023 23:14:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=37745723</link><dc:creator>jgavris</dc:creator><comments>https://news.ycombinator.com/item?id=37745723</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37745723</guid></item><item><title><![CDATA[New comment by jgavris in "Choose Postgres queue technology"]]></title><description><![CDATA[
<p>I wrote a hacky version of SKIP LOCKED using advisory locks and a recursive CTE before it was released for a job queue. It worked splendidly, along with the transactional semantics of a proper database. I’m surprised more systems don’t realize they need it.</p>
]]></description><pubDate>Mon, 25 Sep 2023 01:29:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=37638740</link><dc:creator>jgavris</dc:creator><comments>https://news.ycombinator.com/item?id=37638740</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37638740</guid></item><item><title><![CDATA[New comment by jgavris in "San Francisco streets clogged as line of Cruise robotaxis come to a standstill"]]></title><description><![CDATA[
<p>Like a store and forward wifi mesh network? I worked on this in 2008.</p>
]]></description><pubDate>Mon, 14 Aug 2023 23:49:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=37128320</link><dc:creator>jgavris</dc:creator><comments>https://news.ycombinator.com/item?id=37128320</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37128320</guid></item><item><title><![CDATA[New comment by jgavris in "Valve lawyers urge Dota 2 custom game creators to stop all monetization"]]></title><description><![CDATA[
<p>Lest we forget DotA was a Warcraft 3 mod to begin with…</p>
]]></description><pubDate>Fri, 04 Aug 2023 21:20:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=37006049</link><dc:creator>jgavris</dc:creator><comments>https://news.ycombinator.com/item?id=37006049</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37006049</guid></item><item><title><![CDATA[New comment by jgavris in "Surgeon General says 13 is ‘too early’ to join social media"]]></title><description><![CDATA[
<p>Oh how I miss the computer labs with Kidpix, Oregon trail, Mavis Beacon, and maybe later Marathon LAN parties (when the instructor left the room for an hour)...</p>
]]></description><pubDate>Sun, 29 Jan 2023 21:09:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=34572781</link><dc:creator>jgavris</dc:creator><comments>https://news.ycombinator.com/item?id=34572781</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34572781</guid></item><item><title><![CDATA[New comment by jgavris in "Just use a monorepo"]]></title><description><![CDATA[
<p>Even in a private monorepo, Google has tools like Copybara that make it somewhat easy to 'open source' small pieces of it and sync them in and out of a 'public' repo. The benefits of a monorepo and just having to 'git checkout' and your entire environment 'just works' (I'm looking at you, scripting languages and build systems) is not to be taken lightly.</p>
]]></description><pubDate>Thu, 12 Jan 2023 23:22:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=34361686</link><dc:creator>jgavris</dc:creator><comments>https://news.ycombinator.com/item?id=34361686</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34361686</guid></item><item><title><![CDATA[New comment by jgavris in "The road to Dart 3: A fully sound, null safe language"]]></title><description><![CDATA[
<p>I am fine with applying either OO / FP approaches. This example is a sealed <i>class</i>, it is just my opinion that the OO version reads better. And the added benefit of having the function namespaced / bound to the class for IDE support (autocomplete) and documentation.</p>
]]></description><pubDate>Sat, 10 Dec 2022 16:46:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=33934088</link><dc:creator>jgavris</dc:creator><comments>https://news.ycombinator.com/item?id=33934088</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33934088</guid></item><item><title><![CDATA[New comment by jgavris in "The road to Dart 3: A fully sound, null safe language"]]></title><description><![CDATA[
<p>Thanks. I'm just wondering why the example didn't show this extension method. It seems more idiomatic to just call it on the receiver instead of passing a parameter.</p>
]]></description><pubDate>Fri, 09 Dec 2022 15:32:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=33922342</link><dc:creator>jgavris</dc:creator><comments>https://news.ycombinator.com/item?id=33922342</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33922342</guid></item></channel></rss>