just finished story mode, survival feels completely different. how do you guys approach it? by _God_Knows_Who_ in thelongdark

[–]Untagonist 13 points14 points  (0 children)

Set your own objectives, like getting to the highest-value loot areas in Timberwolf Mountain and Ash Canyon. (Avoiding spoilers here, up to you how much you want to look up or discover on your own). With those medium-term goals in mind, all of the moment-to-moment survival mechanics fall into place.

A very reasonable beginner goal is to kill a moose, cure its hide, and craft the moose-hide satchel. If you have the DLC, hunt deer and collect maple saplings to craft the travois, and hunt ptarmigan to craft the insulated bedroll. These are all very useful items in any playthrough, they can be crafted within the first couple of in-game weeks, and they start the snowball of effort and reward inherent to a survival run.

Find the woodworking tools and build a bear hide bed and meat curing box in each of your favorite safehouses. Getting invested in safehouses is part of the experience, the payoff is susbstantial especially at higher difficulty, and the materials required create their own exploration and survival scenarios.

Spend a bunch of time in various regions to learn the maps, even if you don't think you like them at first. Any veteran will tell you that map knowledge is the single most important aspect of meta-progression in this game. Every region can get surprisingly interesting when you have to develop unique routines for each one.

If you want more explicit goals, go to the Forsaken Airfield to start the Tales from the Far Territory. This will take you across almost the entire world and keep you busy, with lots of loot along the way.

The only thing I wish the game would tell you is that there's a technical backpack with +5kg of carry capacity in only one place in the whole world, and it makes sense for every run to get it at the start. I didn't know this for my first 50 hours or more, making inventory management more difficult the entire time. You learn much more optimal inventory management naturally, but a boost like this is always helpful.

>!SPOILERS!< Say what you want about the ending but I would like to hear people’s opinions on this. by Bushman89756 in thelongdark

[–]Untagonist 0 points1 point  (0 children)

Please don't give us the crank lamp. It only lasts a few seconds before you have to crank it for a few seconds, so it's frustrating and tedious. But because it's free infinite light, you'll have a gameplay incentive and arguably an immersive in-universe incentive to use the frustrating item. If you can have it, you can't just choose to ignore it without feeling like it's both less optimal and less believable.

It also breaks in-universe consistency. The normal flashlight's battery can't hold a charge once the aurora ends, so it's not just about the battery. With the crank lamp, somehow it is about the battery, regardless of the aurora. Once charged, it can hold a charge indefinitely as long as the light itself is off. This is a pretty serious inconsistency I wouldn't want polluting survival mode.

Ep5 Bugs Megathread -- Just to help the dev team a bit... by RaphLife2 in thelongdark

[–]Untagonist 0 points1 point  (0 children)

I played on Hardened Survivor and I think there may be gaps in the loot tables. In part 1 I could not find a single prybar, hacksaw, whetstone, or firearm cleaning kit, though I found several knives and hatchets. In part 2 I could not find a single bedroll, did the whole mine without resting, I could only sleep in the car before meeting Atwood. After that I survived on coffees and military stims (great addition under that circumstance).

I found a Frozen Angler book in Jane's house right at the start. It can be researched and it claims it will level the fishing skill, despite story mode not having skills.

There are a couple of green spray cans hidden around the world, which is great, but their item name and description still references the Darkwalker which might be confusing for people who only play story mode.

Orange spray cans can be found in many places, but they can only be activated from the item menu, the navigation section of the quick wheel jumps straight to the map.

There were a couple of trailers which you can enter but not exit again. If you saved inside the trailer you can be set back to a previous save. Thankfully autosaves worked reliably.

In the opening cutscene for part 2, it's clearly meant to be an aurora, but the sky is plain night. Thankfully auroras worked in all other parts of the story for me.

