thingsiplay

joined 2 years ago
[–] thingsiplay@beehaw.org 2 points 13 hours ago

Free? Thanks, I take it. Not only that, there are two more games from the publisher free to keep: Field of Glory II: Medieval and Battlestar Galactica Deadlock

https://store.steampowered.com/sale/slitherine25thanniversarypublishersale

[–] thingsiplay@beehaw.org 2 points 1 day ago

I buy and play games on sales most of the time. So its not the newest hot shit I get. Especially cool with Steam sales. There are even "blockbuster" titles I would never buy for fullprice as a 75% sale in example. Suddenly those titles come in range of an indie price and that's affordable to me. And yes I buy and play indie games too. They do not have an issue with pricing usually and often they are even self contained games without micro transactions, at least most of them.

[–] thingsiplay@beehaw.org 1 points 1 day ago

It should cost "enough". What do I mean by that? It depends. Literally. Also the (money-) cost of after purchasing a game is important too, with DLCs and micro transactions as well. And if you just "rent" a game as service (multi player only in example) or if its a single player game that you can keep and is not dependent on servers. Besides downloading the game off course.

That's why I don't like generalizations at all. This is a bit more complex to answer than it seems. I genuinely think there are games or may come out in the future, which might be worse the 80 Dollars or Euros. Others not so much. A game should cost as much as it is worth it. And that upper limit is only defined by the game itself (and whats available otherwise too off course, that is not simple).

[–] thingsiplay@beehaw.org 2 points 6 days ago

This is a really good introduction.

[–] thingsiplay@beehaw.org 1 points 6 days ago (1 children)

You mean alignment of arguments or multiline strings in example? If they are not on their own line, then it does not matter to me. If they start on their own line, then mixing spaces and tabs isn't a good idea to me. In example for function calls with a bit more complex calls and multiple arguments, I put them in their own line each. They are indented and therefore indentation level plays. If they are on the same line, I never align them and if I would, it would be spaces. In general:

function() {
....var = 1
....another_var = 2
....indented(arg, arg2, arg3)
....indented(arg, 
.............arg2, 
.............arg3)
}
[–] thingsiplay@beehaw.org 2 points 6 days ago (3 children)

BTW, my personal note about the tabstops for indentation is, I wish everyone would use it over spaces. Because it would make it much easier to display the file differently without changing it. Also parsing it would make it easier too probably. But since spaces are the standard, I exclusively use space for indentation.

[–] thingsiplay@beehaw.org 3 points 1 week ago (2 children)

Mhm wait a moment, Final Fantasy 14 is not free, its subscription based.

[–] thingsiplay@beehaw.org 2 points 1 week ago (1 children)

Its again one of those times when I lost 100% on Steam. I already own the game, so cannot make savings by getting it free, therefore I lost the money that I would have saved. If this keeps happening I am broke very soon.

[–] thingsiplay@beehaw.org 3 points 1 week ago

Just a clarification in case someone sees this comment after the time expired: The game is free to keep if you get it before 10th July. It's just a typo in this postings title.

[–] thingsiplay@beehaw.org 3 points 1 week ago

RIP for those who was still playing this. I tried the game a few years back on Game Pass (or was it a different service?) where I could try it without paying extra. Played 1 or 2 hours or so. It was an okay experience for a disaster game, but got bored quickly. The controls are actually really good and is the reason why this game can be played at all.

[–] thingsiplay@beehaw.org 0 points 1 week ago* (last edited 1 week ago)

That's not entirely true. Because even if you buy a strong PC, you have to make choices, depending on the game. It's just the fps and settings we are talking about are higher floor. In example on PC people can enable RayTracing, which tanks the fps a lot. Do you go for 120 fps or 60 or maybe lower fps with higher fidelity and RayTracing in example.

So the question to answer is still the same, its just on PC we have a bit more individual choices to make.

