Die4Ever

@Die4Ever@programming.dev
39 Post – 577 Comments
Joined 1 years ago

Developer of Deus Ex Randomizer, StarCraft 2 Randomizer, RollerCoaster Tycoon Randomizer, Build Engine Randomizer, and Groovie 2 in ScummVM

https://lemmy.mods4ever.com/communities

https://mods4ever.com/

Of course, The 7th Guest! And The 11th Hour! I'm actually a bit obsessed...

!stauf_mansion@lemmy.mods4ever.com

Allo

2 more...

So is this what they call "cyber bullying"?

This means game devs will start focusing more on better performance and optimization, right? ...RIGHT?

5 more...

I'm doing my part! Cool to see my little change finally released, I hope people like it

https://github.com/LemmyNet/lemmy-ui/pull/2073

2 more...

I think it's just a comparison because during the Reddit Exodus people often suggested Discuit instead of Lemmy because ActivityPub is "too complicated". So I guess this is a good demonstration that federation really is our best hope at replacing the big billionaire social media platforms.

As another point of reference vs Discuit's 6,787 registered users, Lemmy has 1,904,195 registered users. Kbin has 66,175, and Mbin has 5,453 registered users.

4 more...

When my Lemmy instance is down (which is very rare, much more stable than Reddit), I just browse via a different instance!

3 more...

Lemmy needs more tools to help avoid defederation. Like the admins being able to block communities (defederating a community interested of the entire instance), or hide posts from a community/instance from c/All so people who are still subscribed or manually search can still find the posts

Also users should be able to block instances just for themselves, just posts or comments as well

13 more...

there was a discussion about this same post before, I'll just copy paste my comment...

That post complains about not being able to view/manage images hosted by your instance, but v0.19.4 already fixed that last week? So that kinda disproves them saying the Lemmy developers didn’t want it to be possible. Also the post complains about the amount of storage used by caching images but that was also fixed/improved in v0.19.4

23 more...

They just needed to offer lots of storage so they could kill off Dropbox, now that it's mostly dead for consumers, it's time for Google to make money with their monopoly. Even though storage prices have gone way down.

given how many ‘Twitter alternative’ services like Threads and Bluesky are cropping up

I wish they would mention Mastodon lol

1 more...

I'm surprised there was no issue filed for this already, maybe I just failed to find it, but I made a new issue

https://github.com/LemmyNet/lemmy/issues/4412

if anyone wants to give it a thumbs up reaction then the devs will know to prioritize it, and if you have any ideas you could leave a comment there

Edit: that was somewhat a duplicate of this issue

https://github.com/LemmyNet/lemmy/issues/2951

Give that one a thumbs up

curious if we'll see commits from governments into the Mastodon repo lol

scaled sort is coming in v0.19.0 https://github.com/LemmyNet/lemmy/pull/3907

2 more...

at this point I think we might need comments more than posts, there's lots of posts already but most of them are lacking comments

16 more...

Unpopular opinion: IDK why people want perfect interop so much, I have a Mastodon account and a Lemmy account, big deal. We've got bigger fish to fry than this. The formats are different enough that you're better off having separate accounts for microblogging and threadiverse.

Interop for similar platforms is a great feature, but for dissimilar platforms I don't think it's actually necessary just a novelty. Also I think people try to push this on new users as some big, useful, important feature, but I think it only confuses the new users.

Also I noticed most of the time when people complain about ActivityPub interop issues, it almost always ends up being Mastodon's fault lol. Probably because they were early to the party and didn't have to worry about interop and standards much back then. At least I hope it isn't malicious lol.

8 more...

side-loaded videos

Fucking Apple lol, just let people play video files, this should be basic minimum functionality

2 more...

I hate that people associate things in this way. Like if I see a bad website I don't think "wow Linux really sucks" or Nginx or Cloudflare or whatever other technologies they're using. I don't watch a bad movie and think the Blu-ray player is the problem.

1 more...

for reference, this is what it looks like on Mastodon, the post to !announcements@lemmy.ml it gets the hashtag for announcements

https://mastodon.social/@dessalines@lemmy.ml/112576601493225058

it's not really part of the message text, it's separate

1 more...

used to buy the tickets to the park

the restaurant was not in a ticketed park, it was in Disney Springs which is a freely accessible public area

https://longisland.news12.com/disney-asks-court-to-dismiss-wrongful-death-lawsuit-of-long-island-doctor

https://maps.app.goo.gl/2HeE7BypniAENg1M6

I think when telling someone to signup, don't give them a list of instances, just give them 2 to choose from

"Signup here, or here. Doesn't matter which one you pick because they're both linked and we'll be able to see the same posts."

Especially if you know their interests maybe you can suggest an instance focused on that, or one that hosts a community

4 more...

yea the reason to want more users is for niche communities, I don't need a billion people just for memes or news, but when you subdivide your users down to niche communities suddenly you'll want more

I wish there were more people on Lemmy talking about Deus Ex, The 7th Guest, DOS games, Randomizers, or specific TV shows that I'm currently watching (Reddit always had a pretty active sub for each and every show)