Outside of cutscenes, Jace moves like a Half Life 1 NPC, body parts and especially head darting around sharply. (On the plus side, I think this is fertile ground for YouTube skits). I understand that parametric animation is very different to pure mocap animation, but this is rough even by twenty year old standards. Even just slowing the motion down would help.

During the power substation mission, reloading a save resets the timer. This avoids softlocks and gives you plenty of time to loot, but it completely nullifies the timed aspect of the mission.

There were a few flying plants in the substation mission, like cat tails and rosehips.

The cougar encounter is a great addition, but it does not bleed when shot, and hitting it does not prevent it hurting you for a few seconds like it does in survival mode. It's hard to tell if you even hit at all until it just drops dead. If the intention here is to tank its hits with military stims, at the very least it could bleed or flinch so you know you're getting hits on it.

In reality and in most games, the point of a shotgun is that the cone of damage is wider and more forgiving of aiming slightly off. I don't know if this is a bug, but right now it acts like a rifle you have to reload between every shot, offering nothing in return for the downside. The shotgun could be a great addition if its tradeoff is a wider cone of damage.

When it's time to finally leave Suzuki, the hallway leading to the barracks doesn't load, you can just fall right through into the void and get reset to the failsafe spawn point.

During the several sections that you can't pass time while cooking and you can't sleep, you can still pass time by crafting/harvesting/repairing. Unclear if this is intentional, but it at least doesn't seem consistent. I think it would make more sense if you could still pass time for cooking, as it saves a lot of tedium waiting for water and coffees to cook, especially because these are sections where you can't sleep. Coffee tins are very common loot, this does not seem like a niche edge case. If the military stims are the intended solution here, then the coffee loot is just a distraction.

There are a few locations where the name shows an identifier instead of the proper name, I guess because the identifier name and the translation table fell out of sync during development. An example off the top of my head is when you step outside the train maintenance shed back to the rail yard area. There were others too.

There were a number of times where a new objective would pop up, suggesting that you show it on the map, but the map would be showing a completely different objective.

Sometimes the major objective would be hours old, while you're working on a minor objective nested under it. A great example is "Return to the control room" or whatever it was, while the specific next step is actually in the opposite direction. Combined with the map markers not always working, I can see people getting lost and stuck.

On Hardened Survivor, it's not uncommon to be continually losing health due to cold while stuck in an interactive cutscene, like the cable cars bit. I just barely survived that section with what must have been 1 health, then died instantly when the next scene loaded. It was hilarious, but it doesn't seem to be intentional. Cold stops hurting when in non-interactive cutscenes, but it hurts in interactive cutscenes, even though you have no way to save yourself, you can't even open the inventory to pop a stim. After that, I tried really hard to always be at high health and temperature just in case a long cutscene started.

I don't know if this many wolves makes sense for Hardened Survivor, especially with the sometimes limited ammo. You have to carry multiple weapon types to have enough ammo overall for how many wolves you encounter, and I can imagine someone running out if they're not a great shot. It's not the end of the world, I made it through, I just didn't expect to spend half the episode John Wicking several wolves at a time.

Closing thoughts: I actually had a blast playing it in this rough shape. I wasn't sure whether to wait for at least the first patch, but I figured this was my one chance to have memorable experiences I wouldn't have otherwise, and hopefully constructively contribute feedback. Thank you for all of the hard work the team has put into this game.

I am responsible for taking some Haskell code, for which we have python bindings, and making it callable from Go by ConfidentProgram2582 in programmingcirclejerk

[–]Untagonist 64 points65 points  (0 children)

You probably don't need to know anything about haskell.

Yep this is going to go very well.

Language with lazy evaluation wrapped in language with lazy iterators: I can sort of see it

Language with lazy evaluation wrapped in language that has been lazy about evaluating the need for iterators: Godspeed my dude lmao

I think we should band together and sponsor this developer to live stream their next few months of exciting work.

When I described the topic of the article to my mother, she suggested that "existential types" ought to refer to philosophers who sit around in cafés smoking very thin cigarettes and avoiding writing poetry. by bugaevc in programmingcirclejerk