Edit (added): Most people don't have the strongest PC anyway. Look at the Steam hardware survery, most have common graphics cards like the 4060 in example. Or look at handheld PCs and laptops, with fixed hardware. And as said, even in high end with lots of money people need to make cuts in fidelity or performance; just on a higher level in that case. So your question applies to PC as well.

 

Example script: https://gist.github.com/thingsiplay/ae9a26322cd5830e52b036ab411afd1f

Hi all. I just wanted to share a way to handle a so called advanced help menu, where additional options are listed that are otherwise hidden with regular help. Hidden options should still function. This is just to have less clutter in normal view.

I've researched the web to see how people does it, and this is the way I like most so far. If you think this is problematic, please share your thoughts. This is for a commandline terminal application, that could also be automated through a script.

How it works on a high level

Before the ArgumentParser() is called, we check the sys.argv for the trigger option --advanced-help. Depending on this we set a variable to true or false. Then with the setup of the parser after the ArgumenParser() call, we add the --advanced-help option to the list of regular help.

advanced_help = False
for arg in sys.argv:
    if arg == "--":
        break
    if arg == "--advanced-help":
        advanced_help = True

parser = argparse.ArgumentParser()

Continue setting up your options as usual. But for the help description of those you want to exclude when using just regular -h, add an inline if else statement (ternary statement). This statement will put the help description only if advanced_help variable is true, otherwise it puts argparse.SUPPRESS to hide the option. Do this with all the options you want to hide.

parser.add_argument(
    "-c",
    "--count",
    action="store_true",
    default=False,
    help="print only a count of matching items per list, output file unaffected"
    if advanced_help
    else argparse.SUPPRESS,
)

At last we need to actually parse what you just setup. For this we need to assign our custom list, that is based on the sys.argv, plus the regular --help option. This way we can use --advanced-help without the need for -h or --help in addition to show any help message.

if advanced_help:
    args = parser.parse_args(sys.argv[0:0] + ["--help"] + sys.argv[1:])
else:
    args = parser.parse_args()

Run following program once with ./thing.py -h and ./thing.py --advanced-help.

 

Watch on YouTube: https://youtu.be/_Pqfjer8-O4

Watch on SkipVids: https://skipvids.com/?v=_Pqfjer8-O4 (watch YouTube without using YouTube directly, and without ads)

Video Description:


Inside your smartphone, there are billions of transistors, but have you ever wondered how they actually work and how they can be combined to perform tasks like multiplying two numbers together? One rather interesting thing is that transistors are a lot like Lego Bricks assembled together to build a massive Lego set, which we’ll explore further. In this video, we dive into the nanoscopic world of transistors. First, we'll see how an individual transistor works, then we’ll see how they are connected together and organized into logic gates such as an inverter or an AND gate. Finally, we’ll see how logic gates are connected together into large Macrocells capable of performing arithmetic.

Table of Contents:

00:00 - Inside your Desktop Computer
00:26 - Transistors are like Lego Pieces
01:09 - Lego Bricks vs Transistors and Standard Cells
02:12 - Examining the Inverter Standard Cell 
03:24 - How do Basic Transistors work?
09:09 - Schematic for an Inverter Standard Cell
10:45 - Exploring the Macrocell 
13:20 - Conceptualizing how a CPU Works
15:11 - Brilliant Sponsorship
16:55 - The NAND Standard Cell
20:35 - A Surprisingly Hard Script to Write 
21:42 - The AND Standard Cell
23:16 - The Exclusive OR Standard Cell
23:54 - CMOS Circuit
24:27 - Understanding Picoseconds
25:51 - Special Thank You and Outro  
 

I desperately need some Python help. In short, i want to use multiple keys at once for sorting a dictionary. I have a list of keys and don't know how to convert it to the required list.

This is a single key. The self.items is a list of dictionaries, where d[key] is resolved to the actual key name such as "core_name", that the list is then sorted as. This works as expected for single sort, but not for multiple.

