<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: afranchuk</title><link>https://news.ycombinator.com/user?id=afranchuk</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 26 Aug 2026 20:26:29 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=afranchuk" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by afranchuk in "Show HN: Free, in-browser PDF editor"]]></title><description><![CDATA[
<p>For what it's worth, Firefox has had most of these features built into their PDF.js viewer for a while. I believe signatures were recently added. I'm not sure whether there's capability to remove pages or merge PDFs, though.</p>
]]></description><pubDate>Sun, 04 May 2025 12:54:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=43886442</link><dc:creator>afranchuk</dc:creator><comments>https://news.ycombinator.com/item?id=43886442</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43886442</guid></item><item><title><![CDATA[New comment by afranchuk in "Janet for Mortals (2023)"]]></title><description><![CDATA[
<p>Here's an excerpt (which is in a map passed to peg/compile) for numeric parsing:<p><pre><code>    :nonzero-int (* (range "19") (any (range "09")))
    :int (+ "0" :nonzero-int)
    :decimal (cmt (* (? (<- :int)) "." (<- (some (range "09")))) ,parse-decimal)
    :fraction (cmt (\* (? (\* (number :nonzero-int) :s+)) (number :nonzero-int)
 "/" (number :nonzero-int)) ,parse-fraction)
    :integer (cmt (number :nonzero-int) ,parse-integer)
    :num (+ :decimal :fraction :integer)</code></pre></p>
]]></description><pubDate>Wed, 27 Nov 2024 20:35:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=42259471</link><dc:creator>afranchuk</dc:creator><comments>https://news.ycombinator.com/item?id=42259471</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42259471</guid></item><item><title><![CDATA[New comment by afranchuk in "Janet for Mortals (2023)"]]></title><description><![CDATA[
<p>Writing DSLs is very easy, and fun! The PEG grammars are very elegant to build up. I wrote a language for programmatic recipes (think scaling, unit conversion, etc) with it and it was a delight. I'd provide an example but I haven't taken the time to write a README so I haven't published it publicly yet.</p>
]]></description><pubDate>Wed, 27 Nov 2024 13:30:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=42255929</link><dc:creator>afranchuk</dc:creator><comments>https://news.ycombinator.com/item?id=42255929</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42255929</guid></item><item><title><![CDATA[New comment by afranchuk in "I Don't Have Spotify"]]></title><description><![CDATA[
<p>I've enjoyed the selection on Qobuz, which is all DRM-free and allows mp3 or lossless flac formats.</p>
]]></description><pubDate>Tue, 12 Nov 2024 00:09:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=42111592</link><dc:creator>afranchuk</dc:creator><comments>https://news.ycombinator.com/item?id=42111592</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42111592</guid></item><item><title><![CDATA[New comment by afranchuk in ""Begin disabling installed extensions still using Manifest V2 in Chrome stable""]]></title><description><![CDATA[
<p>Note that Firefox profile management is getting an overhaul right now, including an easy profile switching UI. I'm not sure when it will be landing in release, but it is being actively built!</p>
]]></description><pubDate>Fri, 11 Oct 2024 15:01:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=41810087</link><dc:creator>afranchuk</dc:creator><comments>https://news.ycombinator.com/item?id=41810087</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41810087</guid></item><item><title><![CDATA[New comment by afranchuk in "Porting a cross-platform GUI application to Rust"]]></title><description><![CDATA[
<p>I'm the author of this blog post, feel free to ask any questions!</p>
]]></description><pubDate>Tue, 23 Apr 2024 21:25:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=40137489</link><dc:creator>afranchuk</dc:creator><comments>https://news.ycombinator.com/item?id=40137489</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40137489</guid></item><item><title><![CDATA[New comment by afranchuk in "Infinite Craft"]]></title><description><![CDATA[
<p>I forget how I got Trump (it was a different formulation than others mentioned though). But Trump + Titanic = Sinking Ship</p>
]]></description><pubDate>Thu, 01 Feb 2024 11:44:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=39214928</link><dc:creator>afranchuk</dc:creator><comments>https://news.ycombinator.com/item?id=39214928</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39214928</guid></item><item><title><![CDATA[New comment by afranchuk in "Semantic Zoom"]]></title><description><![CDATA[
<p>Are you perhaps referring to eagle mode?<p><a href="https://eaglemode.sourceforge.net/" rel="nofollow noreferrer">https://eaglemode.sourceforge.net/</a></p>
]]></description><pubDate>Sat, 02 Sep 2023 13:54:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=37361565</link><dc:creator>afranchuk</dc:creator><comments>https://news.ycombinator.com/item?id=37361565</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37361565</guid></item><item><title><![CDATA[New comment by afranchuk in "Show HN: User Persona Generator"]]></title><description><![CDATA[
<p>The persona I generated is a Christmas tree light company targeting nuclear physicists. The results were surprisingly cohesive!<p>However, there is a bug: it seems to insert a newline after every punctuation, including after "Dr." (the persona was "Dr. Thomas").</p>
]]></description><pubDate>Mon, 14 Aug 2023 13:03:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=37120568</link><dc:creator>afranchuk</dc:creator><comments>https://news.ycombinator.com/item?id=37120568</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37120568</guid></item><item><title><![CDATA[New comment by afranchuk in "I Built Linux from Scratch"]]></title><description><![CDATA[
<p>I built an LFS system during one weekend my first semester of freshman year of college. I had too much free time I guess...<p>At the time I made it a 32-bit system since LFS didn't (doesn't?) support multilib and I knew I would need some 32-bit libraries.<p>I used that as my main system for quite a long time, upgrading software or installing based on BLFS or my own intuition as necessary. It worked pretty well! It was an invaluable experience in the development of my Linux expertise.<p>After about 5 years I got frustrated with the 32-bit system so I did an in-place upgrade to 64-bit. It was thrilling to come out the other end of that, to say the least (seriously). The training wheels were definitely off, but LFS had educated me enough to be confident in doing it. Also I kept around all the 32-bit stuff of course, so I could incrementally upgrade things.<p>After a few more years (maybe 2018ish?) I grew weary and changed to Arch (now I use void) :)<p>All that being said, I highly recommend LFS!</p>
]]></description><pubDate>Wed, 28 Jun 2023 01:18:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=36501059</link><dc:creator>afranchuk</dc:creator><comments>https://news.ycombinator.com/item?id=36501059</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36501059</guid></item><item><title><![CDATA[New comment by afranchuk in "Google open-sources Rust crate audits"]]></title><description><![CDATA[
<p>Well just today I found unsoundness in a crate I was auditing. It turned out that the crate had since removed the entire module of functionality in question so I couldn't submit a bug, but it led me to take steps to remove use of the crate entirely.</p>
]]></description><pubDate>Tue, 23 May 2023 23:12:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=36052004</link><dc:creator>afranchuk</dc:creator><comments>https://news.ycombinator.com/item?id=36052004</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36052004</guid></item><item><title><![CDATA[New comment by afranchuk in "Photoprism – open-source Google Photos Alternative"]]></title><description><![CDATA[
<p>Funny, for the last week I've been trying various self hosted photo apps every night on my home server. Tonight was going to be Photoprism and then I see it pop up here! I've just wanted something that allows me to organize and tag photos, but that also has some sort of API or easy access to the database. I've been looking for something because I realized it'd be nice to see photos on a regular basis in my house: I want to set up a photo frame to display random photos from my family collection that have a particular tag. Otherwise I feel like I'm not going back and appreciating them enough, just taking pictures that are never seen again. Though photo app "memories" address that. I really like Photostructure's approach of always displaying a random sampling of photos when you're at higher organizational levels, that's a fun way to see different stuff.</p>
]]></description><pubDate>Thu, 09 Feb 2023 01:44:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=34718642</link><dc:creator>afranchuk</dc:creator><comments>https://news.ycombinator.com/item?id=34718642</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34718642</guid></item><item><title><![CDATA[New comment by afranchuk in "Photoprism – open-source Google Photos Alternative"]]></title><description><![CDATA[
<p>Storage volumes can be much cheaper. For instance, Backblaze B2 will run you around $6/TB/mo, IIRC. And some providers (usually the smaller ones) have discounts for bulk purchases (e.g. a year). Many self hosted apps support cloud storage.</p>
]]></description><pubDate>Thu, 09 Feb 2023 01:36:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=34718565</link><dc:creator>afranchuk</dc:creator><comments>https://news.ycombinator.com/item?id=34718565</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34718565</guid></item><item><title><![CDATA[New comment by afranchuk in "Experimental Rust Feature: Safer Interoperable ABI"]]></title><description><![CDATA[
<p>This is great!<p>For those unaware, the abi_stable crate makes stable ABIs (even with complex features like trait objects) pretty easy and, importantly, verifiable. It is primarily useful for rust-to-rust abi stability (for instance when creating a plugin system).</p>
]]></description><pubDate>Tue, 27 Dec 2022 13:56:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=34148640</link><dc:creator>afranchuk</dc:creator><comments>https://news.ycombinator.com/item?id=34148640</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34148640</guid></item><item><title><![CDATA[New comment by afranchuk in "Bubbles"]]></title><description><![CDATA[
<p>I especially liked the one for the works page itself! Very fun.</p>
]]></description><pubDate>Fri, 11 Nov 2022 23:31:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=33568218</link><dc:creator>afranchuk</dc:creator><comments>https://news.ycombinator.com/item?id=33568218</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33568218</guid></item><item><title><![CDATA[New comment by afranchuk in "Rust 1.65.0"]]></title><description><![CDATA[
<p>I agree with the significance. I've liked the additions over the past few years of course, but the last time I felt a release was this significant was async, I believe 1.39, about 3 years ago.<p>And coincidentally, the times I've wanted to reach for GATs have been when dealing with Futures (specifically dealing with lifetimes of Futures produced by Fns; basically what gates async functions in traits). I'm excited to be able to finally use them in my APIs!</p>
]]></description><pubDate>Thu, 03 Nov 2022 15:26:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=33452485</link><dc:creator>afranchuk</dc:creator><comments>https://news.ycombinator.com/item?id=33452485</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33452485</guid></item><item><title><![CDATA[New comment by afranchuk in "Nushell: Introduction to a new kind of shell"]]></title><description><![CDATA[
<p>It doesn't seem so. While not immediately clear, this article doesn't seem to be claiming ownership of the project. It is a third-party review/introduction. They link to the project after the first section.</p>
]]></description><pubDate>Tue, 01 Nov 2022 12:49:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=33420439</link><dc:creator>afranchuk</dc:creator><comments>https://news.ycombinator.com/item?id=33420439</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33420439</guid></item><item><title><![CDATA[New comment by afranchuk in "A Review of the Odin Programming Language"]]></title><description><![CDATA[
<p>I think an interesting distinction is this: it's not that 90% of the typing you do is necessarily useless, it's that it's been done before. Copilot is, in a sense, drawing from a corpus of prior work. In that way you are kind of using it as if you found a published library for your more specific use cases. So it's allowing you to draw on prior work without necessarily having external packages split up with the granularity of many variations of functions (which, ideally, would allow you to pull in exactly what you need from prior work, but would certainly be onerous in practice).<p>That being said, I've never used Copilot myself, so I can't speak very confidently about it. But from what I've seen, it kind of allows you to incorporate every library that's ever been made open source into your project, but in a more granular fashion. Which naturally would save you some typing :)<p>P.S. I realize Copilot isn't necessarily copying other code verbatim, though I assume pretty often it basically ends up doing that, at least in pieces.</p>
]]></description><pubDate>Sun, 11 Sep 2022 17:05:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=32801300</link><dc:creator>afranchuk</dc:creator><comments>https://news.ycombinator.com/item?id=32801300</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32801300</guid></item><item><title><![CDATA[New comment by afranchuk in "Kamby – A programming language based on Lisp that doesn't seem like Lisp"]]></title><description><![CDATA[
<p>I think sweet-expressions[0] address this, though they haven't caught on much.<p>[0]: <a href="https://dwheeler.com/readable/readable-s-expressions.html" rel="nofollow">https://dwheeler.com/readable/readable-s-expressions.html</a></p>
]]></description><pubDate>Thu, 08 Sep 2022 12:02:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=32764284</link><dc:creator>afranchuk</dc:creator><comments>https://news.ycombinator.com/item?id=32764284</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32764284</guid></item><item><title><![CDATA[New comment by afranchuk in "Show HN: I built an interactive course that helps you learn Vim faster"]]></title><description><![CDATA[
<p>If I'm interpreting "cutting whole lines" correctly, in vim that's "dd" in normal mode. Then you can paste (put) with "p".<p>I agree discoverability is not great; to be honest I can't remember how I discovered the plethora of commands I use, though I do have a habit of reading the help a decent amount. That's how I discovered "g?" (Rot13) :D</p>
]]></description><pubDate>Sat, 09 Jul 2022 14:43:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=32035542</link><dc:creator>afranchuk</dc:creator><comments>https://news.ycombinator.com/item?id=32035542</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32035542</guid></item></channel></rss>