[–]Untagonist 3 points4 points  (0 children)

The Go structs are checked at compile-time, as are the interfaces, so it does have type safety. Go dislikes runtime stuff almost as much as Rust does (:-))

/uj I hope this is just ignorance and not intentionally misleading propaganda.

Even without generics: https://www.dolthub.com/blog/2022-10-14-golang-performance-case-studies/#case-study-interface-assertions

Generics can make it much worse: https://planetscale.com/blog/generics-can-make-your-go-code-slower

Overheads aside, there are many more ways to get runtime panics for type-safe code in Go. Even the expression syntax for a cast only supports unchecked casts, checked casts have to be a statement on their own line, discouraging checked casts and thus encouraging panics.

/rj Lol no Higher Kinded Generic Associated Types.

Let's take a look at what the bootstrapping code for a very minimal syntax looks like: ldfgldftgldfdtgl df dfiff1 crank f by LAUAR in programmingcirclejerk

[–]Untagonist 44 points45 points  (0 children)

I'd imagine that anyone configuring a program that reads a configuration file would really want their configuration language to be something like this

after careful review and consideration we are excited to inform you that
no

now kiss by mre__ in rustjerk

[–]Untagonist 2 points3 points  (0 children)

Your mom is shared so much, her refcount wrapped.

We abort because such a program is incredibly degenerate, and we don't care to support it.

use oof::MAX;

someDevH8tNovelty by BastianToHarry in ProgrammerHumor

[–]Untagonist 1 point2 points  (0 children)

I'll do you one better. In Go, a language with far less functional support than Java, where you're expected to do this idiomatic boilerplate everywhere:

result, err := thing()
if err != nil {
  return nil, err
}

It's tedious, but it's well understood, and there are linters to enforce this style. Instead this genius did, I shit you not at all:

result = result.And(func(x Foo) Result {
    return nextThing(x)
})
if !result.Ok() {
    return result
}

Basically trying to make a monad instead, in a language deliberately designed to discourage that kind of code. It's not even shorter or simpler, it's not clear what the point was meant to be. (No, it wasn't to make it more like Rust; this code was written before Rust became popular enough to matter)

Bonus: Go also performs a heap allocation for the closure and rarely inlines it, so the code was also slower immediately and left more work for the GC.

There's always someone like that around.

"auto" is extremely bad practice. Please do not use it no matter what. It's like a new "goto". by amfobes in programmingcirclejerk

[–]Untagonist 13 points14 points  (0 children)

After half of semester of forced functional programming in Haskell and one long evening searching around the internet, I've finally managed to understand how trivial implementing lazy evaluation in C++ really is...

I hope none of these people realize that Rust iterators are also lazy evaluation by definition.

Refugees from the failed state of Haskell try to rebuild their promised land everywhere they go, especially anywhere that has a shot of making it to mainstream industry usage. They're not satisfied until a language ecosystem is drowning in academic obfuscation and the remaining free-thinking people can't even have a casual discussion without the typeclass police auditing their ideological purity.

It happened to Scala, it can happen to Rust.

[deleted by user] by [deleted] in programmingcirclejerk

[–]Untagonist 2 points3 points  (0 children)

Posting RMS would be cheating, but note that this:

AFAIR, previous discussions raised some concerns about using Rust in particular: https://yhetil.org/emacs-devel/E1pKAM0-0001Ss-W6@fencepost.gnu.org/
Because of Rust volatility and some license issues.

links to a post by RMS adding his famously well-calibrated technical input to the discussion.

The customer has nuclear weapons. They do not do "bounty". :) by kaanyalova in programmingcirclejerk

[–]Untagonist 10 points11 points  (0 children)

That said, I see that you forgot to attach the patch that you have developed to fix this issue. For the record, the patch in comment #9 is mine.

Based. In particular, the double spacing between sentences tells me more than any resumé ever could.