key = "core_name"
self.items = sorted(self.items, key=lambda d: d[key])
key = "label"
self.items = sorted(self.items, key=lambda d: d[key])

Problem is, sorting it multiple times gives me wrong results. The keys need to be called in one go. I can do that manually like this:

self.items = sorted(self.items, key=lambda d: (d["core_name"], d["label"]))

But need it programmatically to assign a list of keys. The following does not work (obviously). I don't know how to convert this into the required form:

# Not working!
keys = ["core_name", "label"]
self.items = sorted(self.items, key=lambda d: d[keys])

I somehow need something like a map function I guess? Something that d[keys] is replaced by "convert each key in keys into a list of d[key]". This is needed inside the lambda, because the key/value pair is dynamically read from self.items.

Is it understandable what I try to do? Has anyone an idea?


Edit: Solution by Fred: https://beehaw.org/post/20656674/4826725

Just use comprehension and create a tuple in place: sorted(items, key=lambda d: tuple(d[k] for k in keys))

 

Direct link to the image in the browser: https://cosmos2025.iap.fr/fitsmap/?ra=150.1203188&dec=2.1880050&zoom=2

Article copied:


In the name of open science, the multinational scientific collaboration COSMOS on Thursday has released the data behind the largest map of the universe. Called the COSMOS-Web field, the project, with data collected by the James Webb Space Telescope (JWST), consists of all the imaging and a catalog of nearly 800,000 galaxies spanning nearly all of cosmic time. And it’s been challenging existing notions of the infant universe.

“Our goal was to construct this deep field of space on a physical scale that far exceeded anything that had been done before,” said UC Santa Barbara physics professor Caitlin Casey, who co-leads the COSMOS collaboration with Jeyhan Kartaltepe of the Rochester Institute of Technology. “If you had a printout of the Hubble Ultra Deep Field on a standard piece of paper,” she said, referring to the iconic view of nearly 10,000 galaxies released by NASA in 2004, “our image would be slightly larger than a 13-foot by 13-foot-wide mural, at the same depth. So it’s really strikingly large.” An animated zoom-out from the center of the COSMOS-Web field to a full-size comparison between COSMOS-Web and the Hubble Ultra Deep Field

The COSMOS-Web composite image reaches back about 13.5 billion years; according to NASA, the universe is about 13.8 billion years old, give or take one hundred million years. That covers about 98% of all cosmic time. The objective for the researchers was not just to see some of the most interesting galaxies at the beginning of time but also to see the wider view of cosmic environments that existed during the early universe, during the formation of the first stars, galaxies and black holes.

“The cosmos is organized in dense regions and voids,” Casey explained. “And we wanted to go beyond finding the most distant galaxies; we wanted to get that broader context of where they lived.” A 'big surprise'

And what a cosmic neighborhood it turned out to be. Before JWST turned on, Casey said, she and fellow astronomers made their best predictions about how many more galaxies the space telescope would be able to see, given its 6.5 meter (21 foot) diameter light-collecting primary mirror, about six times larger than Hubble’s 2.4 meter (7 foot, 10 in) diameter mirror. The best measurements from Hubble suggested that galaxies within the first 500 million years would be incredibly rare, she said.

“It makes sense — the Big Bang happens and things take time to gravitationally collapse and form, and for stars to turn on. There’s a timescale associated with that,” Casey explained. “And the big surprise is that with JWST, we see roughly 10 times more galaxies than expected at these incredible distances. We’re also seeing supermassive black holes that are not even visible with Hubble.” And they’re not just seeing more, they’re seeing different types of galaxies and black holes, she added.

“Since the telescope turned on we’ve been wondering ‘Are these JWST datasets breaking the cosmological model? Because the universe was producing too much light too early; it had only about 400 million years to form something like a billion solar masses of stars. We just do not know how to make that happen." 

'Lots of unanswered questions'

