<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: pkal</title><link>https://news.ycombinator.com/user?id=pkal</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 25 Sep 2026 00:57:37 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=pkal" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by pkal in "F-Droid 2.0"]]></title><description><![CDATA[
<p>What do you do for apps that don't have GitHub releases?</p>
]]></description><pubDate>Thu, 24 Sep 2026 15:58:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=49832553</link><dc:creator>pkal</dc:creator><comments>https://news.ycombinator.com/item?id=49832553</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49832553</guid></item><item><title><![CDATA[New comment by pkal in "OpenAI’s Navier-Stokes release included a Lean 4 formal proof"]]></title><description><![CDATA[
<p>IMO the "forty hours per page" rule is not up to date, and more a consequence of lacking proof automation in 2005.  From what I understand about Lean, this has been one of the things that they have put a lot of effort into improving, making proof mechanization more palatable to the mathematically inclined, as opposed to just logicians.</p>
]]></description><pubDate>Thu, 10 Sep 2026 21:46:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=49650572</link><dc:creator>pkal</dc:creator><comments>https://news.ycombinator.com/item?id=49650572</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49650572</guid></item><item><title><![CDATA[New comment by pkal in "Statichost.eu – European static site hosting"]]></title><description><![CDATA[
<p>Why should it be?  In my experience it depends on the case, and in my case it seems like an absolute technological overkill to version the site and have statichost regularly pull from some repository, as I update it perhaps once a year.</p>
]]></description><pubDate>Sat, 05 Sep 2026 08:48:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=49574589</link><dc:creator>pkal</dc:creator><comments>https://news.ycombinator.com/item?id=49574589</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49574589</guid></item><item><title><![CDATA[New comment by pkal in "Statichost.eu – European static site hosting"]]></title><description><![CDATA[
<p>She is flattered :)  Your comment and those of others here have "made her day", so thanks!</p>
]]></description><pubDate>Sat, 05 Sep 2026 08:45:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=49574566</link><dc:creator>pkal</dc:creator><comments>https://news.ycombinator.com/item?id=49574566</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49574566</guid></item><item><title><![CDATA[New comment by pkal in "Statichost.eu – European static site hosting"]]></title><description><![CDATA[
<p>Not really, I just use Emacs' versioned backup files that are automatically generated.  As I said, I don't have to update the site that often, so it is entirely sufficient.  An advantage for me, besides not having to write Git commit messages, is that I also don't have to version images in Git, which I don't like doing.</p>
]]></description><pubDate>Sat, 05 Sep 2026 08:44:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=49574557</link><dc:creator>pkal</dc:creator><comments>https://news.ycombinator.com/item?id=49574557</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49574557</guid></item><item><title><![CDATA[New comment by pkal in "Statichost.eu – European static site hosting"]]></title><description><![CDATA[
<p>According to the docs no, but I did find out that they now provide a script that automates the process <a href="https://www.statichost.eu/docs/direct-upload/" rel="nofollow">https://www.statichost.eu/docs/direct-upload/</a>.</p>
]]></description><pubDate>Fri, 04 Sep 2026 21:49:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=49570640</link><dc:creator>pkal</dc:creator><comments>https://news.ycombinator.com/item?id=49570640</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49570640</guid></item><item><title><![CDATA[New comment by pkal in "Statichost.eu – European static site hosting"]]></title><description><![CDATA[
<p>I'm using this for my mother's website (<a href="https://www.touchofglass.eu/" rel="nofollow">https://www.touchofglass.eu/</a>), and my only complaint is that it assumes you version a website in a Git repository.  You can work around it by uploading a tarball or something like that, but it is far less convenient than using sftp/rsync.  But considering that we are far into the free 10GB a month and I only have to update it very infrequently, it seemed like the best solution.</p>
]]></description><pubDate>Fri, 04 Sep 2026 21:06:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=49570207</link><dc:creator>pkal</dc:creator><comments>https://news.ycombinator.com/item?id=49570207</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49570207</guid></item><item><title><![CDATA[New comment by pkal in "What's new in Emacs 31.1"]]></title><description><![CDATA[
<p>The portability issues of `package-vc-install-from-checkout' are due to issues with symlinks not being portable, which is what that function relied on.  None of this is related to tree-sitter.  That is the function that the combination of :vc and :load-path would use, which just had to be transitively deprecated due to the mistake in `package-vc-install-from-checkout'.  Critically `package-vc-install-from-checkout' _does not_ do any retrieval, the checkout of the package had to already exist beforehand, which use-package did not take care of.  The function just made sure that package.el would activate the linked directory.  User Lisp provides this same functionality.  Do not confuse it with the :vc keyword that invokes `package-vc-install', which actually retrieves a checkout of some repository and prepares to do be loaded by package.el.<p>This is the kind of research that I would expect an article like yours to make.  It is totally fair to contact the people who worked on this, instead of being smug about it and caricaturing the Emacs maintainers as conservative.</p>
]]></description><pubDate>Tue, 25 Aug 2026 21:31:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=49440949</link><dc:creator>pkal</dc:creator><comments>https://news.ycombinator.com/item?id=49440949</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49440949</guid></item><item><title><![CDATA[New comment by pkal in "What's new in Emacs 31.1"]]></title><description><![CDATA[
<p>That is what <a href="https://www.emacswiki.org/emacs/EmacsThirtyOneHighlights" rel="nofollow">https://www.emacswiki.org/emacs/EmacsThirtyOneHighlights</a> is for.  And it is not so much that the author doesn't mention the topics, but that he misconstrues them or just plain doesn't appear to understand what he is talking about.</p>
]]></description><pubDate>Tue, 25 Aug 2026 21:17:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=49440769</link><dc:creator>pkal</dc:creator><comments>https://news.ycombinator.com/item?id=49440769</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49440769</guid></item><item><title><![CDATA[New comment by pkal in "What's new in Emacs 31.1"]]></title><description><![CDATA[
<p>I was annoyed by some of the comments in the "Packages" section, because it is clear that the author didn't try anything out but just scattered a few comments though out the file.<p>Regarding :vc and :load-path, this was obsoleted transitively due to the obsoleting of package-vc-install-from-checkout, which has portability issues.  Bug#80604 goes into the background for this.  This is NOT an obsoletion of the :vc keyword for use-package.<p>Regarding package-autosuggest, this is disabled because it doesn't interest most users.  It is targeted at new users who aren't familiar with the packages, and might be interested in new major modes.  Experienced users are generally either familiar with the packages and use them or prefer to stay in fundamental mode.  The minor mode is enabled as part of the newcomers theme!<p>No mention of package-review-policy, which especially in the "age of AI" is an important feature is you want to be careful about external code you are using on your system.<p>Oh and on the topic of the newercomers theme, the reason it is not mentioned "higher up" in the NEWS file, besides it being the wrong section, is that it is highlighted on the splash screen, where new users are going to find it, instead of a NEWS file.</p>
]]></description><pubDate>Mon, 24 Aug 2026 17:25:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=49423102</link><dc:creator>pkal</dc:creator><comments>https://news.ycombinator.com/item?id=49423102</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49423102</guid></item><item><title><![CDATA[New comment by pkal in "Gödel, Escher, Elisp: The Beauty of Macros"]]></title><description><![CDATA[
<p>If you look at the definition of a macro like defcustom, you'll see that it just expands to a function call, where all the logic is implemented.  This could also be implemented in the macro, but that is more complicated and brittle, due to the risk of double-evaluations and having to produce code that will (usually) later evaluate with the intended side effect.<p>Furthermore, macros and functions constitute a kind of function coloring.  To use a macro in a function, like defcustom, you couldn't pass the name of the user option you are defining in as a symbol, as that is not evaluated.  So instead you'd have to call eval on a runtime constructed expression, which is a cludge.<p>So I agree with the top comment, to avoid macros is a sign of Lisp maturity.  It is easy and fun to admire them when you are coming from languages with arbitrary restrictions in their macro systems like C, but ones you get used to them you don't treat them with any more wonder than any other arbitrary restriction that a language may lack (bad ad hoc example: nobody praises C for the lack of a CALL keyword).</p>
]]></description><pubDate>Fri, 14 Aug 2026 18:20:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=49302638</link><dc:creator>pkal</dc:creator><comments>https://news.ycombinator.com/item?id=49302638</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49302638</guid></item><item><title><![CDATA[New comment by pkal in "Go 1.27 Interactive Tour"]]></title><description><![CDATA[
<p>Is that really the confusing part?  If you had a general collection interface, say Mapper, a Box (i.e. a singleton set) could implement it just as well as a List or a Tree.</p>
]]></description><pubDate>Sun, 02 Aug 2026 19:34:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=49147554</link><dc:creator>pkal</dc:creator><comments>https://news.ycombinator.com/item?id=49147554</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49147554</guid></item><item><title><![CDATA[New comment by pkal in "Go 1.27 Interactive Tour"]]></title><description><![CDATA[
<p>If you instantiate it with concrete types, does "(b IntBox) Map(f func(int) string) StringBox" make more sense?  You have a collection (in this case Box) containing values of type T, a function that maps values of type T to type U, and if you apply that function to all elements in that collection you get a collection of type U.</p>
]]></description><pubDate>Sun, 02 Aug 2026 16:52:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=49146143</link><dc:creator>pkal</dc:creator><comments>https://news.ycombinator.com/item?id=49146143</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49146143</guid></item><item><title><![CDATA[New comment by pkal in "Go 1.27 Interactive Tour"]]></title><description><![CDATA[
<p>One reason that Go doesn't have sum/union types, from <a href="https://groups.google.com/g/golang-nuts/c/0bcyZaL3T8E/m/eL4r3VFKkR8J" rel="nofollow">https://groups.google.com/g/golang-nuts/c/0bcyZaL3T8E/m/eL4r...</a>, is that it is not apparent how this would mesh with Go's "meaningful zero value" stance.</p>
]]></description><pubDate>Sun, 02 Aug 2026 08:18:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=49142249</link><dc:creator>pkal</dc:creator><comments>https://news.ycombinator.com/item?id=49142249</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49142249</guid></item><item><title><![CDATA[New comment by pkal in "NetBSD 11.0"]]></title><description><![CDATA[
<p>Which is not that surprising since SDF uses NetBSD on most of its systems <a href="https://sdf.org/?faq?BASICS?08" rel="nofollow">https://sdf.org/?faq?BASICS?08</a>.</p>
]]></description><pubDate>Sat, 01 Aug 2026 22:21:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=49139062</link><dc:creator>pkal</dc:creator><comments>https://news.ycombinator.com/item?id=49139062</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49139062</guid></item><item><title><![CDATA[New comment by pkal in "Preventing line breaks in <code> elements"]]></title><description><![CDATA[
<p>In the example from the article it certainly is an option.  In Python you could either use a "soup" library or you could play around with a tool like <a href="https://www.w3.org/Tools/HTML-XML-utils/man1/hxpipe.html" rel="nofollow">https://www.w3.org/Tools/HTML-XML-utils/man1/hxpipe.html</a>.<p>The more fundamental question for me is why the author didn't decide to make make code blocks non-breaking by default, or just add the class annotations when he writes the HTML?</p>
]]></description><pubDate>Fri, 24 Jul 2026 15:43:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=49037328</link><dc:creator>pkal</dc:creator><comments>https://news.ycombinator.com/item?id=49037328</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49037328</guid></item><item><title><![CDATA[New comment by pkal in "Making Claude a Chemist"]]></title><description><![CDATA[
<p>I see that intelligence itself is a tool, but that doesn't mean I want an automated gun, automated hammer, automated nuclear warhead, etc.</p>
]]></description><pubDate>Sun, 14 Jun 2026 06:39:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=48524761</link><dc:creator>pkal</dc:creator><comments>https://news.ycombinator.com/item?id=48524761</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48524761</guid></item><item><title><![CDATA[New comment by pkal in "Love systemd timers"]]></title><description><![CDATA[
<p>I am familiar with the syntax, so I am biased ("*/3" and "12,14,20" makes sense if you are familiar with Unix tools), but it is still more intuitive to me than the systemd unit file syntax and usage.  I know that I just have to edit /etc/cron or throw any executable file into /etc/cron.d/monthly and it will work on my system, but I cannot write a systemd timer file from scratch without looking it, and to do that I first have to find the directory where the other examples are located.  /etc/systemd doesn't appear to be it.<p>This is generally my only real complaint about systemd.  I don't care if it is too monolitic, written in C or whatever, I just want a straightforward syntax for straightforward operations.  I'd like it if systemd could recognize if a .target file is a shell script and just do "the right thing".  Perhaps it would make sense for a timer file to recognize cron syntax as well.  Or at least allow for a kind of extensibility so that I can have it supported.<p>If systemd had a little more respect for existing conventions, I am pretty sure it wouldn't be so controversial.  After all, system administrators like it because they use it all the time, but a regular, full-timer user like me, who only deals with it when something is broken or have to use it as a means-to-an-end to set something up, then all friction is annoying and bad UX.  (And no, using Nix is not the solution)</p>
]]></description><pubDate>Tue, 02 Jun 2026 16:23:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=48372380</link><dc:creator>pkal</dc:creator><comments>https://news.ycombinator.com/item?id=48372380</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48372380</guid></item><item><title><![CDATA[New comment by pkal in "Thinking in an array language (2022)"]]></title><description><![CDATA[
<p>or <a href="https://codeberg.org/anaseto/goal" rel="nofollow">https://codeberg.org/anaseto/goal</a></p>
]]></description><pubDate>Sat, 23 May 2026 06:51:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=48245351</link><dc:creator>pkal</dc:creator><comments>https://news.ycombinator.com/item?id=48245351</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48245351</guid></item><item><title><![CDATA[New comment by pkal in "Regex Chess: A 2-ply minimax chess engine in 84,688 regular expressions"]]></title><description><![CDATA[
<p>No, because you can compute the optimal automaton (as in least number of states) that recognizes the same language: <a href="https://en.wikipedia.org/wiki/DFA_minimization" rel="nofollow">https://en.wikipedia.org/wiki/DFA_minimization</a></p>
]]></description><pubDate>Tue, 19 May 2026 06:26:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=48189916</link><dc:creator>pkal</dc:creator><comments>https://news.ycombinator.com/item?id=48189916</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48189916</guid></item></channel></rss>