<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: anardil</title><link>https://news.ycombinator.com/user?id=anardil</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 28 Apr 2026 22:43:28 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=anardil" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by anardil in "Ask HN: Share your personal website"]]></title><description><![CDATA[
<p><a href="https://goto.anardil.net/" rel="nofollow">https://goto.anardil.net/</a> - Launchpad for all my other (16!) sites.<p>The main ones are:<p><a href="https://diving.anardil.net/" rel="nofollow">https://diving.anardil.net/</a> - Scuba diving picture gallery; organized by timeline, common name, taxonomy, and more<p><a href="https://dnd.anardil.net/" rel="nofollow">https://dnd.anardil.net/</a> - Artifacts from my groups' D&D games<p><a href="https://pirates.anardil.net/" rel="nofollow">https://pirates.anardil.net/</a> - Pirate insult generator<p><a href="https://alchemy.anardil.net/" rel="nofollow">https://alchemy.anardil.net/</a> - Morrowind (TES 3) alchemy calculator</p>
]]></description><pubDate>Wed, 14 Jan 2026 21:16:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=46623582</link><dc:creator>anardil</dc:creator><comments>https://news.ycombinator.com/item?id=46623582</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46623582</guid></item><item><title><![CDATA[New comment by anardil in "Unix core utilities implemented in Haskell"]]></title><description><![CDATA[
<p>I'll admit it's mostly this way because I thought <i>ExistentialQuantification</i> sounded cool and wanted to give a try with classes - this could definitely be tidied up</p>
]]></description><pubDate>Mon, 04 Nov 2024 20:01:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=42045476</link><dc:creator>anardil</dc:creator><comments>https://news.ycombinator.com/item?id=42045476</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42045476</guid></item><item><title><![CDATA[New comment by anardil in "Unix core utilities implemented in Haskell"]]></title><description><![CDATA[
<p>The rules were different in 2014 when I made my account! It's actually quite annoying because lots of 3rd party GitHub integrations puke immediately saying I have an invalid username.</p>
]]></description><pubDate>Sun, 03 Nov 2024 19:45:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=42035593</link><dc:creator>anardil</dc:creator><comments>https://news.ycombinator.com/item?id=42035593</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42035593</guid></item><item><title><![CDATA[New comment by anardil in "Unix core utilities implemented in Haskell"]]></title><description><![CDATA[
<p>Thank you for the suggestion, I'll give this a whirl! I've fussed around with `--ghc-options '-optl-static -fPIC'` and the like in years past without success.</p>
]]></description><pubDate>Sun, 03 Nov 2024 16:46:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=42034111</link><dc:creator>anardil</dc:creator><comments>https://news.ycombinator.com/item?id=42034111</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42034111</guid></item><item><title><![CDATA[New comment by anardil in "Unix core utilities implemented in Haskell"]]></title><description><![CDATA[
<p>You're right! Data.ByteString.Lazy is Word8 under the covers, so wide characters are truncated. tr takes a similar short cut. Swapping to Data.Text would fix that.<p>Where simplicity conflicted with compatibility, I've chosen the former so far. Targeting the BSD options and behavior is another example of that. The primary goal is to feel out the data flow for each utility, rather than dig into all the edges.</p>
]]></description><pubDate>Sun, 03 Nov 2024 16:27:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=42033961</link><dc:creator>anardil</dc:creator><comments>https://news.ycombinator.com/item?id=42033961</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42033961</guid></item><item><title><![CDATA[New comment by anardil in "Unix core utilities implemented in Haskell"]]></title><description><![CDATA[
<p>Definitely. Depending on how long you've spent staring at the contents of /bin/ and /usr/bin/ you'll notice there are definitely some array or matrix oriented utils (or options) missing like column.<p>cut comes to mind as a difficult one. In C, you can just hop around the char buffer[] and drop nulls in place for fields, etc before printing. You <i>could</i> go that way a Data.Array Char, but that's hard to justify as functional.</p>
]]></description><pubDate>Sun, 03 Nov 2024 16:14:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=42033871</link><dc:creator>anardil</dc:creator><comments>https://news.ycombinator.com/item?id=42033871</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42033871</guid></item><item><title><![CDATA[New comment by anardil in "Unix core utilities implemented in Haskell"]]></title><description><![CDATA[
<p>I'll have to give this a try, thank you for the suggestion!</p>
]]></description><pubDate>Sun, 03 Nov 2024 16:00:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=42033776</link><dc:creator>anardil</dc:creator><comments>https://news.ycombinator.com/item?id=42033776</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42033776</guid></item><item><title><![CDATA[New comment by anardil in "Unix core utilities implemented in Haskell"]]></title><description><![CDATA[
<p>It definitely has some sharp edges. One advantage is skipping computations (and the IO they'd need) that don't end up getting used, which let's you do some clever looking things/ ignore some details. That's hard to take advantage of in practice, I think.<p>The other advantage is just deferring IO. For instance in split or tee, you could decide that you need 500 output files and open all the handles together in order to pass them to another function that will consume them. I'd squint at someone who wrote `void process_fds(int fds[500]);`, but here it doesn't matter.</p>
]]></description><pubDate>Sun, 03 Nov 2024 16:00:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=42033774</link><dc:creator>anardil</dc:creator><comments>https://news.ycombinator.com/item?id=42033774</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42033774</guid></item><item><title><![CDATA[New comment by anardil in "Unix core utilities implemented in Haskell"]]></title><description><![CDATA[
<p>Thank you! This is one of my favorites. User declared variables are next on the todo list, when I get back to it.</p>
]]></description><pubDate>Sun, 03 Nov 2024 15:53:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=42033734</link><dc:creator>anardil</dc:creator><comments>https://news.ycombinator.com/item?id=42033734</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42033734</guid></item><item><title><![CDATA[New comment by anardil in "Unix core utilities implemented in Haskell"]]></title><description><![CDATA[
<p>Performance (execution, memory) is generally in the same ballpark as the BSD versions, with some caveats specific to utils that do lots of in place data manipulation.<p>cut comes to mind as an example, slicing and dicing lines into fields quickly without a ton of copies isn't easy. Using Streaming.ByteString generally makes a huge difference, but it's extremely difficult to use unless you get can your mind to meld with the types it wants. Picking it up again months later takes some serious effort.</p>
]]></description><pubDate>Sun, 03 Nov 2024 15:52:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=42033731</link><dc:creator>anardil</dc:creator><comments>https://news.ycombinator.com/item?id=42033731</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42033731</guid></item><item><title><![CDATA[New comment by anardil in "Unix core utilities implemented in Haskell"]]></title><description><![CDATA[
<p>Wow, hello! This is my repository. I'm happy to answer any questions.</p>
]]></description><pubDate>Sun, 03 Nov 2024 12:41:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=42032718</link><dc:creator>anardil</dc:creator><comments>https://news.ycombinator.com/item?id=42032718</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42032718</guid></item><item><title><![CDATA[Show HN: Configurable Pirate Insult Generator]]></title><description><![CDATA[
<p>Arr HN! I had a need for pirate themed insults for a D&D campaign last year and put together a generator using recursive templating. Generations are scored on a couple axes (vulgarity, viciousness, intelligence) so the output can be tailored to a particular situation. There isn't any AI at work here.<p>I have a new blog post with a lot more detail on how it works:<p><a href="https://www.anardil.net/2023/pirate-insults.html" rel="nofollow noreferrer">https://www.anardil.net/2023/pirate-insults.html</a></p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=36837205">https://news.ycombinator.com/item?id=36837205</a></p>
<p>Points: 3</p>
<p># Comments: 1</p>
]]></description><pubDate>Sun, 23 Jul 2023 16:56:57 +0000</pubDate><link>https://pirates.anardil.net/</link><dc:creator>anardil</dc:creator><comments>https://news.ycombinator.com/item?id=36837205</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36837205</guid></item><item><title><![CDATA[New comment by anardil in "Ask HN: Could you share your personal blog here?"]]></title><description><![CDATA[
<p><a href="https://anardil.net" rel="nofollow noreferrer">https://anardil.net</a><p>D&D, tech, and scuba diving!</p>
]]></description><pubDate>Tue, 04 Jul 2023 21:45:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=36592903</link><dc:creator>anardil</dc:creator><comments>https://news.ycombinator.com/item?id=36592903</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36592903</guid></item><item><title><![CDATA[New comment by anardil in "30 years of Brainfuck"]]></title><description><![CDATA[
<p>It's an interesting/challenging exercise to work through implementing some basic functions in BF, ie thinking only in loops.<p>I implemented an optimizing interpreter in Bash[1] on a plane ride, and it's still one of my favorite pet projects.<p>[1]: <a href="https://github.com/Gandalf-/BrainBash">https://github.com/Gandalf-/BrainBash</a></p>
]]></description><pubDate>Sat, 14 Jan 2023 23:28:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=34385153</link><dc:creator>anardil</dc:creator><comments>https://news.ycombinator.com/item?id=34385153</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34385153</guid></item><item><title><![CDATA[New comment by anardil in "Ask HN: Share your personal site"]]></title><description><![CDATA[
<p><a href="https://goto.anardil.net/" rel="nofollow">https://goto.anardil.net/</a> My root dashboard, links to all other sites!<p>Some interesting sub-sites<p><a href="https://www.anardil.net/" rel="nofollow">https://www.anardil.net/</a>       My blog on programming and CS projects<p><a href="https://diving.anardil.net/" rel="nofollow">https://diving.anardil.net/</a>    Scuba diving pictures + taxonomy + game<p><a href="https://timelapse.anardil.net/" rel="nofollow">https://timelapse.anardil.net/</a> Raspberry Pi timelapse videos since 2019<p><a href="https://sensors.anardil.net/" rel="nofollow">https://sensors.anardil.net/</a>   Raspberry Pi temperature sensor plotting</p>
]]></description><pubDate>Wed, 06 Apr 2022 23:05:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=30938556</link><dc:creator>anardil</dc:creator><comments>https://news.ycombinator.com/item?id=30938556</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30938556</guid></item><item><title><![CDATA[Exploring scuba diving pictures with Matplotlib]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.anardil.net/2022/exploring-diving-pictures-with-matplotlib.html">https://www.anardil.net/2022/exploring-diving-pictures-with-matplotlib.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=30140232">https://news.ycombinator.com/item?id=30140232</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 30 Jan 2022 19:25:43 +0000</pubDate><link>https://www.anardil.net/2022/exploring-diving-pictures-with-matplotlib.html</link><dc:creator>anardil</dc:creator><comments>https://news.ycombinator.com/item?id=30140232</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30140232</guid></item><item><title><![CDATA[New comment by anardil in "Ask HN: Recommended Domain Registrars?"]]></title><description><![CDATA[
<p>I can second this; I've been with them for 8 years without complaints and really appreciate the record detail masking for my .net domain</p>
]]></description><pubDate>Tue, 21 Dec 2021 06:10:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=29634512</link><dc:creator>anardil</dc:creator><comments>https://news.ycombinator.com/item?id=29634512</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29634512</guid></item><item><title><![CDATA[New comment by anardil in "Bash functions are better than I thought"]]></title><description><![CDATA[
<p>You can take this even further by rewriting bash functions at runtime if you like. `declare` gives you direct access to the function body<p><a href="https://www.anardil.net/2018/dynamic-shell-scripting.html" rel="nofollow">https://www.anardil.net/2018/dynamic-shell-scripting.html</a> (self plug)</p>
]]></description><pubDate>Sun, 31 Oct 2021 20:32:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=29060130</link><dc:creator>anardil</dc:creator><comments>https://news.ycombinator.com/item?id=29060130</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29060130</guid></item><item><title><![CDATA[New comment by anardil in "Web page that crashes the Chrome renderer"]]></title><description><![CDATA[
<p>Strange that IE can handle it, no console errors or warnings. The head and body tags are empty on the page, so a blank render is expected</p>
]]></description><pubDate>Sun, 25 Apr 2021 02:46:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=26929959</link><dc:creator>anardil</dc:creator><comments>https://news.ycombinator.com/item?id=26929959</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26929959</guid></item><item><title><![CDATA[New comment by anardil in "Show HN: Pacific Northwest Diving Gallery"]]></title><description><![CDATA[
<p>All the source is here - <a href="https://public.anardil.net/code/diving/" rel="nofollow">https://public.anardil.net/code/diving/</a><p>The site is completely static, served from a Nginx reverse proxy to Digital Ocean Spaces</p>
]]></description><pubDate>Thu, 01 Apr 2021 15:57:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=26662204</link><dc:creator>anardil</dc:creator><comments>https://news.ycombinator.com/item?id=26662204</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26662204</guid></item></channel></rss>