While the COSMOS-Web images and catalog answer many questions astronomers have had about the early universe, they also spark more questions.

“Since the telescope turned on we’ve been wondering ‘Are these JWST datasets breaking the cosmological model? Because the universe was producing too much light too early; it had only about 400 million years to form something like a billion solar masses of stars. We just do not know how to make that happen,” Casey said. “So, lots of details to unpack, and lots of unanswered questions.”

In releasing the data to the public, the hope is that other astronomers from all over the world will use it to, among other things, further refine our understanding of how the early universe was populated and how everything evolved to the present day. The dataset may also provide clues to other outstanding mysteries of the cosmos, such as dark matter and physics of the early universe that may be different from what we know today.

“A big part of this project is the democratization of science and making tools and data from the best telescopes accessible to the broader community,” Casey said. The data was made public almost immediately after it was gathered, but only in its raw form, useful only to those with the specialized technical knowledge and the supercomputer access to process and interpret it. The COSMOS collaboration has worked tirelessly for the past two years to convert raw data into broadly usable images and catalogs. In creating these products and releasing them, the researchers hope that even undergraduate astronomers could dig into the material and learn something new.

“Because the best science is really done when everyone thinks about the same data set differently,” Casey said. “It’s not just for one group of people to figure out the mysteries.” Image Caitlin Casey wears a puffy coat in front of a lake Photo Credit Courtesy Photo Caitlin Casey

Caitlin Casey is an observational astronomer with expertise in high-redshift galaxies. She uses the most massive and unusual galaxies at early times to test fundamental properties of galaxy assembly (including their gas, stars, and dust) within a ΛCDM cosmological framework. Read more

For the COSMOS collaboration, the exploration continues. They’ve headed back to the deep field to further map and study it.

“We have more data collection coming up,” she said. “We think we have identified the earliest galaxies in the image, but we need to verify that.” To do so, they’ll be using spectroscopy, which breaks up light from galaxies into a prism, to confirm the distance of these sources (more distant = older). “As a byproduct,” Casey added, “we’ll get to understand the interstellar chemistry in these systems through tracing nitrogen, carbon and oxygen. There’s a lot left to learn and we’re just beginning to scratch the surface.”

The COSMOS-Web image is available to browse interactively ; the accompanying scientific papers have been submitted to the Astrophysical Journal and Astronomy & Astrophysics.

 

cross-posted from: https://beehaw.org/post/20234081

2 days ago I made a post that the game would not run on a Linux desktop PC (but it would on the Steam Deck). 10 hours ago they released an update that resolves this issue and makes the game run through Proton on a Linux desktop PC.

- The Beta now supports players on Linux thru Proton

I can confirm it does run and I just did the short tutorial. I still have to play more, but wanted to inform anyone who is interested into the game.

 

I want to share some thoughts that I had recently about YouTube spam comments. We all know these early bots in the YouTube comment section, with those "misleading" profile pictures and obvious bot like comments. Those comments are often either random about any topic or copied from other users.

OK, why am I telling you that? Well, I think these bots are there to be recognized as bots. Their job is to be seen as a bot and be deleted and ignored. In that case everyone feels safe, thinking all bots are now deleted. But in reality there are more sophisticated bots under us. So the easy bots job is to get delete and basically mislead us, so we don't think that any is left, because they are deleted.

What do you think? Sounds plausible, doesn't it? Or do I have paranoia? :D

 

Video description:


In this video, we'll talk about NVIDIA's last several months of pressure to talk about DLSS more frequently in reviews, plus MFG 4X pressure from the company. NVIDIA has repeatedly made comments to GN that interviews, technical discussion, and access to engineers unrelated to MFG 4X and DLSS are made possible by talking about MFG 4X and DLSS. NVIDIA has explicitly stated that this type of content is made "possible" by benchmarking MFG 4X in reviews specifically, despite us separately and independently covering it in other videos, and has made repeated attempts to get multiplied framerate numbers into its benchmark charts. We will not play those games. In the time since, NVIDIA has offered certain unqualified media outlets access to drivers which actual qualified reviewers do not have access to, but allegedly only under the premise of publishing "previews" of the RTX 5060 in advance of its launch. Some outlets were given access to drivers specifically to publish what we believe are puff pieces and marketing while reviewers were blocked.

