<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: explaininjs</title><link>https://news.ycombinator.com/user?id=explaininjs</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 15 Apr 2026 07:07:32 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=explaininjs" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by explaininjs in "Bricked iPhone 16 Can Be Restored Wirelessly Using Another iPhone"]]></title><description><![CDATA[
<p>Verizon after 60GB is 600kbps on 5G/4G but up to 3Mbps on UWB. Pretty reasonable IMO. It’s AT&T that’s the holdout, 128k regardless of plan, after 60GB.</p>
]]></description><pubDate>Mon, 23 Sep 2024 12:58:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=41625578</link><dc:creator>explaininjs</dc:creator><comments>https://news.ycombinator.com/item?id=41625578</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41625578</guid></item><item><title><![CDATA[New comment by explaininjs in "Bricked iPhone 16 Can Be Restored Wirelessly Using Another iPhone"]]></title><description><![CDATA[
<p>I did in fact follow the link. I actually went further than you, all the way to the GitHub, where I saw that it was actually just a web app. All TS.<p>And you can 100% load PWAs offline, which might be slightly more progressive than <i>your</i> idea of a web app, but I hope not overly so.</p>
]]></description><pubDate>Sun, 22 Sep 2024 23:04:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=41620862</link><dc:creator>explaininjs</dc:creator><comments>https://news.ycombinator.com/item?id=41620862</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41620862</guid></item><item><title><![CDATA[New comment by explaininjs in "Bricked iPhone 16 Can Be Restored Wirelessly Using Another iPhone"]]></title><description><![CDATA[
<p>That’s a web app, it’s on them if they don’t want to offer their services without requiring me to let them out of the web sandbox.</p>
]]></description><pubDate>Sun, 22 Sep 2024 22:50:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=41620764</link><dc:creator>explaininjs</dc:creator><comments>https://news.ycombinator.com/item?id=41620764</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41620764</guid></item><item><title><![CDATA[New comment by explaininjs in "Bricked iPhone 16 Can Be Restored Wirelessly Using Another iPhone"]]></title><description><![CDATA[
<p>As someone who does a ton of networking/routing at the link layer for a day job, I can definitely see why they’re taking measures to reduce bandwidth hogs - to the extent I might actually prefer to be on a network that has taken measures to reduce hogging vs one that has not.<p>When it really truly matters, like when I have a business need to download huge items in remote areas, the $10/GB+ justifies itself.</p>
]]></description><pubDate>Sun, 22 Sep 2024 22:39:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=41620693</link><dc:creator>explaininjs</dc:creator><comments>https://news.ycombinator.com/item?id=41620693</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41620693</guid></item><item><title><![CDATA[New comment by explaininjs in "Bricked iPhone 16 Can Be Restored Wirelessly Using Another iPhone"]]></title><description><![CDATA[
<p>Curious what you want from a jailbreak at this point? It seems all of the old things that were actually helpful have found them into first party software, or at least in the sanctioned third party. (internet tethering, emulators, side loaded apps, etc.)</p>
]]></description><pubDate>Sun, 22 Sep 2024 22:26:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=41620620</link><dc:creator>explaininjs</dc:creator><comments>https://news.ycombinator.com/item?id=41620620</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41620620</guid></item><item><title><![CDATA[New comment by explaininjs in "What's functional programming all about? (2017)"]]></title><description><![CDATA[
<p>I should not need to explain to you that the problem is when b itself is internally an (m b’). Or when it is a sum of many types, of varying m-nests.<p>I can assure you that JS libraries work with Promises just fine.</p>
]]></description><pubDate>Fri, 06 Sep 2024 19:17:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=41468921</link><dc:creator>explaininjs</dc:creator><comments>https://news.ycombinator.com/item?id=41468921</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41468921</guid></item><item><title><![CDATA[New comment by explaininjs in "What's functional programming all about? (2017)"]]></title><description><![CDATA[
<p>This is all besides the root topic though, which is that CPS and Monads are isomorphic. Which is true. Promises are a different thing.</p>
]]></description><pubDate>Fri, 06 Sep 2024 15:55:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=41467265</link><dc:creator>explaininjs</dc:creator><comments>https://news.ycombinator.com/item?id=41467265</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41467265</guid></item><item><title><![CDATA[New comment by explaininjs in "What's functional programming all about? (2017)"]]></title><description><![CDATA[
<p>We might consider promises “applied monads” or “engineered monads”. Monodic in inspiration and they solve the same core problem, but they aren’t straightjacketed into the ivory tower “laws” in absolutely every edge case (they do satisfy them in the vast majority of cases). Which is good, because it means we never need to write things like “await await await await await foo()”</p>
]]></description><pubDate>Fri, 06 Sep 2024 15:33:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=41467092</link><dc:creator>explaininjs</dc:creator><comments>https://news.ycombinator.com/item?id=41467092</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41467092</guid></item><item><title><![CDATA[New comment by explaininjs in "What's functional programming all about? (2017)"]]></title><description><![CDATA[
<p>There is one particular edge case in which they do not satisfy the laws. That happens to make them much more practical in day to day coding than a strict interpretation would be.</p>
]]></description><pubDate>Fri, 06 Sep 2024 02:55:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=41462493</link><dc:creator>explaininjs</dc:creator><comments>https://news.ycombinator.com/item?id=41462493</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41462493</guid></item><item><title><![CDATA[New comment by explaininjs in "Ruby methods are colorless"]]></title><description><![CDATA[
<p>If you’re fine with manually checking a standard interface to see if you should abort, JS’s answer is the AbortController. This is supported by features like the “fetch” function for making cancellable http requests.<p><a href="https://developer.mozilla.org/en-US/docs/Web/API/AbortController" rel="nofollow">https://developer.mozilla.org/en-US/docs/Web/API/AbortContro...</a></p>
]]></description><pubDate>Thu, 25 Jul 2024 20:15:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=41072897</link><dc:creator>explaininjs</dc:creator><comments>https://news.ycombinator.com/item?id=41072897</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41072897</guid></item><item><title><![CDATA[New comment by explaininjs in "Ruby methods are colorless"]]></title><description><![CDATA[
<p>Show me a JS library that allows you to swap a non-async call for an async one in a non-async context^ and I’ll eat my hat.<p>^Without any non-local changes, obviously.</p>
]]></description><pubDate>Thu, 25 Jul 2024 14:32:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=41069142</link><dc:creator>explaininjs</dc:creator><comments>https://news.ycombinator.com/item?id=41069142</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41069142</guid></item><item><title><![CDATA[New comment by explaininjs in "Ruby methods are colorless"]]></title><description><![CDATA[
<p>No… I fear you’ve missed the entire point of the matter, which is that async/await requires that you <i>must</i> go all the way up the call stack explicitly “await”ing things when you have introduced an “async” call (or similar wide spread changes to that effect). There’s no special magic utility function you can call you hide it away. That’s the whole point – and a very good thing, this thread argues.</p>
]]></description><pubDate>Thu, 25 Jul 2024 00:34:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=41063660</link><dc:creator>explaininjs</dc:creator><comments>https://news.ycombinator.com/item?id=41063660</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41063660</guid></item><item><title><![CDATA[New comment by explaininjs in "Ruby methods are colorless"]]></title><description><![CDATA[
<p>No… that’s the whole point. If you change them to be async, the language forces you to go and rethink what implications that has for the callers. This is a good thing, dumbly sequenced operations are terrible UX. And UX is far more important than whatever it is they call “DX”.</p>
]]></description><pubDate>Tue, 23 Jul 2024 21:42:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=41051263</link><dc:creator>explaininjs</dc:creator><comments>https://news.ycombinator.com/item?id=41051263</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41051263</guid></item><item><title><![CDATA[New comment by explaininjs in "Ruby methods are colorless"]]></title><description><![CDATA[
<p>That sounds a lot like async/await. Any errors thrown in an async context bubble to the callsite awaiting it.</p>
]]></description><pubDate>Tue, 23 Jul 2024 17:37:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=41048703</link><dc:creator>explaininjs</dc:creator><comments>https://news.ycombinator.com/item?id=41048703</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41048703</guid></item><item><title><![CDATA[New comment by explaininjs in "Ruby methods are colorless"]]></title><description><![CDATA[
<p>Indeed. And breakpoints and stepping across concurrent context actually works in JS, which is nice.</p>
]]></description><pubDate>Tue, 23 Jul 2024 17:36:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=41048697</link><dc:creator>explaininjs</dc:creator><comments>https://news.ycombinator.com/item?id=41048697</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41048697</guid></item><item><title><![CDATA[New comment by explaininjs in "Ruby methods are colorless"]]></title><description><![CDATA[
<p>Yes. That blog has probably done more to negatively impact the industry than any other written work I know.</p>
]]></description><pubDate>Tue, 23 Jul 2024 17:34:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=41048687</link><dc:creator>explaininjs</dc:creator><comments>https://news.ycombinator.com/item?id=41048687</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41048687</guid></item><item><title><![CDATA[New comment by explaininjs in "Ruby methods are colorless"]]></title><description><![CDATA[
<p>F# first actually. Then C#. Then Haskell. Then Python. Then TypeScript. Parent just has an axe to grind.</p>
]]></description><pubDate>Tue, 23 Jul 2024 14:33:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=41046387</link><dc:creator>explaininjs</dc:creator><comments>https://news.ycombinator.com/item?id=41046387</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41046387</guid></item><item><title><![CDATA[New comment by explaininjs in "Ruby methods are colorless"]]></title><description><![CDATA[
<p>Coming from a heavy TS background into a go-forward company, I’d say the main thing you get with async is it makes it <i>incredibly obvious</i> when computation can be performed non-sequentially (async…). For example, It’s very common to see the below in go code:<p><pre><code>   a := &blah{}
   rA, err := engine.doSomethingWithA()
   b := &bloop{}
   rB, err := engine.doSomethingWithB()
