<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: wmanley</title><link>https://news.ycombinator.com/user?id=wmanley</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 28 Apr 2026 19:41:05 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=wmanley" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by wmanley in "Do you even need a database?"]]></title><description><![CDATA[
<p>SQLite in mmap mode (not the default) will use mmap for reading.  It will still use write using `pwrite` so it can detect and recover from write failures.<p>See <a href="https://www.sqlite.org/mmap.html" rel="nofollow">https://www.sqlite.org/mmap.html</a> :<p>> The default mechanism by which SQLite accesses and updates database disk files is the xRead() and xWrite() methods of the sqlite3_io_methods VFS object. These methods are typically implemented as "read()" and "write()" system calls which cause the operating system to copy disk content between the kernel buffer cache and user space.<p>> Beginning with version 3.7.17 (2013-05-20), SQLite has the option of accessing disk content directly using memory-mapped I/O and the new xFetch() and xUnfetch() methods on sqlite3_io_methods.<p>The principal advantage to mmap in my mind is that the cache is shared among your SQLite connections.</p>
]]></description><pubDate>Thu, 16 Apr 2026 14:14:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=47793289</link><dc:creator>wmanley</dc:creator><comments>https://news.ycombinator.com/item?id=47793289</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47793289</guid></item><item><title><![CDATA[New comment by wmanley in "Do you even need a database?"]]></title><description><![CDATA[
<p>Business logic tests will rarely test what happens to your data if a machine loses power.</p>
]]></description><pubDate>Wed, 15 Apr 2026 15:45:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=47780736</link><dc:creator>wmanley</dc:creator><comments>https://news.ycombinator.com/item?id=47780736</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47780736</guid></item><item><title><![CDATA[New comment by wmanley in "What does " 2>&1 " mean?"]]></title><description><![CDATA[
<p>It's a shame that unix tools don't support file descriptors better.  The ability to pass a file (or stream, or socket etc) directly into a process is so powerful, but few commands actually support being used this way and require filenames (or hostnames, etc) instead.  Shell is so limited in this regard too.<p>It would be great to be able to open a socket in bash[^1] and pass it to another program to read/write from without having an extra socat process and pipes running (and the buffering, odd flush behaviour, etc.).  It would be great if programs expected to receive input file arguments as open fds, rather than providing filenames and having the process open them itself.  Sandboxing would be trivial, as would understanding the inputs and outputs of any program.<p>It's frustrating to me because the underlying unix system supports this so well, it's just the conventions of userspace that get in the way.<p>[^1]: I know about /dev/tcp, but it's very limited.</p>
]]></description><pubDate>Fri, 27 Feb 2026 13:28:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=47180286</link><dc:creator>wmanley</dc:creator><comments>https://news.ycombinator.com/item?id=47180286</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47180286</guid></item><item><title><![CDATA[New comment by wmanley in "America vs. Singapore: You can't save your way out of economic shocks"]]></title><description><![CDATA[
<p>US borders are awful. I guess you get away with it because the USA is so large that most people rarely leave, so rarely have to experience it.</p>
]]></description><pubDate>Thu, 19 Feb 2026 23:56:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=47081605</link><dc:creator>wmanley</dc:creator><comments>https://news.ycombinator.com/item?id=47081605</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47081605</guid></item><item><title><![CDATA[New comment by wmanley in "The state of the kernel Rust experiment"]]></title><description><![CDATA[
<p>I guess that means you're using the colloquial meaning of the word safety/unsafe rather than the rust definition.  It's worth being explicit about that (or choosing a different word) in these discussions to prevent confusion.<p>For Rust safety (meaning no UB) most definitely is a property of the language.  If a module does not contain unsafe and the modules it uses that do contain unsafe are implemented soundly then there is no UB.<p>In C UB is a part of the language.</p>
]]></description><pubDate>Fri, 19 Dec 2025 13:16:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=46325476</link><dc:creator>wmanley</dc:creator><comments>https://news.ycombinator.com/item?id=46325476</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46325476</guid></item><item><title><![CDATA[New comment by wmanley in "The state of the kernel Rust experiment"]]></title><description><![CDATA[
<p>> in C only specific language features are unsafe and not all code<p>Using rust's definition of unsafe which is roughly "can cause undefined behaviour" then it seems to me isolating use of these features isn't possible.  What is C without:<p>* Dereferencing pointers
* Array access
* Incrementing signed integers<p>You can do all of the above without invoking UB, but you can't separate the features in C that can cause UB from the ones that can't.</p>
]]></description><pubDate>Fri, 19 Dec 2025 11:23:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=46324592</link><dc:creator>wmanley</dc:creator><comments>https://news.ycombinator.com/item?id=46324592</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46324592</guid></item><item><title><![CDATA[New comment by wmanley in "100k TPS over a billion rows: the unreasonable effectiveness of SQLite"]]></title><description><![CDATA[
<p>Use a connection per-thread instead. By sharing a connection across threads you’ll be limiting concurrency - and transactions won’t work as you’d expect. SQLite connections are not heavy.<p>Also: use WAL mode and enable mmap.</p>
]]></description><pubDate>Tue, 02 Dec 2025 19:38:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=46125686</link><dc:creator>wmanley</dc:creator><comments>https://news.ycombinator.com/item?id=46125686</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46125686</guid></item><item><title><![CDATA[New comment by wmanley in "Migrating the main Zig repository from GitHub to Codeberg"]]></title><description><![CDATA[
<p>Retries won’t work in that case. Would be better to have two endpoints: get the time in x seconds and wait until time passed. That way retrying the wait endpoint will work fine and if time hasn’t elapsed it can just curl itself with the same arguments.</p>
]]></description><pubDate>Thu, 27 Nov 2025 07:41:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=46066755</link><dc:creator>wmanley</dc:creator><comments>https://news.ycombinator.com/item?id=46066755</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46066755</guid></item><item><title><![CDATA[New comment by wmanley in "Drawing Text Isn't Simple: Benchmarking Console vs. Graphical Rendering"]]></title><description><![CDATA[
<p>No, actually the biggest difference is removing the `filter` property from the `.wave2` class which is used for rendering the background.  With that removed the page is responsive even with the backdrop-filter - and it makes no visual difference AFAICS.</p>
]]></description><pubDate>Wed, 12 Nov 2025 11:03:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=45898710</link><dc:creator>wmanley</dc:creator><comments>https://news.ycombinator.com/item?id=45898710</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45898710</guid></item><item><title><![CDATA[New comment by wmanley in "Drawing Text Isn't Simple: Benchmarking Console vs. Graphical Rendering"]]></title><description><![CDATA[
<p>It's also perfectly responsive if you disable JavaScript.  Maybe something related to the --positionX and --positionY CSS variables that are updated on every mouse move?</p>
]]></description><pubDate>Wed, 12 Nov 2025 09:56:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=45898302</link><dc:creator>wmanley</dc:creator><comments>https://news.ycombinator.com/item?id=45898302</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45898302</guid></item><item><title><![CDATA[New comment by wmanley in "Laptops with Stickers"]]></title><description><![CDATA[
<p>What stickers did you used to have? I'm always fascinated with how people change their mind.</p>
]]></description><pubDate>Wed, 12 Nov 2025 09:53:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=45898270</link><dc:creator>wmanley</dc:creator><comments>https://news.ycombinator.com/item?id=45898270</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45898270</guid></item><item><title><![CDATA[New comment by wmanley in "Drawing Text Isn't Simple: Benchmarking Console vs. Graphical Rendering"]]></title><description><![CDATA[
<p>Looks like it's caused by `backdrop-filter: blur(6px);` on `.menu-content`. After disabling that it's slow, but not <i>that</i> slow.<p>Edit: This is with Firefox 144 on Ubuntu 22.04</p>
]]></description><pubDate>Tue, 11 Nov 2025 17:13:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=45889990</link><dc:creator>wmanley</dc:creator><comments>https://news.ycombinator.com/item?id=45889990</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45889990</guid></item><item><title><![CDATA[New comment by wmanley in "The future of Python web services looks GIL-free"]]></title><description><![CDATA[
<p>Even with volatile it’s a load and then a store no? It may not be undefined behaviour, but I don’t think it will be atomic.</p>
]]></description><pubDate>Sat, 25 Oct 2025 22:50:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=45707597</link><dc:creator>wmanley</dc:creator><comments>https://news.ycombinator.com/item?id=45707597</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45707597</guid></item><item><title><![CDATA[New comment by wmanley in "Keeping SSH sessions alive with systemd-inhibit"]]></title><description><![CDATA[
<p>> SSH is a "legacy protocol" and its users are "uneducated troglodytes",<p>Who are you quoting here?</p>
]]></description><pubDate>Thu, 18 Sep 2025 13:43:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=45289613</link><dc:creator>wmanley</dc:creator><comments>https://news.ycombinator.com/item?id=45289613</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45289613</guid></item><item><title><![CDATA[New comment by wmanley in "Just Use HTML"]]></title><description><![CDATA[
<p>With jinja you’d use template inheritance and just update the base template for this:<p><a href="https://jinja.palletsprojects.com/en/stable/templates/#template-inheritance" rel="nofollow">https://jinja.palletsprojects.com/en/stable/templates/#templ...</a></p>
]]></description><pubDate>Tue, 16 Sep 2025 19:46:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=45267040</link><dc:creator>wmanley</dc:creator><comments>https://news.ycombinator.com/item?id=45267040</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45267040</guid></item><item><title><![CDATA[New comment by wmanley in "Next.js is infuriating"]]></title><description><![CDATA[
<p>And also:<p>> and so have 4 different libraries they rely on<p>HTMX has no dependencies. <a href="https://htmx.org/essays/vendoring/" rel="nofollow">https://htmx.org/essays/vendoring/</a><p>> and actually the most up to date version of two libraries you rely on are not interoperable right now because they depend on different node versions<p>HTMX has no build step. <a href="https://htmx.org/essays/no-build-step/" rel="nofollow">https://htmx.org/essays/no-build-step/</a></p>
]]></description><pubDate>Tue, 02 Sep 2025 15:17:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=45104201</link><dc:creator>wmanley</dc:creator><comments>https://news.ycombinator.com/item?id=45104201</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45104201</guid></item><item><title><![CDATA[New comment by wmanley in "Unexpected productivity boost of Rust"]]></title><description><![CDATA[
<p>> Its always funny when i see these kinds of posts.<p>What's funny about it?</p>
]]></description><pubDate>Thu, 28 Aug 2025 16:02:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=45053842</link><dc:creator>wmanley</dc:creator><comments>https://news.ycombinator.com/item?id=45053842</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45053842</guid></item><item><title><![CDATA[New comment by wmanley in "Object-oriented design patterns in C and kernel development"]]></title><description><![CDATA[
<p>It’s not about ‘this’ being a global, it’s if you see ‘i++’ in code it’s not obvious if ‘i’ is a member or not without having to check context.</p>
]]></description><pubDate>Wed, 27 Aug 2025 17:14:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=45042336</link><dc:creator>wmanley</dc:creator><comments>https://news.ycombinator.com/item?id=45042336</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45042336</guid></item><item><title><![CDATA[New comment by wmanley in "Will Smith's concert crowds are real, but AI is blurring the lines"]]></title><description><![CDATA[
<p>People over 35 are the people with money.  I can't imagine a bunch of 16 year olds paying £300 to go and see Oasis in the 90s, but those 16 year olds are now in their 40s and now have money and an opportunity to live their adolescent dream.</p>
]]></description><pubDate>Tue, 26 Aug 2025 14:21:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=45026957</link><dc:creator>wmanley</dc:creator><comments>https://news.ycombinator.com/item?id=45026957</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45026957</guid></item><item><title><![CDATA[New comment by wmanley in "Prime Number Grid"]]></title><description><![CDATA[
<p>Scaling is already supported - try Ctrl+Mouse Wheel or pinch to zoom on mobile.  It also supports writing an image with the keyboard shortcut "Print Screen".</p>
]]></description><pubDate>Tue, 19 Aug 2025 10:11:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=44950008</link><dc:creator>wmanley</dc:creator><comments>https://news.ycombinator.com/item?id=44950008</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44950008</guid></item></channel></rss>