TIMESTAMPS

00:00 - Giving Access, Then Threatening It
04:29 - Quid Pro Quo
08:28 - Social Manipulation
09:44 - It's Never Good Enough for NVIDIA
12:08 - NVIDIA is Vindictive
14:28 - Stevescrimination
17:38 - Not The First Time
19:00 - Gamers Are Entitled
 

https://github.com/thingsiplay/crc32sum

# usage: crc32sum [-h] [-r] [-i] [-u] [--version] [path ...]

crc32sum *.sfc
2d206bf7  Chrono Trigger (USA).sfc

Previously I used a Bash script to filter out the checksum from 7z output. That felt always a bit hacky and the output was not very flexible. Plus the Python script does not rely on any external module or program too. Also the underlying 7z program call would automatically search for all files in sub directories recursively when a directory was given as input. This would require some additional rework, but I decided it is a better idea to start from scratch in a programming language. So I finally wrote this, to have a bit better control. My previous Bash script can be found here, in case you are curious: https://gist.github.com/thingsiplay/5f07e82ec4138581c6802907c74d4759

BTW, believe it or not, the Bash script running multiple commands starts and executes faster than the Python instance. But the difference is negligible, and the programmable control in Python is much more important to me.


What is this program for?

Calculates the CRC hash for each given file, using Python's integrated zlib module. It has a similar use like MD5 or SHA, but is way, way weaker and simpler. It's a quick and easy method to verify the integrity of files, in example after downloading from the web, to check data corruption from your external drives or when creating expected files.

It is important to know and understand that CRC-32 is not secure and should never be used cryptographically. It's use is limited for very simple use cases.

Linux does not have a standard program to calculate the CRC. This is a very simple program to have a similar output like md5sum offers by default. Why use CRC at all? Usually and most of the time CRC is not required to be used. In fact, I favor MD5 or SHA when possible. But sometimes, only a CRC is provided (often used by the retro emulation gaming scene). Theoretically CRC should also be faster than the other methods, but no performance comparison has been made (frankly the difference doesn't matter to me).

 

Marathon looks like an Ai agent would create. Art style, gameplay and story wise.

This is the next game from the Destiny creator Bungie. A multiplayer extraction shooter. It has nothing to do with the original Marathon game its based on, an old single player game. Those who could hands on the game describe it as a Destiny like controls and animation, but as an extraction shooter mode.

As for me, I would probably even check the game out, if it was free to play (its full price game, like Concord) and if it would be playable on Linux. Bungie is anti Linux, so not for me anyway.

 

Today I've reported a player in Marvel Rivals for being a cheater (it was obvious to me, even autoaim through wall playing hawkeye). And I just got a confirmation message that the player is banned until 2125... basically a 100 year ban. :D Do report them. Report toxicity as well (I get ton of confirmation). But do not report because you are angry or maybe the other player played well. It's the first time I reported someone in Marvel Rivals for cheating.

I do my part.

 

Finally the new Rust 1.85.0 update is here, with a new Rust Edition 2024.

 

Someone remaked Super Mario World in 3D in Unreal Engine 5 (no realistic graphics). The video explains what he did and its super interesting and entertaining to watch. However, there is nothing playable right now. And even if there was one, Nintendo would be fast to remove it. I hope he will publish a finished work as Open Source project, so it will live on forever.

Video description:


Full gameplay video here: youtube.com/watch?v=xy3X_txfYWI&t=0s

Made in Unreal Engine 5.

view more: next ›