HNHacker News
TopNewBestAskShowJobs

interlocutor

1,089 karma · joined March 31, 2015

submissionscomments
interlocutor··on Never use MongoDB (2013)
SQL databases don't support easy schema evolution, sharding and so on.
interlocutor··on React created roadblocks in our enterprise app
> A more opinionated framework that matched the team that was supposed to code with it would have worked better for them over the lifecycle of the project.

No it wouldn't, not for an enterprise application that is supposed to last a decade or more. Instead you want to use standards such as Web Components that will last essentially forever.

interlocutor··on React created roadblocks in our enterprise app
> I would much rather take "boring", stable languages and frameworks

I would argue that you don't need a heavy framework to make maintainable JavaScript application. For large enterprise applications that must last a decade or more you want to use standards (such as Web Components) implemented by the web browser itself instead of third-party libs such as React.

interlocutor··on Twitter and Facebook's action over Joe Biden article reignites bias claims
Societal attitudes towards free speech have changed a lot in recent times. I believe this is related to technological advancement and the rise of social media. The advent of social media has made it too easy to spread dangerous levels of hate and false information online. Malicious individuals and groups now have the power to reach hundreds of millions instantly, at no cost to themselves. It started off innocently enough, with cat videos uploaded to YouTube, but soon extremists were taking advantage of social media for radicalization purposes, adversarial nations were spreading fake news to influence who gets elected, and others were even live-streaming mass murders. This has caused an upheaval in attitudes towards free speech. Enough is enough! There needs to be limits. Communities started imposing limits to free speech. Society — as opposed to governments — have decided that some censorship is in order. This is a natural evolution of societal norms. This particular evolution was a reaction to the excesses and abuses seen in social media. Some censorship, by private parties such as Twitter, as opposed to absolute free speech, will be the new normal. We live in a new world; the old norms no longer apply.
interlocutor··on Open Floor Plan Could Help Spread Coronavirus
Related: Welcome back, cubicles? Longtime Silicon Valley CEO says coronavirus could kill the open office

https://www.marketwatch.com/story/welcome-back-cubicles-long...

interlocutor··on The Decline of Usability
It is still unusable compared to iOS6
interlocutor··on Fed cuts half point in emergency move amid spreading virus
There may not be one, precise and predictable way the stock market works, but buying on rumor, and selling on news is a very common, herd mentality that is easily observable, as seen yesterday (rumor) and today (news).
interlocutor··on Fed cuts half point in emergency move amid spreading virus
This abrupt move by the Fed betrays lack of knowledge of stock market psychology. Looking at how stocks are doing today you would not think that anything of interest has happened (no pun intended).

The stock market psychology works on "buy on rumor, sell on news" principle. This is the reason there was a significant rally yesterday, and stocks are in negative territory today.

What the Fed should have done is give signals that they are about to cut interest rates, then give stronger signals, then even stronger signals, then cut interest rate by 0.25% then repeat for the next 0.25%. Markets would have rallied multiple times for each good news signal.

interlocutor··on ‘People You May Know’ helped Facebook grow exponentially
In the early days, Facebook logged into user's email accounts and stole contact information without users' knowledge or authorization. This was possible because people used the same password for their email and Facebook, a practice common especially back in those days. This is one of their sources for PYMK.

In fact Facebook has used this technique very recently too:

A security researcher noticed the tech giant was prompting some users to type in their email passwords when they opened an account to verify their identity. And after they were caught... Social networking giant Facebook said on Wednesday evening it may have “unintentionally uploaded” the email contacts of up to 1.5 million users on its site, without their permission or knowledge, when they signed up for new accounts since May 2016.

Read more about this: https://www.nbcnews.com/tech/tech-news/facebook-says-it-unin...

interlocutor··on MVC is dead, it's time to MOVE on (2012)
Nearly all UI frameworks use MVC. That includes iOS, ASP.NET Core, JSP and JSF (both Java), Ruby on Rails, and Django (Python).

In fact, it is easier to list UI frameworks that are not MVC-based: WPF, which is based on MVVM and React+ReactRouter+Redux, which is based on Flux.

MVVM was invented in order to support 2-way data binding. Inspired by WPF, many early JavaScript frameworks supported 2-way data binding. These days 2-way data binding is widely acknowledged as a poor design as it makes it hard to keep track of how data is flowing through your application. For more on that see [1].

