2,562 karma · joined March 3, 2008
Well, that's not entirely true for a number of reasons. For example, if you look at a game like Street Fighter II, there are around 4 unique frames of animation for throwing a fireball. So any rollback that occurs there will hardly be noticeable. In newer games though animation frames are interpolated in different ways so you might have 10x more frames of "unique" animation. This makes rollbacks much more noticeable and jarring, especially in games with 3d models. Then you have the much trickier issue of audio rollbacks. This is even noticeable in games like SFIII:3rd Strike, where you might have the "KO!" audio effect play right as a rollback occurs, leading one player to think the round has ended before they realise a rollback occurred. For some extremely bad examples, search for some videos on Street Fighter x Tekken's, terrible RBN implementation. One of the ways developers get around these challenges is to add artificial delay to things like sound effects, adding more startup frames to moves, and adding massive amounts of hit-stun AKA "impact freeze" making games feel less snappy. For some games these things are not such an issue because traditionally these games rely on "slower" inputs and higher impact freeze because of the game's system mechanics, but in other titles the games just feel worse to play "offline" than their predecessors. For the most part, these are just "veteran player" issues. Newer players are not likely to notice them.
In any case, the bottom line is that RBN is not a panacea to online lag. Your game needs to be designed from the ground up to cater for it, unless you're willing to make certain compromises in online play.
Take for example Gartner's definition:
> A microservice is a service-oriented application component that is tightly scoped, strongly encapsulated, loosely coupled, independently deployable and independently scalable.
That's not too controversial. But... as a team why and when would you want to implement something like this? Again, let's ask Gartner. Here are excerpts from "Should your Team be using Microservice Architectures?":
> In fact, if you aren’t trying to implement a continuous delivery practice, you are better off using a more coarse-grained architectural model — what Gartner calls “Mesh App and Service Architecture” and “miniservices.”
> If your software engineering team has already adopted miniservices and agile DevOps and continuous delivery practices, but you still aren’t able to achieve your software engineering cadence goals, then it may be time to adopt a microservices architecture.
For Gartner, the strength of Microservice Architecture lies in delivery cadence (and it shouldn't even be the first thing you look at to achieve this). For another institution it could be something else. My point is that when people talk about things like Microservices they are often at cross-purposes.
Cardinality in modeling (relationship cardinality) refers to your relationship type i.e. 1:1, 1:M, M:M
Cardinality w.r.t. data refers to how many unique values a particular column can have. e.g. a Primary Key has high cardinality because every row has a unique value. A boolean flag has low cardinality because it only has two values.
TBH, I'm not 100% sure which one the OP is talking about here because you need to factor in number of joins and indexes etc, but from the perspective on relationship cardinality, you can think of some of the common differences in modelling for OLTP ("real time" databases) and OLAP (data warehouse etc).
The former would generally have smaller tables and more joins, while the latter would usually have relatively massive tables which inherently could imply fewer joins, but this is often not the case. It just depends on your system and use-case.
In this case, there's a table that an ETL job loads data into several times a day. The problem is the original dev(s) thought it would be a good idea to add status columns to this table that the application can write to when it has finished processing the data ("InProgress", "Finalising", "Complete" etc). What does this mean now? If the load process takes longer than a minute or so, user interaction is blocked and ultimately deadlocked. This is extremely poor database (and system) design. The application never needs to update the "loaded" columns. So all modifiable columns should be moved to a separate table and updates either need to be serialised or written at the appropriate isolation levels. Now try to get any of these changes through during the Xmas period...
This is somewhat related to a refactor of another system I performed last year. The system had one Auditing microservice that wrote to a massive table with some keys, identifiers and metadata. Ignoring the fact they needed to write an auditing microservice to begin with, the problem was every time a new part of the system needed auditing the table needed to be modified. And every time you did a query, 70% of the columns were null. Again, this is very poor design. I deleted most of the columns except the identifiers and keys, separated the metadata into their own tables with a foreign key to the Audit table, and left-joined everything. Same result, but far less of a hassle in terms of maintenance and scalability.
[EDIT] I should probably end with this: Make your tables as big or small as they need to be considering your use cases.
Also, while it could also be useful, over the years I've started moving away from things like using `!` to negate things. It makes it slightly harder to read and it ruins the symmetry of my code. And lord knows SQL doesn't need any more of that. It's probably the only language I use often where I have to place my commas at the start of the line; where I need to add a first filter as `1 = 1` etc just to make it easier to comment out things quickly.
What I personally want most is the ability to move the FROM clause to the top (this is a no-brainer) and better aliasing rules. The alias I used in my SELECT should be accessible everywhere in the statement.
But this blog post literally says "The death of Quanta Magazine", and in the same breath talks about "journalistic standards".
I'll be honest. I found it very hard to read beyond this line. I powered through though.
Here's the tldr: It's a rant about details in one specific article.
It was a massive waste of time and energy.
Having said that, the sequence diagrams were quite useful.
Why can't I say:
"I like how C# implements XYZ"
instead of
"I don't like the C# development environment, but I like how C# implements XYZ"?
What value is there in qualifying every aspect of a discussion given that you cannot fully dissociate <A> from <B>?
I have never had significant problems with Java-the-language. But, like with many other programming languages out there, you can't really dissociate the language from the environment and everything that goes with it. The paradigms, VMs, IDEs, patterns and practices etc etc.
And for the record it's not just Java (it just seems to be more pronounced in the Java-development ecosystem). For every person who waxes lyrical about the joy of working with C# (for example), there are 3 more that will tell you anecdotes about "assembly hell". Or how Visual Studio is slow and a massive memory hog. Or that there is no proper Forms support on XYZ-os.
Those are all fair points, but more often than not, they have little-to-nothing to do with current discussion. IMO, I think it's usually far more productive to try to understand the discussion in context than to veer off into irrelevant semantic issues or tangential anecdotes.
This should be the SAP tagline. I swear I've heard this since I started working with SAP in maybe 2009(?) as well - I had a brief stint as an ABAP developer.
"You need a few more years of study before you can fully understand. But! You have a 600 page textbook. Do every exercise in that book. When you can do that without assistance, get another 600 page textbook and repeat."
He was trying to get us to build an intuition for certain class problem solving, while at the same time saying "Shut up and calculate".
I find that problem-solving in the programming space is the same. Just keep doing things. You'll develop an intuition for it eventually.
Tangential question, but why did Audacity seem like the obvious choice? Not a knock on the product - I use it often - but I'm just curious about why it was chosen.
40 minute ads? Who even does this? The only way someone would even consider watching this instead of the content they actually clicked on would be if someone let it autoplay. This is the kind of thing my 5 year old nephews would do.
Absolutely disgusting predatory behaviour...
But now they're advertising even if I simply open the app. Furthermore, they're "hiding" 14 second ads behind the shorter 6 seconds. I've even seen 41 minute advertising content. I'm guess they're banking on users leaving the app on "autoplay" to dupe advertisers into thinking that people actually consume this trash.
These days I just cancel every ad out of principle until the video plays. This takes on average 6-7 attempts. But now more often than not I just quit the app completely. So they are depriving their own content creators of views. And then they have the gall to present surveys asking what my advertising experience has been like...
https://ask.usda.gov/s/article/Can-you-get-botulism-from-gar...
In any case, I'm not here to preach. I would just like people to have some honesty and perspective in their opinions and arguments.
You're willing to risk the lives of the elderly and people with people with a less-effective immune response if you think the lives of the general population would be "better off"? Just say so. If people feel uncomfortable doing this realise that part of that discomfort is called "cognitive dissonance" (and realise that decision-makers have to do the same thing). Have a serious conversation with yourself before you decide that you need to create anonymous accounts on the internet to air your views.
I'm going to be frank - I don't think you care about the bigger stuff that much in comparison. You just care that your life was affected. Just like you don't care that much that some random civilians in another country were killed because of <insert injustice>.
Am I wrong?
EDIT: I'm not saying I'm any different. But I have experienced the effects of COVID19, so to me it's not a "small" thing. I'm still living with the effects every day.
I've been vaccinated (double-shot), after I got COVID 1 year ago. I've got Omicron afterwards - a mild cold, but noticeable. I've lost 3 family members to Covid19. My sister still hasn't fully recovered her sense of smell/taste after a year. The hospitals in my country were legitimately overrun for several months (I'm from South Africa). The infection rate was under-reported in some areas due to corruption but the excess deaths are undeniable.
Yes, COVID19 can kill. Yes, there can be some long lasting effects. Yes, some things are over and under-stated, and some governments have under/over-reacted (to the point of being draconian). Yes, many people are asymptomatic and can carry on living as if they were never infected. Yes, some of these asymptomatic people can infect others who don't have the same type of immune response. Yes, vaccines are effective against the variants they were designed for, and less effective against the mutated variants (how is this news?). Yes, even the less effective vaccines help against serious symptoms, death, and the overwhelming of health services. Yes, masks help against Covid and other airborne disease. Yes, washing hands help against bacteria and other some types of viral infection including COVID19.
What am I missing? What is it that people don't understand about the situation? Why are people so upset about this, but not upset about things that are arguably more detrimental to the livelihood of the entire human race?