what a simp, they have been "saving the world" since forever, it's how they make money. But sure we should give them credit for something we've already paid, now. Zero percent of that money is going into lobbying for their interests instead of the public's.
And how much of those spoils does Big Pharma deserve solely? Were there not other players who had a hand in this victory? Should they not share in the reaped economic value?
I'm talking, of course, of the public that paid for the development and roll-out of the vaccines.
The public didn't just pay for the development but also provided social and economic structures, infrastructure and education that allow these companies to exist in the first place.
Even if one believes that vaccines deserve all the credit for returning the world back to normalcy, Big pharma didn't save us. Scientists and other staff directly involved in R&D deserve the credit and they would continue to exist even if their work was organized in another, more efficient manner. I find it quite disturbing when the role of profiteering corporations is glorified like that.
"love is all you need" is the Beatles lyric they're referencing, the title could also be read as a statement on the basic human need for attention, like love, so it's a play on words for me. Do you prefer humorous allusion?
Going to echo the suggestions for the Art of Problem Solving books, particularly I recommend the contest books (vol 1 or 2). Several very talented people have said to me that these books taught them how to think. Maybe a bit exaggerated, but they’re very good.
That’s true, but my view is even if the original article is unbiased, the selection process by which it was chosen to appear on this periodical with the reach it has introduces some statistical bias.
Human Revolution was wonderful, but Mankind Divided had such bizarre pacing… I was ~15 hours into Prague, waiting for the transition to the next locale like in all of the other Deus Ex games, and then the story ended… sigh
That is because the publisher Square Enix forced the developer Eidos Montreal to split Mankind Divided into two games, and then they canceled the second game. Thankfully the IP and developer has been bought by a holding group that actually knows about gaming, Embracer Group.
I agree it's a pretty bad name. But they seem to have an okay track record of buying studios and publishers and letting them be. Then again, maybe they are the villains and they're going to one day direct all of this acquired talent to producing the ultimate cash cow live service free to play bullshit game.
Human Revolution had one of the best gaming preludes. You had no augmentations, and then you get rocked. The opening credits while you're in surgery, chefs kiss. Obligatory "I never asked for this"
Though this site is under appreciated and less than up to date now they produced a fantastic interview with the director and opening sequence director. The additional images and videos make it really shine.
Interestingly a few people really dislike the intro to both DXHR and DXMD - and contrast it with the original Deus Ex where you effectively just hop in and start running around liberty island. If they added a skip to those sequences or created a "New Game (post-intro)" option on completion that might have been nice.
Both games definitely feel rushed gameplay and story-wise, I always wonder what they'd look like if they got a bit more love
I thought the mankind divided opening was pretty good as well. The terrorist attack really surprised me, and for a few seconds I felt like I was there.
Deus ex is by far my favourite universe, it's such a shame it isn't better developed.
I barely made it past the first 20 minutes before giving up for MD. Somehow the experience was wildly different from the HR despite the mechanics being mostly the same.
One thing I think was a big contributing factor to my enjoyment of the first game was the soundtrack. The first time you enter the Sarif Industries building and https://www.youtube.com/watch?v=CAljZX-9HMI starts playing - chills.
I did the same thing - I was very confused at first. Once you orient yourself though in that initial city and get a bit into it then it becomes very very good. I think I may have been playing years after with all the bugs fixed and the DLC's added and whatnot but I thought they killed it with that game. Still hoping we get another!
I also stop at the tutorial on my first try, then later I tried again, and now I like it more than Human Revolution, it's better in all aspects, except maybe the story for ending abruptly.
> "JC Denton" is said to be a codename, and the player can create JC's true name and pick from a variety of preset appearances.
Hmmm, I don't remember that either—and JC is also sort of a meme with his default appearance (presumably), used as userpics on Youtube and elsewhere. So I guess many just picked the first look offered. Seeing as JC is considered very much a ‘blank character’, there probably wasn't much of a meaningful difference in the choice.
It's easy to miss that you can change the appearance (it's just a couple of little buttons) but you do see his head and shoulders: https://www.youtube.com/watch?v=iX_YSpI5a9s
The parent commenter means to say that for most of the game in Deus Ex, the player doesn't see the protagonist. (Can't remember if the cutscenes shown him from a third-person view.)
The cutscene experience was funny if one happened to have both legs shot—so JC crawls around for hours, then stands up during a cutscene, and afterwards plops down again and proceeds to crawl to completion of the level.
I believe there may have been an unfortunate GEP gun incident where I found that out.
I kinda miss stuff like that.
Sadly, when things break like that now (looking at you, Bethesda) it usually leaves the game in an unplayable state, versus reverting to a known-good state.
Fun fact: afaik many games, starting with Duke Nukem 3D, implement mirrors by just having the entire room built out behind the glass, with duplicates of the objects moving on that side. In DN, with some noclip trickery or something, one can move into the ‘mirror room’, or observe the whole level with the double rooms.
Yes, that's why you need to make such a room when making a map with a mirror in Duke Nukem 3D.
Modern games also do a lot of tricks when it comes to mirrors. Real reflections are expensive. Though they're becoming increasingly common thanks to the ray tracing hardware on recent graphics cards.
As a player I recently noticed that in The Last of Us Part 2, when you're in front of a mirror the windows give off an unnaturally bright light to hide that the outdoors area wasn't reflected.
Michael McCann is a genius and deserves way more credit for Deus Ex than he is given, but he was responsible for at least half of the Mankind Divided soundtrack too.
Some of the DLC for Mankind Divided is excellent, though. You should check it out if you haven't.
The worst thing about MD is the stability and bugginess. I recently replayed both, and HR is still (and more-or-less always has been) pretty damn solid.
MD, meanwhile, had intermittent jankiness in the UI including getting itself into states that required a restart to fix, wild swings in framerate, and crashed probably a half-dozen times in my playthrough (which wouldn't be a bad stat for a game in, like, 1999, but is now). I think HR crashed maybe once, but I may be mis-remembering and it was in fact zero times, and that was a much longer play-through.
[EDIT] Oh, one nice touch in MD was how they improved balance on hacking. No more ending the game with 500 pieces of hacking software because it was so easy. No more feeling compelled to hack everything even if you already had a code for it, for the XP. New UI's terrible and (on PC, at least) buggy, though :-(
I played MD recently again, including all the DLCs. It was not unstable or buggy at all. I played under Linux, but am not 100% certain anymore that I played the Linux version and not the Windows version via Proton. In any case, maybe something to test next time you play it.
There is only one DLC I'd call excellent though: A Criminal Past. The others sadly are not great. Desperate Measures might be included now, but is just missing content from the main story, suffering by it being not integrated properly and it saw clearly less design work. System Rift saw even less, it's made cheaply - but not not fun and at least a story of its own. And then there is A Criminal Past, better than some parts of the main game, the only one I'd absolutely recommend.
It does not end in Prague. You leave and come back to Prague a couple of times, each time it’s more locked down and hostile. Finale is weirdly in a convention center in London.
Not sure if this will sway you but the entirety of the MD version of Prague is fictional. Překážka doesn’t exist, the main train station doesn’t look like that, Golem City isn’t a thing, there are no oppressive riot police stalking the streets :-)
The things that put me off Prague aren’t in the game, and likely wouldn’t irritate a tourist
I don't think it's a universal property of functional languages. Haskell is also strongly (excessively) typed, down to the level of modeling computation itself, and it's lazy.
See, when you are defining a Haskell program, you are conceptually creating a tree of thunks that eventually get executed by the GHC runtime. Those thunks are typed, meaning they have typed inputs and outputs, and are either side-effect-free or are defined in a context that controls their side effects (e.g. the IO monad).
So you can change the definition of types willy-nilly and either get a working compiled program or some error output that tells you exactly what is broken or doesn't make sense to GHC's model of your proposed computation. Because computation itself is typed, you have a stronger guarantee that it will work as expected when executed by the GHC runtime. Because side effects are controlled, you are forced by the type checker to handle runtime errors (or crash).
At least that's how I understand it as someone who works with gifted Haskell engineers, but exists very much on the periphery of understanding.
> Because side effects are controlled, you are forced by the type checker to handle runtime errors (or crash).
This is generally true in idiomatic Haskell code, but in fact even pure functions in Haskell can throw runtime exceptions, and you are not forced to handle these.
Bottom has to be a member of every type because functions aren't guaranteed to terminate, so there's no really any way around that within the confines of a general purpose programming language.
That admittedly doesn't entail that Haskell ought to have special functions like 'error' that invite the programmer to explicitly introduce bottom values as a mechanism of signaling errors. However, in the real world, executing any function may raise an exceptional condition at any time (e.g. an out of memory error), regardless of programming language.
More info here: https://wiki.haskell.org/Bottom As bottom is the value of a non-terminating computation and a computation of any type may fail to terminate, bottom must inhabit all types. The same goes for 'error'. Although in real world Haskell code (using GHC) you can trap error values if you really want to, so 'error' isn't in fact indistinguishable from non-termination.
A functional language is fundamentally one where the same inputs always produce the same outputs. So you can e.g. change the order of two function calls and be confident that that's not going to change the behaviour, without even running it. In a language with pervasive state mutation, essentially any change you make to the code might change what the program does, so you have to test every little thing. https://www.lihaoyi.com/post/WhatsFunctionalProgrammingAllAb...
Type systems of functional languages are generally capable of representing more. You can have the type system validate application state at compile time for you, for example.
If it compiled before and worked and your refactored version also compiles, chances are you didn't break anything.
> If it compiled before and worked and your refactored version also compiles, chances are you didn't break anything.
And I would say that if somebody never worked with Haskell (or some other language with a strong type system like Idris) they can bit fantom what is possible to encode in the type system.
One practical example: if you have a union of A|B, and you decide to add a third shape C to it, your program won't compile until logic for C is written in all the places where A and B are already being matched against. Refactoring often means changing data models, then letting the errors walk you through the actual implementation details.
Yeah that's how it's supposed to work. Historically, Haskell didn't always make incomplete patterns an error, even now the checker isn't perfect, and even if it was people can still put wildcard patterns.
With mutable state every function has an implicit dependency on other stuff. Without mutable state your function depends on its arguments, and produces only a return value. No moving parts or implicit dependencies = you can cut and paste stuff around the code base like there is no tomorrow.
Because it is more difficult to make a change that affects other code without a change in types occurring, which will make compilation fail until all affected code is updated.
In addition to the type system, I'd also add purity. If you have a function f :: a -> b, there is literally no way for f to read anything besides a, or affect anything besides returning b (aside from unsafePerformIO, which you can ban from your code.) so if you want to refactor f, you know exactly from the call site everything that needs to be updated.
all state is factored, so it can easily be refactored.
It’s mostly the type system. Ocaml is the same. Static typing, type inference and the easiness of introducing complex types really help when it comes to fitting the code together. Beginners tend to think that "if it compiles it works" and it feels that way sometimes but you lose the hubris once you are bitten by a bug complicated enough to pass though.
Perhaps it is easier because Peyton Jones is a world class expert in Haskell and have 30 years experience refactoring it?
In my experience the ease of refactoring is more depending on the quality of the code you are refactoring than the language. That said, a strong type system helps avoiding stupid mistakes and Haskell have a very strong type system.
Lying to your payment processor about what you really sell typically always ends up in the same way. They catch up with you and your account is terminated.
Ask all those CBDs sellers that pretended they were selling "supplements", takes a while but eventually.. all shut down.