React was originally introduced as the "V in MVC" [2]. Since then it drifted away from MVC in an ad-hoc manner. In part this is because of ReactRouter, which made router a view component (!), and in part this is because of Flux/Redux. The facebook engineer who came up with Flux famously declared that MVC doesn't scale (!!). This assertion was widely challenged, and later she acknowledged that it is bidirectional data flow that doesn't scale [3]. She had assumed that MVC automatically implies 2-way data binding. Redux, an implementation of the Flux architecture then became popular, and became closely associated to React, so much so that many developers believe using React implies using Redux. This is unfortunate because Redux requires tons of boilerplate ("so much throat clearing", as one developer put it), which MVC does not require.

[1] https://changelog.com/131/ (starting around 0:43)

[2] https://github.com/facebook/react/tree/015833e5942ce55cf31ae...

[3] https://www.infoq.com/news/2014/05/facebook-mvc-flux/

interlocutor··on Things I wish I knew about state management when I started writing React apps
> Don't all of those have two-way data binding?

No they don't.

> I think the point is that Facebook found it doesn't actually work well, at least for their use cases. They found a recurring set of bugs caused by two-way data flow, and built a framework to alleviate it.

But MVC doesn't mean two-way data flow.

interlocutor··on Things I wish I knew about state management when I started writing React apps
From that Facebook article: Flux eschews MVC in favor of a unidirectional data flow.

This is so incorrect. MVC doesn't imply two-way data binding. The whole Flux architecture was based on a misunderstanding of MVC, and is therefore questionable.

Most UI frameworks, including iOS, ASP.NET Core, JSP and JSF (Java based frameworks), Ruby on Rails, and Django (Python) are all based on MVC.

Why is it that MVC works for all these other frameworks, but doesn't for React? The answer is that MVC does in fact work for React. React itself originally used the tagline "React is the V in MVC". Flux/Redux introduce needless complexity and unnecessary boilerplate. There are MVC libs that make React much easier to use.

interlocutor··on Chinese military personnel charged for hacking into Equifax
I am still waiting for Equifax leaders to be charged for their negligence. They failed to keep their software up-to-date [1], while storing sensitive information about millions of US citizens.

[1] https://techbeacon.com/security/why-equifax-breach-should-ne...

interlocutor··on Kubernetes the Easy Way
You don't have to set up your own cluster if you use Azure or Google cloud. AWS charges for cluster management, but Azure and Google don't.
interlocutor··on Kubernetes the Easy Way
> kubernetes is complex and maybe not for all of us

Couldn't disagree more. Kubernetes is extremely easy. I work mostly in frontend, and despise devops. Or used to. Until Kubernetes came along I had no way of easily creating a load-balanced scalable service.

First learn Docker. This is independent of Kubernetes. Docker is awesome in and of itself. In Azure you can deploy web sites as docker images and there are tremendous advantages to that over traditional deployment. Once you have learned Docker you are ready to learn Kubernetes.

If your app consists of multiple microservices then you have more than one docker container. This is where Kubernetes is helpful. Kubernetes has built-in DNS, so your microservices can contact each other using DNS names.

Learn how to deploy containers as Kubernetes ReplicaSets. Then learn how to add a Kubernetes Service on top of it, then learn how to add Ingress. None of this is hard.

Kubernetes is a pleasure to use, because of commands such as "kubectl exec" to log into the container, "kubectl log" to see the log without logging into the container, "kubectl cp" to copy files in and out, "kubectl port-forward" to make a service appear to be running on your devbox and so on.

interlocutor··on Tesla's self driving algorithm's overlay [video]
> warns you that it thinks you are going to run a red light / stop sign

I need this feature, and I would prefer this to full autonomous driving.

A computer that warns you when you're about to make a mistake is achievable today and will increase safety for everyone.

