News for hackers. Stuff that matters.
Re:Building a patient monitoring system with Go and Vue in 3... by naasking on Saturday May 02, 2020 @11:17AM (#23052217)
It's unfortunate "real-time" is getting so heavily overloaded. It used to mean "guaranteed bounded latency".

"Real-time" is now being used for streaming APIs to mean "small latency on average, but no guarantees".

Re:Building a patient monitoring system with Go and Vue in 3... by PudgePacket on Saturday May 02, 2020 @11:27AM (#23052277)
I assumed they used the words "real time" in a patient monitoring sense to mean Doctors being able to monitor patient data without having to go between rooms themselves or wait for reports.

Kind of how you'd say you have a dashboard for your business to see metrics in real time (as opposed to some kind of daily report).

I think that usage of real time is very common outside of a pure engineering sense, so you're being a bit of a stickler by being annoyed at this specific instance ;)

Re:Building a patient monitoring system with Go and Vue in 3... by sergiotapia on Saturday May 02, 2020 @11:47AM (#23052393)
When I learned about this stuff years ago with SignalR this was called soft real-time.

My Phoenix channels, your rails action cable, your web sockets: soft real-time.

Real-time was reserved for true real time guaranteed delivery times.

Re:Building a patient monitoring system with Go and Vue in 3... by cma on Saturday May 02, 2020 @02:56PM (#23054017)
I always heard hard real time for that, and "real time" could refer to either and was often used when talking about game rendering, etc.
Re:Building a patient monitoring system with Go and Vue in 3... by naasking on Saturday May 02, 2020 @12:10PM (#23052592)
> Kind of how you'd say you have a dashboard for your business to see metrics in real time (as opposed to some kind of daily report).

I think calling it a "streaming" or "live streaming" interface is a better descriptor than "real-time".

> I think that usage of real time is very common outside of a pure engineering sense

Maybe, but we're talking about the software engineering world here aren't we? I think we should seek to be precise with our terminology and try to avoid unnecessary ambiguity.

Re:Building a patient monitoring system with Go and Vue in 3... by mholt on Saturday May 02, 2020 @01:18PM (#23053266)
I agree with you and have upvoted your comments, however, I'll also note that we distinguish between different disciplines in software engineering. "Real-time" has a very spceific definition in embedded systems and OSes, but this is clearly high-level application more tied to business logic than, say, rocket control systems.

I think both uses of the term are acceptable in their different contexts. (But yes I also agree "streaming" is a very good term.)

Re:Building a patient monitoring system with Go and Vue in 3... by lobotryas on Saturday May 02, 2020 @11:53AM (#23052447)
I don’t see why you had to call him out. “REAL TIME” is also an engineering term with a strict definition. If You paid me for a real time stock ticker and you later found out it had a delay of a second or two you would want a refund.
Re:Building a patient monitoring system with Go and Vue in 3... by joshuak on Saturday May 02, 2020 @12:16PM (#23052657)
Asking for a real time stock ticker is also not using "real time" as a term of art, having a 2 second delay in stock data might be a failure to deliver on application requirements, but it is not necessarily a failure to deliver a "real time" system if the 2 second delay is strictly reliable.

The non strict usage is far more common then the term of art. One would be well advised not to assume "real time" is being used as a term of art unless specifically called out, or clear from the context.

I'd say common usage of the phrase "real time," means with respect to human perception, and that is how its being used here.

Re:Building a patient monitoring system with Go and Vue in 3... by naasking on Saturday May 02, 2020 @12:23PM (#23052716)
> I'd say common usage of the phrase "real time," means with respect to human perception, and that is how its being used here.

So do you consider YouTube a real-time system? After all, images are moving on your screen "in real-time" from the user's perspective.

It seems to me that these are all streaming systems, and when the data is "live", then it's "live streaming".

Even colloquially, I hazard that "real-time" has some implication that there's some correspondance between your temporal reference frame and the original temporal reference frame. I think the engineering definition just made that correspondance precise.

Re:Building a patient monitoring system with Go and Vue in 3... by joshuak on Saturday May 02, 2020 @12:34PM (#23052828)
I'm not speaking to what I consider "real time," I'm speaking to how it is commonly used as a phrase . But given that...

Yes people do say "real time playback" with respect to video. Generally, however, that is only noteworthy to call out when its unusual. Such as "real time 16k playback."

Re:Building a patient monitoring system with Go and Vue in 3... by lllr_finger on Saturday May 02, 2020 @08:25PM (#23055964)
You're not wrong that the distinction isn't terribly important for this story, however that term absolutely has meaning in the world of fintech and places reporting on financial news - near/soft real-time are very distinct from real-time.

It's been 5 years since I've worked in that industry, but I still view the use of "real-time" the same way and can understand some people's issue with the term in this case.

Re:Building a patient monitoring system with Go and Vue in 3... by pgwhalen on Saturday May 02, 2020 @11:56AM (#23052471)
This comment always shows up and I find it strange. Surely engineers can realize that while "real-time computing" has a strict definition, the phrase "real-time" has much broader meaning and it bumps up against the software world very often.
Re:Building a patient monitoring system with Go and Vue in 3... by naasking on Saturday May 02, 2020 @12:12PM (#23052609)
Sure, but this is a engineered solution we're talking about. Don't you think it should use the engineering terminology?

I'm not calling out this person specifically, I'm just hopeful that we can use more precise terms instead of overloading existing ones. I think "streaming API" or "live streaming" is a better fit for these purposes.

Re:Building a patient monitoring system with Go and Vue in 3... by fragmede on Saturday May 02, 2020 @02:06PM (#23053654)
If we're going to play that game, then "real time" may never have come to refer to the hard system guarantees as you think of them.

The earliest computers didn't even include an operating system, never mind one with real time guarantees as we think of them today. You submitted your program on paper tape (later, punch card.) and hours later, you'd get the output. This was the batch computing era. The idea of getting a (soft) real time response from the computer (which was the size of a room), was unheard of.

As computers evolved, real time systems came to refer to computers that operated on the opposite of batch computing. The user could interact with the system in "real time", rather than having to wait hours after submitting the job for the results.

Later on came the distinction between systems with hard real time (vs soft) guarantees. Computers didn't have the same CPU speed that we have access to today, so even audio processing required special real time guarantees.

Eventually, "hard real time" was shortened to "real time", which takes us to today.

Systems which have existed since the dawn of computing such as banks back in the 50's, or the IRS, still hold onto the batch vs real time nomenclature, possibly because batch processing systems still exist. Banks still process records nightly in batches, some even still run on newer versions of the same IBM mainframes, though some are starting to move to "soft" real time systems. (If you ever wondered why it can takes days for a check or bank wire transfer to clear, this is why.)

Re:Building a patient monitoring system with Go and Vue in 3... by naasking on Saturday May 02, 2020 @06:17PM (#23055337)
So your argument is that the term "real-time" didn't exist back in the mainframe and batch processing days, so we can't give it a technical meaning now?

Look, this is simple: literally all of our technical textbooks and engineering manuals agree on what "real-time" means.

If people were running around calling their smart phones "desktop computers", or "laptops", or "mainframes" you'd be very confused I think. Sure, smart phones and desktops these systems have a lot in common, even run a lot of the same code, and sure our phones have more computing power than mainframes back in the day, but overloading this term conveys literally no benefit and actually creates confusion.

Of course I'm pissing into the wind here, but whatever, if I've convinced even a couple of people to be more precise with their terminology, I'm fine what that.

Re:Building a patient monitoring system with Go and Vue in 3... by jhayward on Saturday May 02, 2020 @02:23PM (#23053775)
> real time systems came to refer to computers that operated on the opposite of batch computing. The user could interact with the system in "real time", rather than having to wait hours after submitting the job for the results.

As someone who grew up with those systems, this is a major mis-statement of the terms.

In the early days the terms were "batch", "online", or online's near-synonym "interactive".

Real-time has always meant bounded-latency and guaranteed execution since the earliest days, to actual computer systems engineers.

It is a true statement that many people use the term differently today - much to the detriment of precise communication between humans. But there was never any confusion about the term until perhaps the 90's and widespread interactive screen-based applications.

Re:Building a patient monitoring system with Go and Vue in 3... by matz1 on Saturday May 02, 2020 @04:26PM (#23054645)
Word meaning and usage always evolving, never static. The term real time might not meant as it used to back then.
Re:Building a patient monitoring system with Go and Vue in 3... by bluebknight on Saturday May 02, 2020 @01:37PM (#23053439)
The real problem in speech is not precise language. The problem is clear language. The desire is to have the idea clearly communicated to the other person. It is only necessary to be precise when there is some doubt as to the meaning of a phrase, and then the precision should be put in the place where the doubt exists. It is really quite impossible to say anything with absolute precision, unless that thing is so abstracted from the real world as to not represent any real thing. Richard Feynman
Re:Building a patient monitoring system with Go and Vue in 3... by sb8244 on Saturday May 02, 2020 @11:37AM (#23052338)
I agree that this is soft real-time but think that the usage is pretty clear in the web world. I'm not sure it's a bad thing that is taken on a different meaning in a different context.

I view real-time as "the clients reflect the true state of the world without taking action." So if something changed the state of the world, all clients paying attention to that should also be updated.

Re:Building a patient monitoring system with Go and Vue in 3... by erikpukinskis on Saturday May 02, 2020 @01:06PM (#23053151)
I’ve been working professionally in the web for decades and I can’t remember anyone ever using the term “real-time”. I hear “live” a lot. Live updates.
Re:Building a patient monitoring system with Go and Vue in 3... by sb8244 on Saturday May 02, 2020 @01:11PM (#23053187)
I'd probably use "live updates" as well when casually talking about a feature. I think I'd use "real-time" when describing the system as a whole.
Re:Building a patient monitoring system with Go and Vue in 3... by naasking on Saturday May 02, 2020 @12:20PM (#23052694)
> I view real-time as "the clients reflect the true state of the world without taking action." So if something changed the state of the world, all clients paying attention to that should also be updated.

That's a perfect description of "live streaming".

Re:Building a patient monitoring system with Go and Vue in 3... by sb8244 on Saturday May 02, 2020 @12:25PM (#23052737)
Which has completely different meaning in the web world. Context matters.
Re:Building a patient monitoring system with Go and Vue in 3... by naasking on Saturday May 02, 2020 @12:27PM (#23052757)
No it doesn't. It's literally the same thing: "soft" real-time streaming of data.

Medical data in one case, moving images and audio in another. The properties are the same in either case, that's why the term fits.

Re:Building a patient monitoring system with Go and Vue in 3... by sb8244 on Saturday May 02, 2020 @12:30PM (#23052785)
My point is that when you say real-time in the web world, you can assume "soft real-time" because of the context. You would use specific language like "hard real-time" if it was so.

Saying context doesn't matter is just ignoring how everyone else uses language and saying that your view of it is right.

Re:Building a patient monitoring system with Go and Vue in 3... by naasking on Saturday May 02, 2020 @12:42PM (#23052925)
I meant that "live streaming" doesn't have a different meaning in the web world.

So now we have two terms referring to exactly the same thing, which doesn't resolve the term conflation problem I initially wrote about. The "web world" context isn't that different from the larger software engineering world that they should repurpose engineering terms.

> Saying context doesn't matter is just ignoring how everyone else uses language and saying that your view of it is right.

I am saying that web programmers do tend to use professional language wrong, that it's unfortunate, and that we should try to correct it when it happens. I don't think the first part is controversial, but apparently trying to insist on precise engineering terminology when talking about engineering systems is controversial.

Re:Building a patient monitoring system with Go and Vue in 3... by sb8244 on Saturday May 02, 2020 @01:03PM (#23053118)
Here's material from Carnegie Mellon going over different real-time systems https://users.ece.cmu.edu/~koopman/des_s99/real_time/

This page classifies a broad definition for real-time and then breaks into different categories (hard, soft, fail-safe, fail-operational).

Is the default definition of real-time "hard real-time", or does it always need to be defined by its classification?

My point around context is that no one in the web world is saying that soft real-time systems are hard real-time systems. That would be blatant misappropriation of a term. They are saying that "real-time" defaults to "soft" in the web world. Just like "real-time" defaults to "hard" in the embedded world.

I don't know if I would classify this project as the embedded world (despite it using hardware), because it's consuming a stream of packets and isn't at the actual physical device level. I may be misunderstanding what they're doing, but I believe this to be the case.

The broader reason why I commented in the first place is that your comment feels like gate-keeping of a term when most people are going to quickly pick up on the context of how the term is being used. I understand and agree with your point around hard vs soft, but I don't think it's as clear cut as you seem to think it is regarding what the default classification is in different contexts.

Re:Building a patient monitoring system with Go and Vue in 3... by egeozcan on Saturday May 02, 2020 @11:25AM (#23052260)
Is there a more correct marketing term for "small latency on average, but no guarantees"?
Re:Building a patient monitoring system with Go and Vue in 3... by junke on Saturday May 02, 2020 @11:32AM (#23052302)
Re:Building a patient monitoring system with Go and Vue in 3... by airstrike on Saturday May 02, 2020 @11:51AM (#23052422)
Some might argue that is the default meaning of "real-time" these days

Maybe you guys ought to call hard real-time "Guaranteed bounded latency" when needed.

Re:Building a patient monitoring system with Go and Vue in 3... by mrits on Saturday May 02, 2020 @11:25AM (#23052264)
I agree. In my experience it now means anything that could be shown during a sales demo without needing intentional pauses.
[dead]
Re:Building a patient monitoring system with Go and Vue in 3... by kortex on Saturday May 02, 2020 @12:28PM (#23052769)
Downvote because 5 minutes is absurd as a STW GC time, for ANY gc language. Heck, I wouldn't accept 5 minute lag in a python prototype.

Even in the dewey eyed early years, Go saw STW latency in the hundreds of milliseconds. By 1.8 it's in the hundreds of microseconds.

Your hard-real-time is out the window as soon as routing and UDP is involved. The intent is "real time bounded by the amount of time it would take doctors to react to a code blue (heart issue/failure". One second of reaction (thousands of gc's, dozens of health checks, a near eternity in program time) isn't going to make a difference when human reaction time latency is hundreds of milliseconds.

Call it "live streaming" if that sounds more objective, but conceptually if the clients (humans) don't perceive a difference in state, it's real time (to them).

Save the milliseconds-hard-real-time talk for rockets and cars.

https://blog.golang.org/ismmkeynote

https://www.reddit.com/r/golang/comments/aetba6/gcs_stw_paus...

Re:Building a patient monitoring system with Go and Vue in 3... by andi999 on Saturday May 02, 2020 @03:42PM (#23054331)
I agree with the absurd for any gc language, but doesnt mean it is not happening: https://plumbr.io/blog/garbage-collection/revealing-the-leng...

Would love to see a worst case analysis for go though. (My worry is, that long running applications are more prone to extensive gc stw, since os starts to swap pages, and gc tries to access them, might take a while)

Of course if you can guarantee that go always has stw gc for less than a second (or even 10 seconds) that would be great (and make go a hard real time language, of course not a very fast one)

Re:Building a patient monitoring system with Go and Vue in 3... by joshuak on Saturday May 02, 2020 @12:06PM (#23052557)
I'm sure that this is just hyperbole, but I can't imagine this not being a perfectly reasonable context in which to deploy a go application.

In my mind "real time" as a term of art applies to things like hardware control systems with very strict tolerances.

Although, as a hacking challenge I'd love to see the most catastrophic delay one could plausibly accidentally code into a go application.

Re:Building a patient monitoring system with Go and Vue in 3... by spyspy on Saturday May 02, 2020 @12:51PM (#23053018)
If your app stalls for 5 minutes you probably forgot to delete the time.Sleep() you threw in while debugging.
Re:Building a patient monitoring system with Go and Vue in 3... by buildbot on Saturday May 02, 2020 @01:43PM (#23053485)
Or you're in python and call asyncio.gather(*list_of_1_million_futures) That'll hang for a bit.
Re:Building a patient monitoring system with Go and Vue in 3... by onebot on Saturday May 02, 2020 @11:56AM (#23052473)
5 minute stop-the-world garbage collection? Go has done quite a bit to improve garbage collection times. I don't honestly believe that it could get anywhere nearly as bad as you imply it to be.
Re:Building a patient monitoring system with Go and Vue in 3... by corporateslave5 on Saturday May 02, 2020 @01:01PM (#23053106)
It’s more the case that your usage of the term is outdated, but you still complain that the world doesn’t conform to your understanding