skysight-inc/HackerNews huggingface dataset:
I'd have been more interested if it could be made to work across regions... I also thought private network addresses had been available on DO for a while now.
So we have now:

- Google Hangouts

- Google Meet

- Google Duo

Am I missing any other? Is there any difference between them?
Without knowing more about their architecture it is difficult to comment beyond the conclusion Alexandra Noonan came to, stated at the beginning of the article. It looks like to me that the architectural assumptions were changing too quickly due to the demands of a fast growing business. Having all their code in a single repository means that they can control dependencies, versioning and deployment centrally, it gives them central control of their software development lifecycle. I can't see how they could not have had the same benefits of the monolith if their microservices existed in a single repo to begin with and had the appropriate tooling to enforce testing, versioning, deployment across all services in the repo. I guess this is the whole monorepo debate and tooling.

This article for me is more about the complexity of managing a large team across different sites where the architecture needs to change rapidly when modularity is absent. They did get a measurable benefit around performance, though. I wonder if Alexandra will comment on the challenges of running a team in an environment of this complexity?
> and are really good open source citizens

I don't know much of the contributions Uber has made but all I remember is they slammed Postgres as been a bad database because they were trying to open multiple multi hour transactions to do things which is just insane. And then tell us that 'microservices' don't work and they are gonna use this new fandangled 'macroservices' when it sounds like they just didn't make microservices to begin with.

The issue I have with this is people go and read these things and say "oh we shouldn't use postgres cos uber", "we shouldn't do microservices cos uber". There's never any preface to these statements on what they did wrong, they blame the tool or technology instead.
I'm not interested in spending time fixing something that is not considered broken by someone else. They are not bugs that have been introduced by mistakes.

Don't get me wrong, I like to help people. But I learnt to not help people that do not seek help.

You get a plumber fixing your pipes because you need your pipes to be fixed, but if every single plumbers were offering there help it would be annoying.

There are already more that three hundreds proposals:

https://github.com/ziglang/zig/issues?q=is%3Aissue+is%3Aopen...

A lot of them are about the syntax. Maybe this won't be endless but I'm sure a lot of time are being wasted. The root of the issue I point seems to be bound to the way the devs are working. Not sure if it will be efficient to tell them to "think more carefully". I do believe my time can be more profitable elsewhere (like commenting here, ah ah).
They've generally changed to unlimited traffic for the standard 1gbps uplink (with 1gbps guaranteed bandwidth).

Not unlimited to 10gbps - but free up to 20tb:

> Traffic usage is unlimited and free of charge.
Please note that our unlimited traffic policy does not apply to servers that have the 10G uplink addon. In this special case, we will charge the usage over 20TB with € 1.00/TB. (The basis for calculation is for outgoing traffic only. Incoming and internal traffic is not calculated.) There is no bandwidth limitation.
...and the ability to treat I/O computations (these "descriptions" of I/O to perform) as plain values in the code is the reasons Haskell is sometimes affectionately known as "the best imperative language".

It's not that you couldn't do the same thing in Python, it's that you get more fine and precise control over what happens by default in Haskell.
The Importance of Digital Privacy (2019)
It’s the crappiness of the effect... it’s too much! And the borders... ugh
Taking regular bicycles on elevators or other tight spaces. Getting my bike up to my apartment is a huge hassle, but leaving it outside will get it stolen. I wish there were a quicker way to disassemble a standard, non-folding bike on the fly.
Online Android developer meetup – Structured concurrency with Kotlin Coroutines
I think that Michelin inspectors would be glad to earn some extra bucks, This people have ninja powers, have kitchen access multi-passes and are the only people in the universe that could start making photos to the stains in a restaurant WC and nobody would bat an eyelid.

Unless this is not so much about room control as many as "please write and submit a report about what you did over the weekend, that place yourself in a possible crime scenery", of course.
Duo as well?
I think the other question is do you really think you’re able to outsmart an industry that has had decades and billions of dollars to develop its marketing strategy?

Maybe if you’re Elon Musk, who’s top 0.001% of human business talent, but even he’s had over a decade at it and isn’t yet churning out cash.
Can you elaborate on the Nextcloud&Syncthing part?