The GitHub issue is here, you could put a thumbs up reaction on it, and also subscribe to the issue to get updates about it

https://github.com/LemmyNet/lemmy/issues/2987

This is not an answer that will work for growing Lemmy. Most people do not want to buy a server and domain name to use Lemmy, and then they gotta learn how to use Linux and docker and figure out how to get it all working? Most people don't even know what Linux or SSH is. And then they need to read a huge list of instances to see which ones they want to block? And they gotta worry about keeping it up to date, and security issues, and watch the disk space usage. They would rather just stay on Reddit instead.

Also your solution still doesn't address blocking/hiding posts but not comments, or hiding posts in the feed but still showing them in searches or in the specific community.

2 more...

Halo 1 was on Xbox before PC https://www.igdb.com/games/halo-combat-evolved#releases

Xbox in 2001, PC in 2003

and the Xbox version did have split screen

account portability is a big topic in 'verse developer circles

I think community portability is a way bigger deal, at least here

I think if communities could have aliases/mirrors, that would mostly fix the problem without completely rewriting all of the ActivityPub spec?

edit: I did find this issue on their Github https://github.com/LemmyNet/lemmy/issues/3100

and: https://github.com/LemmyNet/lemmy/issues/4619

5 more...

yea people get drowned out by these bots and they feel less inclined to contribute. I know I was less likely to leave a comment on Reddit when there were already many comments. I was less likely to post on Reddit when a subreddit was already getting many posts. I post and comment more here on Lemmy because it doesn't get drowned out. If we wanna grow then it needs to be natural, not via bots.

everyone do yourself a favor and go to your settings page and uncheck the option for "Show Bot Accounts", it's unfortunate that I can't keep the few good bots visible but there's just too much bot spam now.

Honestly too many things to list. When it's finished the devs will post the changelog. But the scaled sort option is a popular addition, remote follow is cool, giving users the ability to block instances, and a bunch of fixes too.

There's been some posts about a few of the updates, but a complete changelog won't be until the release happens, which should be this year?

https://lemmy.ml/post/5328302

https://lemmy.ml/post/6097110

https://lemmy.ml/post/6754481

https://lemmy.ml/post/7440981

https://lemmy.ml/post/8090844

7 more...

Agreed lol, and Threads

It's very hard for people to accept that there are other things that may need to be worked on before their requested fix/feature. Every big project has a huge backlog of issues/feature requests, you can't do them all in 1 day or even 1 year. Especially with low funding lol.

21 more...

I think ActivityPub states that you must follow a user for their posts to federate, but Lemmy currently doesn't give a way to follow users only communities, so it will probably eventually work

(I think technically communities are fake users that retweet/boost the posts to them?)

Just wait until v0.19.0, gonna be such a good update

13 more...

Scaled: Like hot, but gives a boost to less active communities

https://join-lemmy.org/docs/users/03-votes-and-ranking.html

On Reddit we had r/hardware which was great for this

Here we have !hardware@lemmy.ml but I haven't checked it out much yet

1 more...

I don't think this is entirely true, I think the number of subscribers is just not perfectly synced. My instance doesn't even allow signups, I just have my single admin account on there, but the communities have quite a few subscribers

https://lemmy.mods4ever.com/communities

5 more...

well my Lemmy backups did exceed 10MB, but the 0.18.3 database optimizations brought me under 10MB again lol

11M Jul 28 22:35 bak-lemmy-2023-07-28_22.35.52.zip
8.8M Jul 28 22:39 bak-lemmy-2023-07-28_22.38.59.zip