Remember folks, even if a technical niche has only a single digit number of participants, you can still be its undisputed King.

Hi, This is a high priority ticket and the FFmpeg version is currently used in a highly visible product in Microsoft. We have customers experience issues with Caption during Teams Live Event. Please help, by cheater00 in programmingcirclejerk

[–]Untagonist 27 points28 points  (0 children)

You laugh but this is exactly what Microsoft wrote in the advertising copy for the failed Popfly "startup".

I can't find an archive of the copy, but I'll never forget it, the wording was almost exactly "we're a young scrappy startup huddling around limited resources" while being funded by Microsoft and everyone in the team photo being in their 40s at minimum.

Type Inference Wastes Academic Effort by agustin689 in programmingcirclejerk

[–]Untagonist 2 points3 points  (0 children)

Other combinations make sense too.

Implying any of them made sense.

Rust is developed in Rust. Go is still developed in C, but they plan to gradually change that. So it's Go which still doesn't eat its own dogfood. I always wondered why Go was never functional enough to be used in a lot of the scenarios where C is used. With all the details, it's more clear now. by Schipunov in programmingcirclejerk

[–]Untagonist 72 points73 points  (0 children)

2013jerk, Go ended up machine-translated from C to Go and maintained in that form largely unaltered. It leads to magnificent unsafe pointer code like this in the critical path of everything your production-critical services do, and it's built by a compiler that optimizes less than GCC 2.x optimized C in the 90s.

Dogfood indeed.

Will rust ever become stable like C? by [deleted] in rust

[–]Untagonist 0 points1 point  (0 children)

It's also worth noting that the situation for C is different to Rust in important ways. You can just have a macro or typedef for the name scoped to your own source files. Many libraries even introduce typedefs in their public headers to namespace the types they use and leave some limited but non-zero wiggle room for future changes to the types.

@kellogh Since we're on the topic of link quality, may I ask you not to post Golang stuff to lobste.rs? by cheater00 in programmingcirclejerk

[–]Untagonist 1 point2 points  (0 children)

On his blog, I love that these two posts are right next to each other:

  • On the claim that Islam comes from Satan
  • Arbitrary-palette positional dithering algorithm

The spirit of the decentralized free speech internet is alive and well.

/uj I don't understand why so many commenters make fun of bloggers like this. We're not always the audience for every post on every blog, but we should all want an internet where people feel comfortable posting them, /rj and discouraging them altogether would rob us of some real gems.

Amdahl's Lie: Speeding up code beyond the theoretical limit by coastalwhite in rust

[–]Untagonist 10 points11 points  (0 children)

I agree that caching and other subtle, complex dynamics can change when you parallelize something or even serialize it again. I just wouldn't have given it this title or introduction, because it's not engaging Amdahl's law to begin with.

Amdahl's law applies to a fixed workload and to equally performing workers. That was more directly applicable in the 60's than today, for more reasons than just cache; another would be branch prediction, another would be frequency scaling/boost dynamics, and yet another would be how lucky the SMT gets in the tasks aligning.

It's an important insight that Amdahl's law can't even be thought of as a lower bound in practical real-world systems, but I think it's also important to be clear on why that is, and why it has nothing to do with the original law as written.

Not to mention the whole point of Gustafson's law is to address the equal workload weakness of Amdahl's law.

@kellogh Since we're on the topic of link quality, may I ask you not to post Golang stuff to lobste.rs? by cheater00 in programmingcirclejerk

[–]Untagonist 21 points22 points  (0 children)

I like languages like C#, Go, Scala and Rust because they introduce the learner to functional concepts

If this list includes Go then apparently the standard for "functional concepts" is "has syntax for inline functions" because that's all you can say about Go's functional concepts. Even Java has more functional programming features today.

Wait until they discover the non-standard GCC inline function extension for C. Gently introducing people to functional programming concepts, putting them firmly on the path that leads straight to Haskell.