<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: dwheeler</title><link>https://news.ycombinator.com/user?id=dwheeler</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 18 Oct 2026 02:21:08 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=dwheeler" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by dwheeler in "The Commodore 64 hardware simulator: break chips and pins, see the results"]]></title><description><![CDATA[
<p>Amazing. Sadly, it can't run in real time even on strong real hardware. I wonder if its code could be optimized to run in real time?</p>
]]></description><pubDate>Sat, 17 Oct 2026 18:13:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=50133543</link><dc:creator>dwheeler</dc:creator><comments>https://news.ycombinator.com/item?id=50133543</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50133543</guid></item><item><title><![CDATA[New comment by dwheeler in "California is chasing wealth that has feet"]]></title><description><![CDATA[
<p>> Burning down an apartment building doesn't change what could be done with the lot; an appropriate valuation method for LVT would not give a different valuation for the land depending on what is built on it.<p>True, but an LVT is a cost. Changes in cost can change what is financially viable to do with a property, regardless of what is <i>currently</i> done with the lot, and thus can impact the land value.</p>
]]></description><pubDate>Fri, 25 Sep 2026 00:39:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=49838766</link><dc:creator>dwheeler</dc:creator><comments>https://news.ycombinator.com/item?id=49838766</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49838766</guid></item><item><title><![CDATA[New comment by dwheeler in "California is chasing wealth that has feet"]]></title><description><![CDATA[
<p>I actually think there's a lot of positives in land value taxes. However, I was objecting to the phrase "The land value tax can’t be dodged by leaving nor can it be passed on to renters" because that is missing key issues.<p>Land's assessed value is based on what you <i>could</i> do with it. If can be rented at a profit, that's something you can do with it, and its potential matters. If it can't, then that is no longer a potential value of it.<p>That doesn't make lvt a bad idea, it's just that I think there's not enough acknowledgement of the trade-offs and limitations.</p>
]]></description><pubDate>Thu, 24 Sep 2026 22:55:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=49837903</link><dc:creator>dwheeler</dc:creator><comments>https://news.ycombinator.com/item?id=49837903</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49837903</guid></item><item><title><![CDATA[New comment by dwheeler in "California is chasing wealth that has feet"]]></title><description><![CDATA[
<p>That cost will, of course, be passed on to renters unless the rental prices cannot be raised at all.<p>If they can't be raised, and the costs end up being ruinous to the landlords, they will find other solutions like mass arson. That isn't hyperbole; this was a serious problem in the 1970s:
<a href="https://en.wikipedia.org/wiki/1970s_South_Bronx_building_fires" rel="nofollow">https://en.wikipedia.org/wiki/1970s_South_Bronx_building_fir...</a><p>That was obviously not acceptable... but it was predictable.<p>All legal proposals should be viewed like a chess move. Presume others will respond, and make sure you're ok with that response. In a sense that's also the point of the original article too, a law was passed without adequqtely thinking through what would happen.</p>
]]></description><pubDate>Thu, 24 Sep 2026 22:29:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=49837627</link><dc:creator>dwheeler</dc:creator><comments>https://news.ycombinator.com/item?id=49837627</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49837627</guid></item><item><title><![CDATA[New comment by dwheeler in "Will Open Source Survive the Agents That Replaced It?"]]></title><description><![CDATA[
<p>False premise. AIs dont generate anything in 30 seconds that has been widely reviewed and tested.<p>If you want it to be corrrct, it's always easier to install some existing OSS and instead focus on whatever is unique to you.</p>
]]></description><pubDate>Tue, 22 Sep 2026 13:16:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=49800786</link><dc:creator>dwheeler</dc:creator><comments>https://news.ycombinator.com/item?id=49800786</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49800786</guid></item><item><title><![CDATA[New comment by dwheeler in "More Than a Gigabuck: Estimating GNU/Linux's Size (2001)"]]></title><description><![CDATA[
<p>> COCOMO says that the cost scales superlinearly with the number of SLoC; my point is that drivers scale linearly because they're effectively separate projects. (In fact, to the extent that they're not separate projects, the cost in fact scales sublinearly since there's a bunch of code being copied and pasted when new drivers are written.) Your tool has this "--multiproject" concept; a better estimate would have identified which parts of the tree (primarily drivers) were functionally separate from the rest of the kernel.<p>If all drivers were essentially completely independent projects that never interacted with each others, then yes, I'd agree that multiproject would be a better model. And if each was mainly a copy-and-paste of another, then it'd <i>definitely</i> be sublinear.<p>However, I have a very different expectation. In the Linux kernel, there's a strong pressure to try to create common interfaces that different drivers support. There's also pressure to create common lower-level functions that everyone can call. This reduces total code and reduces long-term maintenance, but ends up creating more interlinkages because the drivers are NOT really isolated separate projects at all. Maybe the drivers <i>start</i> somewhat independent, though I'm skeptical of even that, but I think that's not at all where they stay.<p>Let's get specific. The Linux kernel groups similar hardware into distinct subsystems. This includes networking, input subsystem (keyboards/mice/etc.), ALSA (sound), V4L2 (webcams/video capture cards), and GPIO.<p>Each subsystem defines a unified programming interface using standard data structures and callback functions. Drivers are typically split into a core framework that handles general logic and low-level portions. Driver developers plug into the existing framework for common features like power management and buffering. These interfaces often change as new drivers are created that require changes to the interface.<p>Because in <i>practice</i> there's a lot of interaction among drivers, I would <i>not</i> expect that, after years of driver development, the different drivers would really be independent. Indeed, many have asked the Linux kernel developers to make it easy to have completely separate and isolated drivers, but the developers have resisted because they believe it's important to have the drivers <i>integrated</i> into the kernel to support that kind of constant collaboration between drivers.<p>It'd be cool to see an analysis to settle the question. Future research for someone else I suppose :-).</p>
]]></description><pubDate>Mon, 21 Sep 2026 03:00:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=49782570</link><dc:creator>dwheeler</dc:creator><comments>https://news.ycombinator.com/item?id=49782570</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49782570</guid></item><item><title><![CDATA[New comment by dwheeler in "More Than a Gigabuck: Estimating GNU/Linux's Size (2001)"]]></title><description><![CDATA[
<p>> I'm not convinced. The core OS kernel code, sure; but more than half of the Linux kernel is drivers ...<p>I agree that more than half of the Linux kernel is drivers. In fact, in my analysis of Red Hat 7.1 at <a href="https://dwheeler.com/sloc/redhat71-v1/redhat71sloc.html" rel="nofollow">https://dwheeler.com/sloc/redhat71-v1/redhat71sloc.html</a> I found that 57% of the Linux kernel was in the drivers subdirectory. Obviously that varies over time. So I <i>completely</i> agree with that part!<p>> and those are not just applications but separate applications; a change in an Intel wifi driver is unlikely to interact in any way with the nvme driver.<p>They aren't really <i>separate</i> applications, though. More importantly, that's not the primary effort (and cost) driver for this effort estimation model. I used the COCOMO model, an effort estimation model that was publicly available and widely used at the time. I then applied its rules to the Linux kernel of that time, as best I could. I discussed every parameter I set, and why, here: <a href="https://dwheeler.com/essays/linux-kernel-cost.html" rel="nofollow">https://dwheeler.com/essays/linux-kernel-cost.html</a><p>Here are some of the reasons why kernel code takes more effort, per the model:<p>* It inherits some of the general challenges of writing embedded software. There's very little in the way of a safety net (this <i>is</i> the safety net), and it's closer to the bare metal. You're writing in C (or later in Rust), not a language that shields you from many challenges. In COCOMO parlence this code is "semidetached".<p>* RELY: Required software reliability: High (1.15). The Linux kernel developers care a lot about reliability, which takes longer.<p>* CPLX: Product complexity: Extra high (1.65). "The kernel must perform multiple resource handling with dynamically changing priorities: multiple processes/tasks running on potentially multiple processors, with multiple kinds of memory, accessing peripherals which also have various dynamic priorities. The kernel must deal with device timing-dependent coding, and with highly coupled dynamic data structures (some of whose structure is imposed by hardware). In addition, it implements routines for interrupt servicing and masking, as well as multi-processor threading and load balancing. And yes, that includes drivers; drivers must handle threading and other challenges that "normal" code doesn't, because the driver code <i>is</i> where those complexities are handled."<p>* TIME: Execution time constraint: High (1.11). "Although it doesn’t need to stay at less than 70% resource use, performance is an important design criteria, and much effort has been spent on measuring and improving performance."<p>* VIRT: Virtual machine volatility: High (1.15). "The most common processor (x86) doesn’t change that quickly, though new releases by Intel and AMD do need to be taken into account [but] the other components of underlying machines (such as motherboards, peripheral and bus interfaces, etc.) change on a weekly basis. Often the documentation is unavailable, and when available, it’s sometimes wrong (which from a developer’s point of view looks like a volatile interface, since it keeps changing). The Linux kernel developers spend a vast amount of time identifying hardware limitations/problems and working around them. What’s worse, there’s a variety of different hardware, and new ones keep arriving... the interface of the underlying machine is actually quite volatile."<p>Not every factor makes things worse. The people analyzing it (ACAP) and developing the code (PCAP) are unusually capable, with high experience in the programming language (LEXP) and modern development practices (MODP). But these only partly compensate for the fundamental challenge of writing highly performant kernel code.<p>Anyway, that's my rationale. I did this back in 2004, so I was necessarily using data and models available at the time. Most importantly, I think its key point was absolutely correct: it would have cost <i>far</i> more than $50,000 USD to re-develop the Linux kernel of that time.</p>
]]></description><pubDate>Sun, 20 Sep 2026 21:52:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=49780473</link><dc:creator>dwheeler</dc:creator><comments>https://news.ycombinator.com/item?id=49780473</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49780473</guid></item><item><title><![CDATA[New comment by dwheeler in "More Than a Gigabuck: Estimating GNU/Linux's Size (2001)"]]></title><description><![CDATA[
<p>No specific number; getting one would require actual analysis.<p>But I expect it would easily be in the trillions, and probably over 10 trillion.</p>
]]></description><pubDate>Sun, 20 Sep 2026 21:20:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=49780187</link><dc:creator>dwheeler</dc:creator><comments>https://news.ycombinator.com/item?id=49780187</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49780187</guid></item><item><title><![CDATA[New comment by dwheeler in "More Than a Gigabuck: Estimating GNU/Linux's Size (2001)"]]></title><description><![CDATA[
<p>> Also, this pinged a few neurons deep in my memory, so I found what it made me remember. Back in 2004, some random named Jeff V. Merkey tried to buy a special license to the then-current kernel for $50,000.00:<p>> <a href="https://dwheeler.com/essays/linux-kernel-cost.html" rel="nofollow">https://dwheeler.com/essays/linux-kernel-cost.html</a><p>> In response, Molnar did some quick sloccount math and estimated the kernel as being worth $175,974,824 at that time.<p>Absolutely.<p>Just to clarify: Molnar <i>first</i> did the quick sloccount math and estimated $176 million USD. However, Molnar used the estimation values appropriate for an <i>application</i>.<p>But in fact, operating systems kernels are known to be more difficult to develop than typical applications. So I used the same approach but refined it to use parameters appropriate for a <i>kernel</i>. The article <a href="https://dwheeler.com/essays/linux-kernel-cost.html" rel="nofollow">https://dwheeler.com/essays/linux-kernel-cost.html</a> is really a response to Molnar's work; he did a rough estimate, I did a slightly-more-refined estimate. Those additional tweaks resulted in a higher redevelopment cost of $612 million (USD). Which gave the $50,000 offer an even bigger contrast.<p>The real point was that, even if it would have been <i>possible</i> accept $50K, it was absurdly low. You could argue about the estimate for a factor of 2, or 10, or even 100, and it still wouldn't change anything. Merkey was free to lowball a proposal, but that doesn't mean it should be accepted :-).<p>There was a 2004 article about this in LWN.net. LWN.net, and many others, don't see how such an offer could have been legally enforcible anyway, since you'd have to get the agreement of all the kernel contributors: <a href="https://lwn.net/Articles/106353/" rel="nofollow">https://lwn.net/Articles/106353/</a><p>To me, the kernel offer was more of an opportunity to find a way to measure the size of a kernel in a way that matters to people. Lines of code, or bytes on disk, don't really mean much to most people. Money... does :-).</p>
]]></description><pubDate>Sun, 20 Sep 2026 19:21:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=49779090</link><dc:creator>dwheeler</dc:creator><comments>https://news.ycombinator.com/item?id=49779090</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49779090</guid></item><item><title><![CDATA[New comment by dwheeler in "More Than a Gigabuck: Estimating GNU/Linux's Size (2001)"]]></title><description><![CDATA[
<p>> I consider this a simplistic analysis, because a closed-source Linux with a straightforward monetary pricetag would be worth a lot less in practice, since it would cease to be the de-facto OS for pretty much all new hardware products.<p>It's necessarily an estimate, of course. The best way to get effort figures would be to record every minute used for development, and the best way to get cost figures would be to re-develop from scratch. That wasn't practical, so using a widely-accepted estimation system seemed like a reasonable approach.<p>It's true that this analysis doesn't tell you the purchase price. However, I wasn't trying to estimate the purchase price. I was trying to estimate the <i>cost to develop</i> the software, <i>if</i> it had been developed using traditional closed source practices. If Linux had been developed by a for-profit organization to make a profit, the organization would have planned on charging <i>more</i> that that (in aggregate among all its users), since otherwise they'd be knowingly developing the software at a loss. That doesn't mean that the company actually could have <i>charged</i> this, as it often happens that products don't make a profit, but that's different from intent. And this is all different from <i>value</i>. If a product has value to you that's more than it costs to get, then economically you should consider getting it.<p>No matter what, these time and money figures can only be rough estimates. However, I think they were useful, because they destroyed a false assumption many had at the time.<p>In the 1980s and 1990s many people presumed that large-scale systems could <i>NOT</i> be developed as open source software. People did sometimes share software, but it was widely assumed that this could only be successful for small programs.  The term "open source software" didn't even exist until 1998. The term "free software" was coined in the early 1980s, so that definitely was a discussion point. However, many people didn't think you could build larger systems with software licensed that way.<p>Bill Gates published in 1976 his "Open Letter to Hobbyists" that crystallized this argument. He claimed that if software was freely shared it would prevent the writing of good software. He basically argued that closed source software development (not a term of the time) was necessary.<p>The point of my paper was to show that it <i>was</i> possible to build larger software systems without being closed source software. Even at the time, people were being paid to develop some of that software, but the point was that sharing of software under a generous license did not end software development at all. I think my paper did the job. You can argue many things, but no one argues that open source software cannot be used to build big systems. We have existing systems, measureably large, that refute the claim.<p>Thanks for the trip down memory lane.</p>
]]></description><pubDate>Sun, 20 Sep 2026 19:13:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=49778981</link><dc:creator>dwheeler</dc:creator><comments>https://news.ycombinator.com/item?id=49778981</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49778981</guid></item><item><title><![CDATA[New comment by dwheeler in "More Than a Gigabuck: Estimating GNU/Linux's Size (2001)"]]></title><description><![CDATA[
<p>Author here! I was surprised to see this on hacker news, it's a blast from the past.<p>Ask me anything!</p>
]]></description><pubDate>Sun, 20 Sep 2026 18:08:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=49778328</link><dc:creator>dwheeler</dc:creator><comments>https://news.ycombinator.com/item?id=49778328</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49778328</guid></item><item><title><![CDATA[New comment by dwheeler in "Fermat's Last Theorem in Lean 4"]]></title><description><![CDATA[
<p>Metamath is short, which does make it easier to verify. In addition, because it's simple, there are many implementions. The set.mm Metamath database, the most popular, is checked by 5 independently implemented proof verifiers.</p>
]]></description><pubDate>Sat, 05 Sep 2026 12:41:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=49575986</link><dc:creator>dwheeler</dc:creator><comments>https://news.ycombinator.com/item?id=49575986</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49575986</guid></item><item><title><![CDATA[New comment by dwheeler in "Palomar: A registry of Lean verified mathematics"]]></title><description><![CDATA[
<p>Very cool. The metamath community tends to centralize results, so its equivalent is simply:<p><a href="https://us.metamath.org/" rel="nofollow">https://us.metamath.org/</a></p>
]]></description><pubDate>Wed, 19 Aug 2026 05:23:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=49357206</link><dc:creator>dwheeler</dc:creator><comments>https://news.ycombinator.com/item?id=49357206</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49357206</guid></item><item><title><![CDATA[New comment by dwheeler in "Engineers will do anything to avoid learning from history"]]></title><description><![CDATA[
<p>Most HUMANS will do anything to avoid learning from history. Engineers are merely an example. Sigh.</p>
]]></description><pubDate>Sat, 15 Aug 2026 23:49:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=49315425</link><dc:creator>dwheeler</dc:creator><comments>https://news.ycombinator.com/item?id=49315425</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49315425</guid></item><item><title><![CDATA[New comment by dwheeler in "I stopped trusting USB-C cable labels and started testing them"]]></title><description><![CDATA[
<p>Yes, there's even a spec here: <a href="https://www.usb.org/sites/default/files/usb_type-c_cable_logo_usage_guidelines_20240903.pdf" rel="nofollow">https://www.usb.org/sites/default/files/usb_type-c_cable_log...</a><p>The cables are <i>supposed</i> to be labelled with their maximum speed (5, 10, 20, 40, or 80 Gbps or nothing if no data) and maximum wattage (60W or 240W).<p>HOWEVER, I don't remember ever <i>seeing</i> a cable with such a label. I'm sure they exist, but I don't see them. Requiring products to be labelled, and treating mislabelling as fraud, could mostly solve this. It's definitely a real problem.</p>
]]></description><pubDate>Thu, 06 Aug 2026 23:55:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=49204275</link><dc:creator>dwheeler</dc:creator><comments>https://news.ycombinator.com/item?id=49204275</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49204275</guid></item><item><title><![CDATA[New comment by dwheeler in "Are We Stuck with Lean?"]]></title><description><![CDATA[
<p>Metamath contributor here! Each proving tool has its pros and cons, but always happy to see Metamath noted :-).<p>One thing that's cool about Metamath is that the axioms are <i>not</i> built-in. It's true that the most-used system is based on classical logic and ZFC set theory <a href="https://us.metamath.org/mpeuni/mmset.html" rel="nofollow">https://us.metamath.org/mpeuni/mmset.html</a> ... but you don't <i>have</i> to use that system. There's a well-maintained database using intuitionistic logic: <a href="https://us.metamath.org/ileuni/mmil.html" rel="nofollow">https://us.metamath.org/ileuni/mmil.html</a> ; on the so-called "New Foundations" (a many-sorted system): <a href="https://us.metamath.org/nfeuni/mmnf.html" rel="nofollow">https://us.metamath.org/nfeuni/mmnf.html</a> ; on HOL <a href="https://us.metamath.org/holuni/mmhol.html" rel="nofollow">https://us.metamath.org/holuni/mmhol.html</a> ; and you can make your own if you want to.<p>In Metamath the proofs hide <i>absolutely</i> nothing. There's no hand-waving "it's obvious that". Every step in a proof must be rigorously and directly proven by some axiom or a previously-proven theorem with <i>absolutely</i> no exceptions. This also means that while <i>finding</i> proofs can be hard, <i>verifying</i> proofs is <i>fast</i>. I just ran a proof verification run of over 47,000 theorems in 6.35 seconds. In the Metamath Proof Explorer / set.mm database (the one with classical logic and ZFC), we routinely run <i>multiple</i> provers by different people on <i>every</i> proposed change. So not only is the kernel small, it's implemented by multiple different programs, making it <i>extremely</i> unlikely we'll accept an invalid proof.<p>This video I made years ago summarizes Metamath: <a href="https://www.youtube.com/watch?v=8WH4Rd4UKGE" rel="nofollow">https://www.youtube.com/watch?v=8WH4Rd4UKGE</a></p>
]]></description><pubDate>Thu, 30 Jul 2026 14:22:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=49110439</link><dc:creator>dwheeler</dc:creator><comments>https://news.ycombinator.com/item?id=49110439</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49110439</guid></item><item><title><![CDATA[New comment by dwheeler in "The Difference Between a Button and a Link"]]></title><description><![CDATA[
<p>I love this, and more generally the Triptych Project. We shouldn't need to use JavaScript to work around important limitations in HTML that are widely needed.</p>
]]></description><pubDate>Wed, 29 Jul 2026 01:32:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=49092357</link><dc:creator>dwheeler</dc:creator><comments>https://news.ycombinator.com/item?id=49092357</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49092357</guid></item><item><title><![CDATA[New comment by dwheeler in "Forth"]]></title><description><![CDATA[
<p>That beautiful is.</p>
]]></description><pubDate>Mon, 27 Jul 2026 22:18:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=49076187</link><dc:creator>dwheeler</dc:creator><comments>https://news.ycombinator.com/item?id=49076187</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49076187</guid></item><item><title><![CDATA[New comment by dwheeler in "Passkeys were invented by engineers with zero understanding of consumer brain"]]></title><description><![CDATA[
<p>Wait a sec. My understanding is that passkeys <i>are</i> public/private keypairs. Public is in server, so even breaking into a server does not reveal the private key.<p>The big risk with passkeys is storing the passkey where it will be held hostage. Don't store it in most single-ecosystem devices like Apple. Bitwarden can export, and I think 1Password can as well.</p>
]]></description><pubDate>Wed, 22 Jul 2026 16:54:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=49009773</link><dc:creator>dwheeler</dc:creator><comments>https://news.ycombinator.com/item?id=49009773</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49009773</guid></item><item><title><![CDATA[New comment by dwheeler in "AttoChess, a complete, playable chess program for 16-bit x86 DOS in 278 bytes"]]></title><description><![CDATA[
<p>Impressive, but no castling or en passent, so it's not really chess.</p>
]]></description><pubDate>Thu, 16 Jul 2026 20:38:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=48939893</link><dc:creator>dwheeler</dc:creator><comments>https://news.ycombinator.com/item?id=48939893</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48939893</guid></item></channel></rss>