<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: less_less</title><link>https://news.ycombinator.com/user?id=less_less</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 23 Apr 2026 10:27:39 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=less_less" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by less_less in "All phones sold in the EU to have replaceable batteries from 2027"]]></title><description><![CDATA[
<p>I'm pretty the spec sheet claimed 1000 cycles when I bought my iPhone 17.<p>They do claim it at least for iPhone 15 "under ideal conditions": <a href="https://support.apple.com/en-us/101575" rel="nofollow">https://support.apple.com/en-us/101575</a></p>
]]></description><pubDate>Mon, 20 Apr 2026 15:27:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=47835733</link><dc:creator>less_less</dc:creator><comments>https://news.ycombinator.com/item?id=47835733</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47835733</guid></item><item><title><![CDATA[New comment by less_less in "Deterministic Primality Testing for Limited Bit Width"]]></title><description><![CDATA[
<p>If I understand correctly, Baillie-PSW has been shown to be correct for all integers < 2^64, so for 64-bit ints you might use (some variant of) that instead of M-R.<p>Edited to add: Sieving has got to be much faster than M-R if you want <i>all</i> primes of a certain size.  You would use M-R or Baillie-PSW if you are testing them one at a time.</p>
]]></description><pubDate>Fri, 10 Apr 2026 18:18:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=47721780</link><dc:creator>less_less</dc:creator><comments>https://news.ycombinator.com/item?id=47721780</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47721780</guid></item><item><title><![CDATA[New comment by less_less in "Banned in California"]]></title><description><![CDATA[
<p>I picked Hunter's Point because I used to live near it.  The problems from decommissioning radioactive ships are bad, but they're far from the only pollution that was there.  Lots of VOCs, solvents, oils, radiation from other stuff (eg, glow-in-the-dark equipment made with radium), heavy metals, pesticides, PCBs, and what have you.<p>But sure, there are other shipyards they cleaned up in less than three decades.</p>
]]></description><pubDate>Thu, 26 Feb 2026 19:21:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=47170768</link><dc:creator>less_less</dc:creator><comments>https://news.ycombinator.com/item?id=47170768</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47170768</guid></item><item><title><![CDATA[New comment by less_less in "Banned in California"]]></title><description><![CDATA[
<p>Yeah.  It's especially relevant for the author's focus on shipbuilding.  The old shipyard at Hunter's Point in San Francisco is horribly polluted, and they've been working to decontaminate it for more than three decades in order to reclaim the land for other uses (in particular, housing).  Treasure Island and Yerba Buena Island also have a lot of pollution from the former naval base there.  There is a cost to overregulation, and there is a cost to underregulation.<p>And OK, sure, there's a lot of industry that ought to happen somewhere.  Someone has to build ships and electronics and whatever, and if California's code is <i>too</i> strict then it just becomes NIMBYism.  But if some company moves their gigafactory to Reno for easier permitting, I don't whether (or more likely by how much) CA is too strict, or NV is too lax.  And I know that CA has NIMBYish and overregulatory tendencies, but given the clear bullshit on this website, I'm not inclined to give it the benefit of the doubt either.<p>I'm especially doubtful when it says "THE classic example of what you can't do in CA" is auto paint shops ("Impossible"!) ... but then the detail it gives is that they're "effectively impossible" to permit in the Bay Area AQMD, that being only one of the state's 35 AQMDs (albeit one of the larger ones).</p>
]]></description><pubDate>Thu, 26 Feb 2026 12:37:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47165218</link><dc:creator>less_less</dc:creator><comments>https://news.ycombinator.com/item?id=47165218</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47165218</guid></item><item><title><![CDATA[New comment by less_less in "A beginner's guide to split keyboards"]]></title><description><![CDATA[
<p>The laptop keyborad is good enough, but I'd enjoyed using the Kineses before.  I moved long distance and the Kinesis was bulky and didn't make the cut for things to haul.  Once I was settled I started looking to set up a proper office again, and that included a keyboard.  But I didn't find one that was enough better than a laptop keyboard to get regular use.</p>
]]></description><pubDate>Wed, 25 Feb 2026 16:34:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=47153847</link><dc:creator>less_less</dc:creator><comments>https://news.ycombinator.com/item?id=47153847</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47153847</guid></item><item><title><![CDATA[New comment by less_less in "Half million 'Words with Spaces' missing from dictionaries"]]></title><description><![CDATA[
<p>In addition to what others have pointed out, many of these aren't actually missing from traditional dictionaries: they're just inflected differently.  So your example lists phrases like "operating systems", "immune systems" and "solar systems" as missing from traditional dictionaries, but at least the online OED and M-W have "operating system", "immune system" and "solar system" in them.  It's just that your script is apparently listing the plural as a separate phrase.<p>On languages other than English: in general, different languages do word division very differently.  At least in German and Dutch, many of those phrasal verbs are <i>separable</i>, meaning that they are one word in the infinitive but are multiple words in the present tense.  So for example, where in English you would say "I <i>log in</i> to the website", in Dutch it would be "Ik <i>log in</i> op de website".  "Log in" is two words in both cases, but in Dutch it's the separated form of the single-word separable verb <i>inloggen</i> ("I must log in now" = "Ik moet nu inloggen").  The verb is indeed separable in that the two words often don't end up next to each other: "I log in quickly" = "Ik log snel in".<p>Dutch, like German, has lots of compounds.  But there are also agglutinative languages, which have even more complex compound words, perhaps comprising a whole sentence in another language.  Eg (from Wikipedia) Turkish "evlerinizdenmiş" = "(he/she/it) was (apparently/said to be) from your houses" or Plains Cree "paehtāwāēwesew" = "he is heard by higher powers"; and these aren't corner cases, that's how the language works.</p>
]]></description><pubDate>Wed, 25 Feb 2026 15:59:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=47153307</link><dc:creator>less_less</dc:creator><comments>https://news.ycombinator.com/item?id=47153307</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47153307</guid></item><item><title><![CDATA[New comment by less_less in "A beginner's guide to split keyboards"]]></title><description><![CDATA[
<p>Glove80 is super nice, though rather expensive.<p>I got one with low-force switches.  It's very comfortable to type on, but between the low-force switches and slightly different layout from a regular keyboard (column-staggered, concave, symbols in different locations) I make more mistakes.  So I usually type on my laptop instead, especially while coding.</p>
]]></description><pubDate>Fri, 20 Feb 2026 10:13:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=47086021</link><dc:creator>less_less</dc:creator><comments>https://news.ycombinator.com/item?id=47086021</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47086021</guid></item><item><title><![CDATA[New comment by less_less in "eBay explicitly bans AI "buy for me" agents in user agreement update"]]></title><description><![CDATA[
<p>This thread is pretty weird.<p>My phrase "how economists expect you to set it" is probably wrong here, since I'm not an economist, I've just read the most basic theory about how to use this tool, and also used it myself (on eBay, you know, years ago when the site was mostly auctions).  So I don't really know what "economists expect", but rather the basic guidelines for using this tool.  You got me there.<p>> I think this is the problem. When most sciences observe reality diverge from the model, they see that as a flaw in the model. When economists (at least you HN "economists") observe reality diverge from the model, they seem to see that as a flaw in reality.<p>But like, to double-check here: "reality" means your <i>imagined</i> use of a tool <i>that you do not in fact use</i>, right?  Like you say you "don't do auctions" and I'm trying to explain what that option is for, and you're countering that the basic "how to use this tool" explanation is a wrong model of reality?</p>
]]></description><pubDate>Thu, 22 Jan 2026 15:54:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=46720939</link><dc:creator>less_less</dc:creator><comments>https://news.ycombinator.com/item?id=46720939</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46720939</guid></item><item><title><![CDATA[New comment by less_less in "eBay explicitly bans AI "buy for me" agents in user agreement update"]]></title><description><![CDATA[
<p>I'm not defending "you shouldn't ever need to snipe, just bid your max price" as a hard principle, just trying to explain where the idea comes from.  Sniping can be strategic for lots of reasons: you don't have to commit to a bid until the last second (in case you find a similar item for cheaper elsewhere), you deny other people information, you might avoid anxiety from wondering whether your bid will win, etc.<p>That said, the max price is supposed to be a price where you are not especially <i>happy</i> to get the item at that price, but not really sad either, a price where you would say "well, I hoped for better but I guess that's a fair deal".  That's not realistically pinned down to the cent.  But if you set a max price at $5000 and would be happy to get the item at $5000.02 (for some reason other than satisfaction from sniping), then you set your max price wrong, or at least differently from how economists expect you to set it.</p>
]]></description><pubDate>Thu, 22 Jan 2026 13:00:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=46718675</link><dc:creator>less_less</dc:creator><comments>https://news.ycombinator.com/item?id=46718675</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46718675</guid></item><item><title><![CDATA[New comment by less_less in "eBay explicitly bans AI "buy for me" agents in user agreement update"]]></title><description><![CDATA[
<p>It's not supposed to be some red line absolute max price, but rather "how much is this item worth to you?"  You set that as your max bid price.  If you get it at auction for less than that, you got a good deal, but if you buy it for more, you got a bad deal.  If someone outbids you, then maybe it was worth it to them, but you (supposedly) would not have wanted to buy the item for that much, and would rather use your money for something else.<p>For tricky-to-price items like unique art pieces, the idea that you can pin this down might be a fantasy, but for commodity items it's pretty reasonable.  If you can buy the same thing at costco dot com for $500, then it's probably not worth more than $500 to you, and if at auction you get outbid and it sells for $500.01 then you'll shrug and go order the same thing for a cent less, having wasted only a few minutes of your time.  If the item you're bidding on is discontinued (e.g. it's last year's model) but you can buy a slightly better one for $550, and you can spare that extra $50, then again you won't be too sad about getting outbid.  Online auctions are more popular for used items, but again in that case you usually still have an idea of what a used item is worth to you.</p>
]]></description><pubDate>Thu, 22 Jan 2026 10:49:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=46717564</link><dc:creator>less_less</dc:creator><comments>https://news.ycombinator.com/item?id=46717564</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46717564</guid></item><item><title><![CDATA[New comment by less_less in "Binary fuse filters: Fast and smaller than xor filters (2022)"]]></title><description><![CDATA[
<p>See also the paper <i>Ribbon filter: practically smaller than Bloom and Xor</i>: <a href="https://arxiv.org/abs/2103.02515" rel="nofollow">https://arxiv.org/abs/2103.02515</a>, which is a similar idea though not by the same authors.<p>IIRC, binary fuse filters are faster to construct than ribbon filters, but typically not quite as space-efficient.  There are also <i>frayed ribbon filters</i> (by me) which are slower and more complex to construct but more space-efficient.  There's no paper for those, just a Rust implementation.<p>Ribbon filters are deployed in Mozilla's Clubcard for distributing compressed certificate revocation lists: <a href="https://github.com/mozilla/clubcard" rel="nofollow">https://github.com/mozilla/clubcard</a> and <a href="https://jmschanck.info/papers/20250327-clubcard.pdf" rel="nofollow">https://jmschanck.info/papers/20250327-clubcard.pdf</a>.  CRLs are an almost ideal application of this sort of compressed set tech, since the aggregator runs batch jobs and needs to distribute the set to very many clients.  It's not perfectly ideal because CRLs require frequent updates and none of these methods support delta updates.  There is a straightforward but inelegant workaround, which is to send a compressed set that represents the delta, and query both on the client.</p>
]]></description><pubDate>Thu, 22 Jan 2026 10:14:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=46717323</link><dc:creator>less_less</dc:creator><comments>https://news.ycombinator.com/item?id=46717323</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46717323</guid></item><item><title><![CDATA[New comment by less_less in "What is an elliptic curve? (2019)"]]></title><description><![CDATA[
<p>Another answer to this: <a href="https://en.wikipedia.org/wiki/Cayley–Bacharach_theorem" rel="nofollow">https://en.wikipedia.org/wiki/Cayley–Bacharach_theorem</a><p>A second special case of this theorem is Pascal's theorem, which says (roughly) that a variant of the elliptic curve group law also works on the union of a conic C and a line L (this union, like an elliptic curve, is cubic), where the group elements are on the conic.  One point O on the conic is marked as the identity.  To add points A+B, you draw a line AB between them, intersect that with the fixed line L in a point C, draw a second line CO back through the marked identity point, and intersect again with the conic in D:=A+B.  This procedure obviously commutes and satisfies the identity law, and according to Pascal's theorem it associates.<p>Under a projective transformation, if the conic and line don't intersect, you can send the line to infinity and the conic to the units in (IIRC) a quadratic extension of F (e.g. the complex unit circle, if -1 isn't square in F).  Since the group structure is defined by intersections of lines and conics, projective transformations don't change it.  So the group is isomorphic to the group of units in an extension of F.  If they do intersect ... not sure, but I would guess it instead becomes the multiplicative group in F itself.<p>The multiplicative group of F can be used for cryptography (this is classic Diffie-Hellman), as can the group of units in an extension field (this is LUCDIF, or in the 6th-degree case it's called XTR).  These methods are slightly simpler than elliptic curves, but there are subexponential "index calculus" attacks against them, just like the ones against the original Diffie-Hellman.  The attack on extension fields got a lot stronger with Joux's 2013 improvements.  Since no such attack is known against properly chosen elliptic curves, those are used instead.</p>
]]></description><pubDate>Thu, 18 Dec 2025 12:27:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=46311838</link><dc:creator>less_less</dc:creator><comments>https://news.ycombinator.com/item?id=46311838</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46311838</guid></item><item><title><![CDATA[New comment by less_less in "A quiet change to RSA"]]></title><description><![CDATA[
<p>Annoyingly, while that d = e^-1 usually isn't used in practice (except in cases where you care about side-channel / fault resistance more than the 4x speedup), the Carmichael totient itself still is used in practice.  At least if you want to conform to FIPS 186-5 / SP800-56B, which says that the private key includes d = e^-1 mod the Carmichael totient LCM(p-1,q-1), even if you're going to use the CRT.  And that means you have to compute LCM(p-1,q-1), which also has side-channel considerations.</p>
]]></description><pubDate>Sat, 11 Oct 2025 21:36:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=45552920</link><dc:creator>less_less</dc:creator><comments>https://news.ycombinator.com/item?id=45552920</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45552920</guid></item><item><title><![CDATA[New comment by less_less in "A quiet change to RSA"]]></title><description><![CDATA[
<p>Do the standards require strong primes for RSA?  I think FIPS doesn't ... it gives you that option, either for the legacy reasons or to get a proof with Pocklington's theorem that (p,q) really are prime, but just choosing a random (p,q) and running enough rounds of Miller-Rabin on them is considered acceptable IIRC.</p>
]]></description><pubDate>Sat, 11 Oct 2025 21:20:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=45552809</link><dc:creator>less_less</dc:creator><comments>https://news.ycombinator.com/item?id=45552809</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45552809</guid></item><item><title><![CDATA[New comment by less_less in "How to prove false statements: Practical attacks on Fiat-Shamir"]]></title><description><![CDATA[
<p>The intro textbook descriptions of cryptographic systems omit a lot of very important details.<p>When using RSA to sign a message m, in practice you don't send m^d mod N.  That would generally be insecure, depending on what kinds of messages your system sends and/or accepts.  In practical systems, instead you hash m, and then adjust the hash through a (possibly randomized) process called "padding" to be a value in [0,N).  There are different standards for padding, and the better designs use additional hashing.<p>The security of the system depends in part on the hashed-then-padded message "looking random", i.e. not having structure that can be exploited by an attacker.  It turns out to be tricky to formalize what exact randomness property you need, so cryptosystems are often analyzed in the "random oracle model" (ROM) in which the hash function has impossibly strong randomness properties.<p>It seems that usually, if you use a strong hash function, a scheme that's proved secure in the ROM is secure in real life (or at least it's not the ROM part that breaks); the counterexamples are usually really contrived.  This article is about a somewhat-less-contrived, but still not quite realistic, example where something that's secure in the ROM would break due to the ROM being an unrealistic model.</p>
]]></description><pubDate>Thu, 10 Jul 2025 23:16:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=44526776</link><dc:creator>less_less</dc:creator><comments>https://news.ycombinator.com/item?id=44526776</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44526776</guid></item><item><title><![CDATA[New comment by less_less in "How to prove false statements: Practical attacks on Fiat-Shamir"]]></title><description><![CDATA[
<p>Internally, most signature algorithms use hash functions.  RSA-PSS, EdDSA and ML-DSA use them to provide something like randomness, and the security analysis of those signature schemes includes arguments assuming (in some very particular, technical ways) that the hash function outputs "look random".<p>Classical DSA and ECDSA do not use hash functions this way, but in my opinion they aren't stronger for it: they're basically assuming instead that some other mathematical function "looks random", which seems riskier than assuming that about a hash function.  I've heard that the reason for this is to get around Schnorr's patent on doing it with hash functions, which has since expired.<p>The SHA3 and SHAKE hash functions (underlying e.g. ML-DSA) are explicitly designed to "look random" as well.<p>There are some signature schemes that try not to make such strong assumptions: in particular SLH-DSA targets properties more like first- and second-preimage resistance, target-collision-resistance, and so on.</p>
]]></description><pubDate>Thu, 10 Jul 2025 17:08:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=44523134</link><dc:creator>less_less</dc:creator><comments>https://news.ycombinator.com/item?id=44523134</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44523134</guid></item><item><title><![CDATA[New comment by less_less in "How to prove false statements: Practical attacks on Fiat-Shamir"]]></title><description><![CDATA[
<p>As I understand the paper, the point is that Fiat-Shamir does *not* give a correct proof of the program's output.<p>They gave a (maliciously constructed) program whose outputs are pairs (a,b) where certainly a != b (instead the program is constructed such that a = b+1 always).  But you can get the corresponding Fiat-Shamir protocol to accept the statement "I know a secret x such that Program(x) = (0,0)", which is clearly a false statement.</p>
]]></description><pubDate>Thu, 10 Jul 2025 16:46:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=44522929</link><dc:creator>less_less</dc:creator><comments>https://news.ycombinator.com/item?id=44522929</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44522929</guid></item><item><title><![CDATA[New comment by less_less in "That XOR Trick (2020)"]]></title><description><![CDATA[
<p>Oh yeah, factoring the polynomial is also a good idea.  For a long enough list that ought to be better than AFFT too.</p>
]]></description><pubDate>Fri, 04 Jul 2025 08:05:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=44462284</link><dc:creator>less_less</dc:creator><comments>https://news.ycombinator.com/item?id=44462284</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44462284</guid></item><item><title><![CDATA[New comment by less_less in "That XOR Trick (2020)"]]></title><description><![CDATA[
<p>Adding to some other comments in the thread: finding missing or extra numbers is closely related to <i>error-correcting codes</i>, especially binary linear codes.  In an error-correcting code, you have a string of bits or symbols, with symbol x_i appearing at position i.  You choose the code so that valid sequences have a certain mathematical property, and then if one or a few symbols are corrupted, then you can use that property to correct the errors.  The property is typically that a certain linear function called the "syndrome" is zero, meaning that sum(x_i * G_i) = 0 where each G_i is some strategically chosen vector, particular to the code.  The math for how to correct is particular to the chosen G_i, and it's a really interesting field of study.<p>In a typical error-correcting code usage, you have an encoder which takes your message, and adds some extra symbols at the end which are calculated so that the syndrome is zero.  Then when receiving your message, the receiver calculates the syndrome and if it's not zero, they know that at least one error has occurred.  By using the code's decoding algorithm, they can figure out the fewest (and thus hopefully most likely) number of changes which would result in that error syndrome, and use this information to (hopefully) correct the transmission error.<p>For the missing numbers problem, you can set x_i to "how many times does the number i appear?".  Then since the syndrome is sum(x_i * G_i), you can compute the syndrome on an unordered list of the i's.  You are expecting the syndrome to be the same as the syndrome of full set 1...n, so when it is not, you can figure out which few x_i's are wrong that would lead to the syndrome you observed.  You have an advantage because you know how many numbers are missing, but it's only a slight one.<p>The author's solution is called the Hamming code: you set F(i) = i, and you do the additions by xoring.  Using error-correcting codes generalize to more missing numbers as well, including using xor, but the math becomes more complicated: you would want to use a fancier code such as a BCH or Goppa code.  These also use xor, but in more complicated ways.</p>
]]></description><pubDate>Thu, 03 Jul 2025 18:09:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=44457727</link><dc:creator>less_less</dc:creator><comments>https://news.ycombinator.com/item?id=44457727</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44457727</guid></item><item><title><![CDATA[New comment by less_less in "That XOR Trick (2020)"]]></title><description><![CDATA[
<p>If you imagine a polynomial L(z) that's zero at all the missing numbers, you can expand the coefficients out.  For example, with 2 missing numbers (x,y), you have:<p><pre><code>   L(z) = z^2 - (x+y)z + xy.
</code></pre>
You already have x+y, but what's xy?  You can compute it as ((x+y)^2 - (x^2 + y^2))/2.  This technique generalizes to higher powers, though I forget the exact details: basically you can generate the coefficients of L from the sums of powers with a recurrence.<p>Then you solve for the roots of L, either using your finite field's variant of the quadratic formula, or e.g. just by trying everything in the field.<p>* But wait, this doesn't actually work! *<p>Over fields of small characteristic, such as F_2^m, you need to modify the approach and use different powers.  For example, in the equations above, I divided by 2.  But over F_2^m in the example shown above, you cannot divide by 2, since 2=0.  In fact, you cannot solve for (x,y) at all with only x+y and x^2 + y^2, because<p><pre><code>  (x+y)^2   =   x^2 + y^2 + 2xy   =   x^2 + y^2 + 0xy (since 2=0)   =   x^2 + y^2
</code></pre>
So having that second polynomial gives you no new information.  So you need to use other powers such as cubes (a BCH code), or some other technique (e.g. a Goppa code).  My sibling comment to yours describes the BCH case.</p>
]]></description><pubDate>Thu, 03 Jul 2025 16:24:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=44456672</link><dc:creator>less_less</dc:creator><comments>https://news.ycombinator.com/item?id=44456672</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44456672</guid></item></channel></rss>