It would be awesome to have LAN local syncing (as Syntching does), while being able to share doc to the outside world (NextCloud's functionality).

Did you figure this out?

Anther topic: yeah, youtube is not something you can replace, but you can still use other frontends, thus the rabbithole recommendation engine doesn't affect you, nor the advertisements. On Android, NewPipe is a great client.
Interview: Kat Summers, Freelance Designer Based in SF
> This is really basic programming

No, it's not. React is iterating that piece of code of your function internally to modify the value of the const, there is no other way to do it. And it is especially confusing because you can use that const 'variable' in the scope representing a changing value. And the change is magically made by its 'setState' method.

If you do this yourself in a loop then it is of course totally clear what's going on, but now we're writing functions where parts of it are being iterated by React, and that's not functional at all, IMAO it's a hack.
Shakespeare knew what to do with people who proffer great quantities of unsolicited advice; look what happened to Polonius.

A bunch of these are good, a bunch are just... OK, and some are questionable or just a matter of simple opinion. A lot just reek of "truthiness"; a sort of middle-brow confidence about art/business/doing stuff that's manages to frequently just pass off made-up bullshit as authoritative. The "rule of 7 in research", "Pros are just amateurs who know how to gracefully recover from their mistakes", "Talent is distributed unfairly, but there is no limit on how much we can improve what we start with" - a lot of these don't make a lick of sense on sober examination.
I love that in Google Hangouts chat, default chat app on Android phone, there is no search capability.

I keep using it because I'm assuming they will add it eventually. I still find the Gmail+chat+hangout combo to be extremely robust and easy -- I just don't know why it isn't supported.
OK. Do most of us want to get wrapped up in the latter group's pathologies?
> Don’t be the best. Be the only.

No, if you are "the only" you are going to do that for the rest of your life.

Also, it is at odds with the second previous point "Hangout with, and learn from, people smarter than yourself". You can't have people smarter than yourself if you are the only.

And it is at odds with all the other points promoting sharing and generosity too. If you are the only, it means you didn't share your knowledge.
If they change the name fast enough maybe they escape from having to cancel it?
Yeah I'm only getting "Your account only lets you join meetings" as well... seems like there hasn't been a full roll out yet.
> Yeah, I also don't think that's correct, in most cases. React updates the entire tree internally when anything changes, but actually only changes DOM nodes who's prop or state has changed.

That internal tree update is the root cause of all the problems. During that update, React runs all the javascript in the component, and that of all of it's child components, which then run their child components till the entire tree is done.

Sure, only a small part of the actual DOM will change. But the sheer wastage that happens to update that small part is criminal.
U.S. Coronavirus Death Toll Is Higher Than Reported, CDC Data Suggests
Your wishful thinking isn't going to change anything.

Capitalism is not imaginary, it is real system you need to work with in a capitalist society if you want to be successful (financially). The rich don't get rich by ignoring the system but by learning and exploiting the tacit rules. I see where your confusion can come from, because the tacit rules are different than the official "wikipedia" rules of capitalism. The same way hacker sees the operating system and software API different way than a regular developer.

Debts and taxes are not just numbers. When you pay taxes you finance the infrastructure that is around you. Have you ever considered where the roads, bridges and police come from? Do you mean somebody built them from the kindness of their heart and police officers do their job for free after they have tended to their field? Have you ever considered there would probably be no working radio communication if not for some government body to regulate and assign shared resource that is electromagnetic frequencies?

If you still think debts and taxes are "just numbers", just take on huge amount of debt and stop paying taxes and report on your experiences.

You can, of course, decide to ignore capitalism. But then you need to understand this is going to have consequences, which is the best proof that capitalism is definitely not imaginary.
Make sure the one you choose doesn’t get discontinued tho
I wonder if the pro-learning behaviour previously mentioned is something qualitatively different from the study skills. I mean study skills offer the mechanics for studying better. But I guess what we're looking is for something that triggers a desire/willingness to learn. I imagine that most people who have completed high school or even undergraduate courses must have experienced this at some point at some level for some subject matters. Whatever we call it, once this has been activated it becomes easier for the student to successfully direct their own learning to some extent.
That's a very good question. I used to be you. As I said above, my 'secret' was to dissociate 'me' (the body, with an inner child inside) from 'my thinking brain', the overarching parent/boss up there who makes decisions.

So parent takes care of the child and is able to say "nope, don't do that". Developing this approach is what made me an adult I think (I was in my 30s already, it didn't come naturally to me).

A great trick was audiobooks. You just listen and that wakes the brain up, but a book is really, really so much better than random posts. 30 minutes as you wake up, then get up, have breakfast etc. is sure mind opener.

It becomes a habit, maybe a need even, but it's a good need. Books and exercises is the winning combination for success and happiness (seriously, just these two things put you in the top 5%, or so I hear).

Places like librivox have tons of free content. A well thought-out podcast is good too I think (long-form content). It's the idea of a passive but mind-opening activity.

Then when I'm working during the day I put the phone away silent for ~30 minutes, then take a break and chill for 5-10 minutes, then back at it, rinse and repeat. That's what got me off the dopamine hook I think.
Article says that this:

readFile "foo" >>= writeFile "bar"

is preferable to this:

do
text <- readFile "foo"
writeFile "bar" text

I don't agree. Even if a working knowledge of the monadic bind is required, the second expression is more readable to beginners and can be extended more easily to do other things.

Of course, the first expression is written in "pointfree" style, where the code is described as a composition of functions. Even if I like pointfree one liners that are clear (so depending on context), I hate pointfree style applied to entire codebases and I think it's one barrier for Haskell's adoption.

---

Article also says: "Newcomers might think that the order of statements determines the order of execution."

But that's good, because the order of statements in a "do" expression does determine the order of execution. That's the whole point with monads and the "do" expression. That you can get away with applicatives instead, that's another point entirely.

Note that GHC nowadays has a language extension called "ApplicativeDo". So to take an example from the article:

do x <- Just (3+5)
y <- Just (5*7)
return (x-y)

In this case you just enable "ApplicativeDo" and it will magically use applicatives without changing the code.

The order of execution on the other hand will NOT matter, so you can still pretend that there's an order to it, because such code will be pure and it will not be repurposed to run in parallel or anything crazy like that, the only thing the compiler can do in such cases is to eliminate unused expressions.

Funny thing about Applicative being a super class of Monad, but "ap" / "map2" operations need to remain consistent with "bind" by law otherwise the implementation isn't valid. So it doesn't matter if the code above uses applicatives or monads, that's just an optimization, as for all practical purposes the result should be the same, order of execution included.

Of course, code using Applicative instead of Monad is more generic, since you have less restrictions, you can work with more types and the function signatures become more clear in what they do (the more abstract they are, the less they can do), so that's the primary reason for why Applicative is recommended whenever you can get away with it. No reason to bring the Monad chainsaw to the party when not needed.
> Ohhhh how I would have liked to just write DisallowRemoteAccess=true in a .service file and be done with it. Sounds like IPAddressDeny/IPAddressAllow would essentially let me do that.

You could set the

PrivateNetwork=

option which, ironically, is documented in the article we're commenting on:

> Provides a network namespace for the service with only a loopback interface available. A great option for applications that do not require external network communication.
You should have mentioned banking systems. They need to be legacy free more than others on that list.
thanks, added that one as well.
Liberals should oppose the lockdown
Like most of these these platitudes, it can mean whatever you want it to mean. "Optimize" - you mean "do the ideal thing"? Good thing that's so easy to figure out at the time...
"How was your experience?" [Great] / [Had issues]

So infuriating. And yes it disappears by itself after a while, but no, I do not need that dialog box.

Anyone know how to turn that off?
Yes, they had private networking. Now with VPC’s it is basically multiple ‘private networks’ within one account. As mentioned in the article.
Chef Andrew Zimmern says restaurants are facing a near-extinction event
Forces them to "learn" things they dislike and will never use in adulthood.
Does anyone know of a Firefox plugin that automatically adds a "!g" upon a gesture on mobile?

I'm asking because adding the "!g" takes about 6-7 screen touches so it's quite inefficient, and it basically keeps me from using DDG.
How to get away from Google (as much as possible)
This type of ad typically does provide information. It tells you what kind of person the product is for, and how the product should make you feel.
> Yeah, I also don't think that's correct, in most cases.

Actually, stupidcar assessment is completely correct.

> React updates the entire tree internally when anything changes, but actually only changes DOM nodes who's prop or state has changed.

Sorry, but you're mixing up a lot of concepts here!

When you tell react(-dom) to render, it recursively calls all the render() methods of your entire component hierarchy and updates the entire virtual DOM, but only mutates the actual browser's DOM for the parts that are changed.

Yes, there are ways to block a render based on prop staleness using shouldComponentUpdate/PureComponent/React.memo. These are explicit optimisations on top of the default render-everything model.

Props and State play into this story quite a bit differently.
When a component-local state changes react only renders that specific component (with everything below it). Props are passed down on every render and are by default not compared for staleness so don't prevent re-renders. Props and DOM updates have nothing to do with each other: props are properties of components, not the DOM! Sure, the DOM can be directly or indirectly be influenced by those props.

> Maybe a side-effect of the poor equality we have in JS-land.

Yes, this is true. A lot of reacts's quirks are a result of JS's poor notion of equality.
I work on an app that edits and renders fairly complex indoor floorplans to SVG, all using React.

We deal with large hospitals and airports, so it's normal for us to have tens of thousands of components mounted at once - pagination isn't a viable solution for our purposes.

We've had to tap basically every optimization that React apps can do when managing large numbers of elements - however this has been worth it for us:

- We can use the same code to render interactive plans on the client, and to render to print-quality PDFs on the server
- We can use the same framework in our UI and plan rendering

The downside is that it's more CPU intensive than alternatives like a WebGL renderer, but for now that's a tradeoff worth making.
Sounds pretty unlikely. You don't need OOP to have fairly DRY and well organized code that is nice and small.
Show HN: Credit cards in augmented reality, made with ARKit iOS
what's the problem ? it's legal C++ (https://en.cppreference.com/w/cpp/language/operator_alternat...) and imho more readable than && / ||
Investors Bet Giant Companies Will Dominate After Crisis
React isn't a library.

You can't drop a bit of it into your project. It distorts how you build the webapp.

jQueryUI is a library. You can add it in and your code is still vaguely the same.

React is a framework pretending to be a library so people can't say "Oh, what? another framework?"

As soon as you use React, you're in the react universe, not the normal webdev universe.

With a normal webapp, I can just import an external js library. With react, I must look for projects that translate those library into the react universe (react-bootstrap etc).
Are you both in the US?

It could be another "free for everyone" where everyone means "US only for now". Pretty frustrating when that happens.
It's not a paradox.

The decision of the court should be that the payment isn't due yet, not that the contract is invalid. Unless ancient Greek law requires the contract to be thrown out because it was tried in court or the case was clearly frivolous (IANAAGL) the decision should uphold the validity of the contract, not invalidate it.
>>"....you have restaurants opening, mandated in some cases by state laws to only be open with 25% of occupancy. Yet we're paying 100% of our rent. The numbers just don't add up."
I agree.

Writer Michael Feathers has an article where he suggests that Microservices are a replacement to encapsulation, all we have to do it use encapsulation well.

https://michaelfeathers.silvrback.com/microservices-and-the-...
This is great, we've been using Meet a lot since WFH started and it's been pretty solid and decent enough quality.

My only gripe and unless I'm missing it, it's not possible to log into Meet on Android without also logging into the Google account on the device too. This is frustrating because sometimes I want to jump on a work call but all I've got is my personal device handy. I really wish they'd separate out Meet App users from Device users like the iOS version of the app :(
In for instance Belgium and the Netherlands many constitutional rights have simply been suspended because of the Coronavirus. If you think GDPR is going to save you you’re going to end up disappointed.
Reinventing all parts for every microservice sounds wasteful to me. Especially if they handle the same data and/or use the similar business logic.
Idea is that you have a service that authorizes transactions
This is of course a good development for those cases where Jitsi is unstable. Although:

>Meetings are limited to 60 minutes for the free product, though we won’t enforce this time limit until after Sept. 30.

So actually it won't be different from Zoom because there's going to be an - albeit longer - time limit. Not enforcing this during the upcoming months of quarantine is a nice move.
structurally its vaguely similar, but the experience is not the same at all.
> Also, a proper solution for true fault isolation would have been one microservice per queue per customer, but that would have required over 10,000 microservices.

I'm a bit confused, they seem to imply that they need a microservice per costumer/destination, but you generically have one instance (aka process) per costumer not an entire separate codebase. The article seem to use the same term for two different concepts. Or i am missing something?
They are bad by design. You can just limit the torque on your cordless drill.
Except they didn't interoperate, Duo didn't work on laptops, Meet had terrible sound quality unless you had a $1000+ laptop because it used software video decoding...
Second paragraph says _with availability rolling out over the coming weeks_ so it looks like it might take a while for some people to get access.
That's the correct reaction. Ads like these are a blatant attempt at emotional manipulation, and they should be followed by placing the company on the "avoid buying anything from" list, preferably with two red minus signs appearing above your head, The Sims-style.
The Secret Benefits of Calcium?
DOM operations are costly whether you do them or React does them. What React offers is avoiding unnecessary DOM operations. However if you need to perform two operations, and React still needs to perform two operations, vanilla will be faster by avoiding all the extra work with VirtualDOM rerendering and diffing.
Virtual DOM is taken by many as granted and cost-free, which is not true. If your SPA is comples and hats a lot of components, then on each data change all thad virtual rerendering and diffing kicks off and even if at the end no DOM opreations need to be done, i.e. nothing changes visually all this adds up in terms of CPU resources.
I believe it does happen. https://en.wikipedia.org/wiki/Binjamin_Wilkomirski is not clear whether the subject lied about being Jewish or simply lied about his upbringing, but I'd guess the latter.
Sounds like a job for Erlang
Yes to adding to reminders from MM.
Reminders syncs to mobile — that can be convenient!
I think Meet == Hangouts Meet, now?
And maybe Google Hangouts Chat == Hangouts Chat == Google Chat?

But yes, your underlying point about the total ridiculousness of this is good.
Well, sports.

In my area, kids on the B team in FIFTH GRADE play over 55 basketball games a season.

That's more than any college.

It's the same lunacy for hockey, baseball, etc.

They get social interaction from the team, sure. But it's no longer a seasonal thing. It's year round and cancels out a lot of play time in the hood.
I just don't do online banking apart from my backup NetWest account that only has £50-100 in it.
Because if you share something (like auth for example), you should have microservice for that.
The question is not about duplicate code, but about duplicate libraries that handle the same thing.
Decoupling the auth process into separate microservice removes the bottleneck.