I already told you, I liked your article. I said it was great. You get a trophy, smart person.
My gripe is a lack of disclaimer. There are plenty of people who will read it, then rush right out to duplicate it. That will bring bugs and chaos all over the javascript world.
The trampoline is a bad idea in practice. I can't show you an out of memory error or lack thereof. The code in your article hard locked the dev tools which is much much worse than throwing an error.
Since the trampoline is a bad idea, the solution to your stack overflow errors needs work. It follows that with no solution, then the ycombinator itself is inappropriate. It shouldn't be hard for you to admit that, being as smart as you are. All I'm asking is that you mention that more prominently in your otherwise great article.
A loop is not just fewer LoC and easier, it is orders of magnitude faster than the ycombinator decoupled trampoline. The first alert is nearly instant. The second one takes almost a minute. My chrome dev tools are hard locked waiting for the ycombinator to finish.
This is not something I would encourage JS devs to use in practice.
Going out to main memory is orders of magnitude slower than hitting cache. Even a stack overflow would be preferable to debug vs an out of memory error. At least with the stack overflow, the stack trace pinpoints the problem.
Like I said, I have no problem with this article as an illustration of a ycombinator for JS devs. The problem is it does not warn them sufficiently of the very major drawbacks in using it. This is why we have Gate's law; Developers using inefficient constructs because they're neato.
So we start out with an attempt to build an anonymous recursive function. That's cool I suppose. But doing it in a language like javascript (or java)? It turns out that tail recursion == stack overflow. Not daunted, the plucky author decides that we can solve this particular issue by creating a closure over stack variables and put them on the heap instead!
You know, if you want to use Haskell, use Haskell. Trying to shoehorn this stuff into languages designed for loops instead of recursion just means impressionable JS developers are going to see this and rush out to implement it in some project to prove how smart they are. Then everyone suffers. The implementation is slower because it goes to heap. The memory usage explodes because it goes to heap.
Purely for illustration of a Y combinator, this is great. But there should be a big red warning somewhere on the page as a reminder of the downsides of this approach.
I find it unsettling that Silicon Valley employees would rather see a foreign nation win the race to build autonomous killing machines. It's not just the open contempt they have for their own countrymen, but it seems borderline suicidal.
>Apart from the fact that it doesn't actually exist yet.
Well, sure, I'll give you that point, but it's going to happen.
>it's already a badly specced phone commanding top dollar
The selling point isn't the specs. It's the RYF certification and kill switches. Even if they can't get the RYF, it's still a better option than anything else out there.
>being made by a small company that could easily go broke in a year
I really doubt that. They have a laptop business already. They've been doing hardware for a while. This one might ship months late, but I'm confident it will happen.
>For half the price I could get a flagship Xiaomi, flash LineageOS on it and have a completely degoogled high quality Android phone likely supported for most of the next decade.
Yep, and you still have a sealed battery, a backdoored baseband, and binary blobs. The iMX.8 is pretty sweet. It has open source GPU. Can't say that for mali or powervr. I can consider making Librem 5 my convergence device.
Blame the judge for the laws congress passed. Blame the congress for the law the executive misused. Blame the executive for misleading the fisa judges. It's a perfect circle.
Having an OS and apps I can trust to not send location data solves that problem. The kill switches ensures no roving bugs, modem AT commands, and passive tower triangulation when I'm not using the radio. Pretty simple really.
> it’s going to need to know where I am to provide me the forecast
Why would you think that? I don't need to give a weather app my location. It only needs to have one or more locations of interest to me. My weather widget pulls multiple locations for me, and has no access to my location data.
>A solution for a few outliers doesn’t really influence the big picture.
There's nothing stopping anyone from buying a Purism 5. If someone doesn't care about their privacy, they don't deserve it. Freedom isn't free, and all that.
Stories like this, the Uber story, and the recent one about Google tracking location even when you opt out, are why I'm looking forward to Purism 5 with PureOS and kill switches.
>I want to write on these things and your response motivates me to do that.
I would caution you not to. What goes on the internet stays there forever. Google will fight your right to be forgotten. Real names are a great way to attract batty twitter haters who want to ruin your life due to some perceived slight from reading your stories. You can easily go from pity story of the day to "ZOMG I hope you never get a job and die in the streets" in just a few words on this board. Be wary.
Hey Jesse, pick up a solar panel. You can get waterproof two usb port that'll crank out 20-30 watts ~$50. I'd recommend an ARM laptop too. They're cheaper and Intel is generally too power hungry anyway. A Samsung Chromebook Plus used on swappa would be really nice. It has a really bright display so you can still see it outdoors in the sun. For data, T-Mo is unlimited for $30/mo pre-paid.
Put your panel in the sun, sit in the shade at a park, tether your phone for internet, and you're golden. You can strap the panel to your backpack and charge on the move too.
Logically speaking, this is incorrect. Both could be true given a circumstance, like say, the sun goes red giant in the later case.
Furthermore, "the reason" can usually be whatever you want it to be if you go far enough back in the chain of causations. My hands were wet this morning when I dropped the jelly jar. But that wasn't my fault, it was the water company's fault for supplying the wetness on my hands. Or perhaps it was the Roman's fault for kickstarting the whole thing with aqueducts. But that's really just mankind's fault for existing, so human activity is at fault for my loose grip on the jelly jar today.
Overall, I found this article interesting, and frankly: Go mankind! We averted an ice age and certain death/destruction with farming. If we want to talk about problematic climate change, look at how living on top of a mile of ice works out for our species.
It's also manufactured by Google, which is equally adept in spying and probably more unworthy of trust.
But more importantly, it's just a bad deal. A yubikey neo can do GPG, PIV, OATH, OTP, HMAC challenge response, and a few other things in addition to NFC U2F for the same price. The Titan dongles package just does U2F, and U2F isn't even that great.
My gripe is a lack of disclaimer. There are plenty of people who will read it, then rush right out to duplicate it. That will bring bugs and chaos all over the javascript world.
The trampoline is a bad idea in practice. I can't show you an out of memory error or lack thereof. The code in your article hard locked the dev tools which is much much worse than throwing an error.
Since the trampoline is a bad idea, the solution to your stack overflow errors needs work. It follows that with no solution, then the ycombinator itself is inappropriate. It shouldn't be hard for you to admit that, being as smart as you are. All I'm asking is that you mention that more prominently in your otherwise great article.