</code></pre>
This might have started out with both the doSomethings being very quick painless procedures. But over time they’ve grown into behemoth network requests and very thing is slow and crappy. No, it’s not exactly hard to spin up a go routine to handle the work concurrently, but it’s not trivial either - and importantly, it’s not <i>immediately obvious</i> that this would be a good idea.<p>Contrast to TS:<p><pre><code>   let a = {blah}
   let [rA, err] = engine.doSomethingWithA()
   let b = {bloop}
   let [rB, err] engine.doSomethingWithB()
</code></pre>
Now, time passes, you perform that behemoth slowing down of the doSomethings. You are <i>forced</i> by the type system to change this:<p><pre><code>   let a = {blah}
   let [rA, err] = await engine.doSomethingWithA()
   let b = {bloop}
   let [rB, err] await engine.doSomethingWithB()
</code></pre>
It’s now <i>immediately obvious</i> that you <i>might</i> want to run these two procedures concurrently. Obviously you will need to check the engine code, but any programmer worth their salt should at least seek to investigate concurrency when making that change.<p>I wouldn’t be bringing this up if I hadn’t made 10x+ performance improvements to critical services within a month of starting at a new company in a new language on a service where the handful of experienced go programmers on the team had no idea why their code was taking so long.</p>
]]></description><pubDate>Tue, 23 Jul 2024 14:30:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=41046344</link><dc:creator>explaininjs</dc:creator><comments>https://news.ycombinator.com/item?id=41046344</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41046344</guid></item><item><title><![CDATA[New comment by explaininjs in "The Delusion of the Polygraph"]]></title><description><![CDATA[
<p>> You basically have to give up on the idea of ever having any real evidence for one thing over another<p>Exactly. We agree.<p>> best explanations we could find<p>We have no tested explanation of abiogenesis, chiefly. Among many other questions. Lots of theories that say “and throw your hands up and wave them around and wait 8 million years and tada, probably, idk”<p>God intervening in the universe is a potential source of sudden changes in the laws of physics. For instance changes that allow a man to walk on water or split a sea. Those changes are stepwise, they do not impact space time gradually. Thus non-differentiable. If the change was gradual, evolutionists would come up with a formula for it and say it magically is that way, for “reasons”. They might look at how their laws of gravity work and see that they aren’t right for galaxies, and say the reasons are “dark matter”, for example. I might say they’re God working exerting a differentiable influence, but those two are interchangeable, at least on the surface. It’s only the stepwise that is Godly.</p>
]]></description><pubDate>Thu, 18 Jul 2024 21:40:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=41000026</link><dc:creator>explaininjs</dc:creator><comments>https://news.ycombinator.com/item?id=41000026</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41000026</guid></item><item><title><![CDATA[New comment by explaininjs in "The Delusion of the Polygraph"]]></title><description><![CDATA[
<p>That is the belief that leads to evolutionism, not the exact definition of evolutionism. A necessary precondition.<p>I don’t have time to explain basic mathematics. Suffice to say, the concepts of changing over time and differentiating are very related. If you didn’t know that… that explains a lot I suppose.<p>I still don’t know what your point is, by the way. Maybe we should settle that.</p>
]]></description><pubDate>Thu, 18 Jul 2024 17:20:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=40997795</link><dc:creator>explaininjs</dc:creator><comments>https://news.ycombinator.com/item?id=40997795</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40997795</guid></item></channel></rss>