(hosting an instance with communities but no users doesn't need much hardware at all btw)

2 more...

I like how the cracks in the monitor extend beyond the glass lol

ok maybe not my biggest or cleanest optimization, but an interesting one

I made the WCS Predictor for StarCraft 2 eSports, which would simulate the whole year of tournaments to figure out the chances for each player qualifying for the world championship (the top 16 players by WCS Points), and it would also show the events that would help/hurt the players. It was a big monte carlo simulation that would run millions of iterations. (My memory is fuzzy here because this was 2013 to 2014)

Originally I did a data-based approach where each Tournament object had a vector of Round objects (like round of 32, or semifinals, etc) which had a vector of Match objects (like Soulkey vs Innovation, or a 4 player group). The Round class had a property for best_of (best of 3, best of 5, etc). This was really inflexible cause I couldn't properly simulate complex tournament formats that didn't fit my data, and it required a lot of if statements that could cause branch prediction misses.

A tournament definition looked something like this:

::: spoiler older code example

		Round ro32("ro32");
		ro32.best_of=3;
		ro32.points_for_3rd=150+25;
		ro32.points_for_4th=100+25;
		Match ro32GroupA;

		ro32.matches.push_back(ro32GroupA);
		ro32.matches.push_back(ro32GroupB);
		ro32.matches.push_back(ro32GroupC);
		ro32.matches.push_back(ro32GroupD);
		ro32.matches.push_back(ro32GroupE);
		ro32.matches.push_back(ro32GroupF);
		ro32.matches.push_back(ro32GroupG);
		ro32.matches.push_back(ro32GroupH);

		GSL.rounds.push_back( ro32 );

:::

When I rewrote it for the following year, I ditched the data-driven approach to try to get more efficiency and flexibility, but I definitely didn't want virtual functions either, so I decided to use templates instead and a custom class for each tournament. Now creating a tournament looked like this:

::: spoiler newer code example


template
class Round : public RoundBase
{
public:
	MatchType matches[num_matches];
// ... more stuff ...
};

class CodeSBase : public TournamentBase
{
public:
	Round<32, SwissGroup, 8, RandomAdvancement<16, 16>, true > ro32;
	Round<16, SwissGroup, 4, A1vsB2<8, 8>, true > ro16;
	Round<8, SingleMatch, 4, StraightAdvancement<4, 4>, true > quarterfinals;
	Round<4, SingleMatch, 2, StraightAdvancement<2, 2>, true > semifinals;
	Round<2, SingleMatch, 1, StraightAdvancement<1, 1>, true > finals;

	void init(vector &prev_matches, vector &upcoming_matches)
	{
		quarterfinals.best_of = 5;
		semifinals.best_of = 7;
		finals.best_of = 7;
		ro32.points_for_placing[3] = 100;
		ro32.points_for_placing[2] = 150;
		ro16.points_for_placing[3] = 300;
		ro16.points_for_placing[2] = 400;
		quarterfinals.points_for_placing[1] = 600;
		semifinals.points_for_placing[1] = 900;
		finals.points_for_placing[1] = 1250;
		finals.points_for_placing[0] = 2000;
		finals.match_placing_to_tournament_placing[0] = 1;
	}


	void predict(Simulation &sim, array &top8, array &bottom24, array &finalists, Rand64 &rng)
	{
		RandomAdvancement<16, 16> Ro32toRo16;
		A1vsB2<8, 8> Ro16toRo8;
		StraightAdvancement<4, 4> Ro8toRo4;
		StraightAdvancement<2, 2> Ro4toRo2;
		StraightAdvancement<1, 1> finalsadv;

		ro32.predict(sim, t_id, Ro32toRo16, rng);
		ro16.AcceptAdvancements(Ro32toRo16.advancing_players);
		ro16.predict(sim, t_id, Ro16toRo8, rng);
		quarterfinals.AcceptAdvancements(Ro16toRo8.advancing_players);
		quarterfinals.predict(sim, t_id, Ro8toRo4, rng);
		semifinals.AcceptAdvancements(Ro8toRo4.advancing_players);
		semifinals.predict(sim, t_id, Ro4toRo2, rng);
		finals.AcceptAdvancements(Ro4toRo2.advancing_players);
		finals.predict(sim, t_id, finalsadv, rng);

		top8 = Ro16toRo8.advancing_players;
		for (uint i = 0; i<8; i++) {
			bottom24[i] = Ro32toRo16.falling_players[i * 2];
			bottom24[i + 8] = Ro32toRo16.falling_players[i * 2 + 1];
			bottom24[i + 16] = Ro16toRo8.falling_players[i];
		}
		finalists[0] = finalsadv.advancing_players[0];
		finalists[1] = finalsadv.falling_players[0];
	}

:::

All data had very good locality using arrays instead of vectors, everything could be inlined and branch predicted and prefecthed, complex tournament formats could be built even properly handling high placements from one tournament granting you seeding into a different tournament. I think I gained like 3x to 5x speedboost from this alone, I also made it multithreaded and work in batches which improved performance further, which allowed me to get updated results more quickly and with a higher number of samples. I also made it so it could output the results and then keep processing more batches of samples to refine the numbers from there. I wouldn't normally suggest these kinds of optimizations but it's a very unusual program to have such a wide hotloop

The website is gone, but here's a working archive of it (which I didn't know existed until writing this post, I thought there were only broken archives)

::: spoiler archive links, me reminiscing on old times, get ready for stats and graphs overload

home page: https://web.archive.org/web/20150822091605/http://sc2.4ever.tv:80/

a tournament page: https://web.archive.org/web/20160323082041/http://sc2.4ever.tv/?page=tournament&tid=27

a player's page: https://web.archive.org/web/20161129233856/http://sc2.4ever.tv/?pid=73

a general checkup page: https://web.archive.org/web/20161130055346/http://sc2.4ever.tv/?page=checkup

a page for players who must win tournaments to qualify: https://web.archive.org/web/20161129235740/http://sc2.4ever.tv/?page=must_wins

page showing the simulations history: https://web.archive.org/web/20161130055230/http://sc2.4ever.tv/?page=simulations

FAQ page: https://web.archive.org/web/20160323073344/http://sc2.4ever.tv/?page=faq

the fantasy league WCS Wars: https://web.archive.org/web/20161130055233/http://sc2.4ever.tv/?page=gamehome

my WCS Wars user page https://web.archive.org/web/20160704040152/http://sc2.4ever.tv/?page=user&uid=1

:::

Normie is gross but it's mainly just dismissive and having too high an opinion of one's own taste/interests.

Really? I always thought it was supposed to be self deprecating, like saying "people who aren't fucking weirdos like myself"

4 more...