interlocutor··on You’re better off using Exceptions
Unchecked exceptions are a mistake. If the method you call is modified to throw a new recoverable exception how will you be alerted to the issue? You won't. Your app will crash. With checked exceptions the compiler lets you know. That's much better.
interlocutor··on You’re better off using Exceptions
Unchecked exceptions are a disaster. In C# when you call a method you have no idea what exceptions can be thrown by the called method unless you inspect the called method and all the methods called by it. The called method can be modified at any time and a new exception can be thrown and your code will compile just fine. This is bad because the new exception may be a recoverable condition and instead of recovering your program will crash. This is why exceptions that can be thrown by a method should be considered part of the signature of the method and you should get a compile-time error (as opposed to a runtime crash) if the method throws a new exception that wasn't there when you originally wrote the code.
interlocutor··on IBM Names Arvind Krishna CEO
That's nonsense. It is well-known that Indian women do better in the tech industry than their American counterparts. See articles below.

https://www.theguardian.com/guardian-professional/2015/jun/2...

https://blogs.scientificamerican.com/guest-blog/engineering-...

https://www.wired.com/2014/08/silicon-valley-sexism/

https://blog.hackerrank.com/which-countries-have-the-most-sk...

Developers in India are 3-times more likely to be female than developers in the United States. https://insights.stackoverflow.com/survey/2015

interlocutor··on Climate Change Is Killing Alpine Skiing as We Know It
There are ways to remove the CO2 already in the atmosphere: like planting trees. [1] Also, Microsoft just announced that by 2050 they will remove from the environment all the carbon the company has emitted either directly or by electrical consumption since it was founded in 1975. [2]

[1] https://www.nationalgeographic.com/environment/2019/07/how-t...

[2] https://blogs.microsoft.com/blog/2020/01/16/microsoft-will-b...

interlocutor··on Ask HN: Do you still code in BASIC?
VB was one of the most popular languages in the 90's and into early 2000's. How did it fall out of favor? Was it because of Microsoft forcing VB into "just another skin" over .NET, i.e., a variant of C# that doesn't have curly braces?
interlocutor··on The Firefox UI Is Now Built with Web Components
That does not appear to be correct.

https://github.com/Polymer/lit-html/wiki/How-it-Works#4-upda...

Excerpt:

update() simply iterates through each part and value (the parts array and values array are always the same length) and calls part.setvalue(v) for each part.

https://lit-html.polymer-project.org/guide

Excerpt:

Behind the scenes lit-html creates HTML <template> elements from your JavaScript templates and processes them so that it knows exactly where to insert and update the values from expressions.

This is very limited. You need to manually update DOM unless your updates are simple changes in values of expressions.

interlocutor··on The Firefox UI Is Now Built with Web Components
Updates offered by lit-html appear to be very limited. If you change value of expressions it updates the DOM. What about larger changes, such as list items changing? What about child elements being replaced with new ones?
interlocutor··on The Firefox UI Is Now Built with Web Components
lit-html needs a 1600 line library where as UIBuilder is a 200-line library: https://github.com/wisercoder/uibuilder/blob/master/UIBuilde...

Yes, JSX needs transpilation but that happens at compile-time. Which is better, pre-processing at compile-time, or "transpilation" (i.e., string processing) at run-time?

interlocutor··on The Firefox UI Is Now Built with Web Components
lit-html is no more of a standard than JSX. In fact JSX is better because tools like VSCode is able to validate both HTML and embedded JavaScript.
interlocutor··on The Firefox UI Is Now Built with Web Components
Why on earth do you need something that heavy? How about this 200-line lib instead: https://github.com/wisercoder/uibuilder It lets you TSX format (same to React) to implement as well as to use web components.
interlocutor··on The Firefox UI Is Now Built with Web Components
What are you talking about? There is hardly any API. https://developer.mozilla.org/en-US/docs/Web/Web_Components/... It is extremely simple.
interlocutor··on Build Your Own React
'render' should render, because that's what the function name says. If you're using it for behavior then you're not using it for the intended purpose.
interlocutor··on Build Your Own React
HTML custom elements (basis for web components) are intended for things that should be added to DOM. Using it for any other purpose is probably a misuse.
interlocutor··on Build Your Own React
> you don't need that full 560kb library

In fact, most web applications only need this 200-line library: https://github.com/wisercoder/uibuilder

React started out as a simple library, but it is getting more and more complicated (see concurrent mode). 90% of applications don't benefit from React's complexity. This tiny lib has the same templating technology as React, but none of the complexity.

← PreviousPage 2 of 7Next →