Hacker Newsnew | past | comments | ask | show | jobs | submit | wallscratch's commentslogin

Can anyone comment on how efficient the Warp code is compared to manually written / fine-tuned CUDA?


They literally just saved the world, and we’re not going to give them any credit for it…?


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 we paid them extremely well to do so.

They made $18bn in profit. And the founder is with $6bn.

That’s plenty of credit.


What's the economic value of returning the world to normalcy? It's in the trillions.


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.


They were funded by public money...


I’m sorry, but what is the play on words in the title “Attention is all you need” here?


"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.


Does anyone have suggestions with where to find more exercises? I notice the book pdf has like ~38 total, but was curious where one would find more.



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.


Please don’t tell me that you don’t see the irony of the holding group being named “Embracer Group”. It’s literally an antagonist name.


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.


The name is tongue-in-cheek. That you're here commenting about them means it worked.


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"

Opening credits: https://www.youtube.com/watch?v=XIqJaT3cvf8


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.

https://www.artofthetitle.com/title/deus-ex-human-revolution...


> 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.

I'm afraid it's been... nine years!

*midge ure plays*

(that's right, you think that's the real bowie you're listening to!?)


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.


It's even better with Vangelis: https://www.youtube.com/watch?v=Ef4YALlpDmQ


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.


I see you Sarif Industries theme and raise you the UNATCO theme. ;)

https://m.youtube.com/watch?v=JhjkBE3d3Uw&t=17m35s

From memory, that was also the first mirror in the game, and so the first time you saw... yourself (JC).


Isn't there a character creator that lets you choose your skin (and therefore see your "JC Denton") even before the game starts?


> "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


I don't remember one, but it's been a few decades.


I don't know which game did it first, but I the first mirror I came across was in Duke Nukem 3D, 4 years before Deus Ex.


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.)


Point! YT confirms there were cutscenes on Liberty Island before.

https://m.youtube.com/watch?v=jnbCwPwJNFY&t=3m30s

So maybe it was the first player-controlled viewing of yourself.


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.


Wow, I completely misread that comment.


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.


For years I used a playlist of the soundtracks of Deus Ex: HR and the movie Transcendence on shuffle for working on the PC.


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.


I’m currently playing it on Windows, 7 or 8 hours in. I’ve had 2 bugs so far that required a restart.


Yeah I've read they planned plenty more but then were pressed to wrap it up asap... still it was a fun game, awesome interior and costume design


In their defense the level of fidelity increases costs, and the franchise ownership doesn't seem as committed as to other brands.


Wait - it ends at Prague? I thought that was the first city? I swear there were lots of locations .....


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.


IIRC there are two main hubs and then some throwaway locations. It definitely felt like there was supposed to be more.


I spent around 45 hours there in my first walkthrough, can imagine how did you beat it so fast, but can't understand why.


Playing Mankind Divided made me not want to visit Prague, ever. I guess in a way the game was well designed.


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


Did playing HR make you want to visit Detroit?


You mean Pembroke? Probably more like 5-10 kids a year. Even my public suburban kc high school had 7ish kids going to ivies my year.


Could someone explain why refactoring is so much easier in functional languages?


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.


correct me if I'm wrong, but can't you add a compiler flag to prohibit using functions that can panic like "error" and "head"?

aside from that, you'd just need to worry about OOMs and faults in native code.


I guess that would be nice, but no, I’ve never heard of anything like that.

“error” is simply bottom. Bottom is an inhabitant of every Haskell type. There’s no straightforward way to just turn it off.


Looks like the null-pointer mistake no?


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.


> Bottom has to be a member of every type because functions aren't guaranteed to terminate,

I don't understand: if the function you called doesn't terminate then you're blocked so I don't see why this should impact the types..


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.


Though Haskell has the option to defer type errors to runtime, making them just warnings at compile time.

It means you can run your unit tests without having to change everything everywhere all at once.

The flag is -fdefer-type-errors


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.


I guess it is a bit if both. You can of course write fast and loose Haskell code, but best practices will probably prevent you from doing that.


almost no, if at all, state

you can unplug, replug stuff at will


I’m confused — why can’t the sex workers just claim to be independent masseuses or something else innocuous like that?


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.


Meanwhile, there are places in the world where CBD oil can be found in a supermarket, among other supplements.


Why can't drug dealers claim to sell recreational tea products?


Why can't hitmen claim to be bespoke pest exterminators?


OK, so I don't know about the hitmen thing, but there's been plenty of news stories about "independent masseuses" and "incense", "bath salts", etc.

People do stuff like this. I too wonder how they get away with it for as long as they do.


It's totally a solution on an individual level, if not a long term solution. It's just not a solution at the societal level.


Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: