[-] ICastFist@programming.dev 4 points 18 hours ago

Jamil has entered the chat. P2P with E2EE, so you only ever need some internet connection to stay in touch, no servers to be taken down.

The only problem is that it'll eat your phone's battery like chrome eats RAM

[-] ICastFist@programming.dev 3 points 18 hours ago

One thing I find interesting and ironic is Friendica. In theory, it should be the best for anyone that wants to interact with as many different types of content (lemmy, mastodon, others), but, in my experience, it only really works for following mastodon and has iffy support for lemmy/piefed communities.

Dunno if it was a instance specific problem for me, but communities wouldn't show latest posts, would often fail to load the content and wouldn't show my replies to posts - I checked the main posts with this account of mine and double checked that the friendica instance wasn't blocked or defederated.

[-] ICastFist@programming.dev 1 points 19 hours ago

I have no fucking clue how awful this might be, but I'll try it

[-] ICastFist@programming.dev 4 points 19 hours ago

To be fair, it's not "taking over the world". A lot of people are (ab)using it thinking it gives them productivity superpowers (it doens't and makes everyone around them see them as talentless hacks)

The real problem (besides the near infinite debt that won't ever be paid) is the neverending hype, with ai-evangelists being worse than cryptobros once they moved to NFTs

[-] ICastFist@programming.dev 6 points 20 hours ago

Is any of those a mobile first game? Besides, I totally get this complaint of op's

Nothing I hate more than playing a game designed for a controller on a touchscreen.

[-] ICastFist@programming.dev 2 points 20 hours ago

Move to a large river, lake or the sea and fish up, ezpz

[-] ICastFist@programming.dev 2 points 20 hours ago

If you're lucky, the scratch didn't come with the predator's fangs on your throat

[-] ICastFist@programming.dev 5 points 20 hours ago

I'll take the new life+, thank you. Gonna be trivial to become a child prodigy, earn money off that and then have a very smooth adult life

[-] ICastFist@programming.dev 5 points 20 hours ago

It's awful for anyone with any neurodivergence.

"You HAVE to fit in or be ostracized" - So we try, some of us end up hating this mask we're forced to put up in order to appease the normies and the cultural norms, I certainly hated mine and hate places where I have to put it up. Seeing through the bullshit of many norms makes fitting in even more challenging.

Schools and culture as a whole aren't teaching kids to understand and respect different behaviors (within reason, obviously, disruptive behaviors shouldn't be ignored), only to enforce existing social norms, ridiculing and excluding those that fall out of it until they comply or go away.

I suppose another thing that makes it worse for girls is that they don't have as much leeway in expected behavior as boys do. Girl groups can be much more cruel with their peers than boys

Something that might be helpful for people with ADHD or other neurodivergences, is habits through repetition. You have to create good habits, especially of the things you know are good for you - drinking water, exercise, cleaning your home, study. The bad news is that creating habits is hard and can take 6 months or more, depending on the activity. The struggle is real and I keep failing in creating some good habits for myself :/

[-] ICastFist@programming.dev 4 points 21 hours ago

The company keeps me sharp, that's why I'm almost dead

[-] ICastFist@programming.dev 17 points 1 day ago

18 in a week sounds very doable, 3 a day isn't much and you finish in 6 days.

[-] ICastFist@programming.dev 7 points 1 day ago

Retroachievements are community made achievements for games and systems from before the idea was implemented in the xbox360. As op stated, this is for the PS2, a console released back in 2000

35

Sauce - https://retrocdn.net/images/2/2e/EGM_US_086.pdf , page 96

"[Blood Omen: Legacy of Kain] is expected to offer at least 120 hours of gameplay."

45

As I prepare to give art classes to younglings (10-11yo), I usually try to teach basic shapes with direct practice via chibi characters. I also take the opportunity to explain what usually makes a character or drawing "cute".

In any case, I present you Sanrio-Man, the salary-san. He is old, disgruntled, balding, overworked, but full of hopes, dreams and kawaii energy

129

Could do without it burning the planet

37

By analogic age, I mean before computers became widespread.

I want to have something more visual than just the description of the processes involved, especially how a finished B&W art was made into something that could be printed several times

7
212
submitted 4 months ago by ICastFist@programming.dev to c/til@lemmy.world

It's a notoriously shitty game, but I was surprised when I saw that, despite being a side-scrolling "action" game, it uses WASD for movement on the Amiga and Apple IIgs.

https://www.mobygames.com/game/110/dark-castle/screenshots/

19
Truly a miracle (programming.dev)
46
Rated E for Everyone (programming.dev)
37
Ah, 1980s Brazil (programming.dev)

"And you? Where's your little mark?"

Not sure if this should be tagged NSFW

95

Elements of Ultima VII were inspired by game developer Origin Systems' conflicts with competitor (and later owner) Electronic Arts. Origin Systems' corporate slogan was "We Create Worlds", while the main antagonist of the story – the Guardian – is presented as a "Destroyer of Worlds". The three evil "Generators" created by the Guardian in the game take the physical shapes of the contemporary Electronic Arts logo: a cube, a sphere, and a tetrahedron. Elizabeth and Abraham, two apparently benevolent characters who later turn out to be murderers, have the initials "E" and "A".[10] Electronic Arts would acquire Origin later that same year, on September 25, 1992.

EA, destroyer of worlds since 1992

36

I know that direct p2p filesharing programs have been mostly superceded by torrents and even ddl, but sometimes I feel like "trying my luck" with stuff I didn't search for directly (behind a VM, because i'm not that adventurous)

25

This is a follow up to my previous post here - https://programming.dev/post/46041021 - For those that want a tldr: I'm making a php site for myself writing nearly everything by hand. The only external library I'm using is Parsedown.

After a good time working on my site, I'm happy to announce that I've officially shared it with my friends^[I won't share it here as the site is tied to a different online persona of mine]! The site isn't really "ready" yet, but it's very usable and readable, so that's good!

As for code quality? Well... It's kinda awful. Instead of this:

class User {
  $login = new String();
  $email = new String();
  ...
}

I'm using named arrays (hashes)^[Kinda funny how associative arrays have soe many different names in other languages: hash, dictionary, map] everywhere:

class User {
  $columns = array( 'login' => '',
  'email' => '',
  ...
}

"But WHY???", you might be asking. Well, to facilitate the creation of the database from zero! Here's an example of my trick:

abstract class Common {
 /**
  a bunch of different, generic select and update functions
*/
}
class Users extends Common{
$cols = array('uid'=> 'primary key auto_increment',
    'vc1_login'=> 'unique not null',
    'vc1_display_name'=> '',
    'vc2_password'=> 'not null',
    'dat_created_at'=> 'not null',
    'bol_enabled'=> 'default 1',
    ...
}

With this, the $key part of the hash doubles as the column name and their default/new values are always the details needed for the creation of their respective columns. I also treat the ::class as part of the table name. With a few functions, I can easily recreate the database from zero, something which I've tested a few times now and can confirm that it works great! Also, with key pairs, making generic SQL functions becomes very easy with foreach() loops of the $cols hash. Example:

abstract class Common {
public function selectColumns($columns, $table = '', $where='1', $orderby = '') {
        $conn = connectDb(); //static function outside class
        if ($table == '') {$table = $this::class;}
        $coll = '';
        foreach ($columns as $cols) {
            $coll .= $cols.', ';
        }
        $coll = substr($coll,0,-2);
        $stmt = $conn->prepare("SELECT ".$coll." FROM `T_".$table."` WHERE ".$where." ".$orderby.";");
        $stmt->execute();
        return $stmt->fetchAll(PDO::FETCH_ASSOC); 
//Fetch_Assoc is used so I'm forced to always use the $key in the returned array
    }

// This function will attempt to update all non-empty pairs of a given object
public function updateColsUid(){
        $conn = conectaBanco();
        $sql = "UPDATE `T_".$this::class."` SET ";
        $keys = array('uid' => $this->cols['uid']);
        foreach ($this->cols as $key => $value) {
            if (($value != '') and ($key != 'uid')) {
                $sql .= " `". $key. "` = :" . $key . " ,";
                $keys[$key] = $value;
            }
        }
        $sql = substr($sql,0,-1);
        $sql .= " WHERE `uid` = :uid;";
        $stmt = $conn->prepare($sql);
        $stmt->execute($keys);
        return $stmt->rowCount();
    }

The biggest problem with this is that if I ever remove, add or rename any of these $keys, it'll be a fucking chore to update code that references it. I'll look into using proper variables for each column in the future, especially as a database creation is something you usually only do once. On the plus side, this is the most portable php site I've ever did (1 out of 1, but whatever)

Anyway, current functionality includes creating an account, modifying some aspects^[I want to note that there was a bunch of validation that I initially didn't think of doing, but luckily had a couple of "Wait, what if..." moments. One of those was to properly escape a user's username and display name, otherwise, when echo'ing it, <b>Bob</b> would show as Bob. While the fields probably wouldn't be enough to fit anything malicious (fitting something malicious inside a varchar100 would be a real feat, ngl), it's better to close this potential hole.] of it (profile description, display name (which is html escaped, so no funny business here), signature), logging in, letting the admin make new posts, letting anyone logged in comment on existing posts, comment moderation.

I also keep track of every page visitors are going to, saving these to the database (user agent, IP, page visited) - this will be the table that will fill up faster than any other, but might also allow me to catch eventual bots that ignore robots.txt - supposing I can figure them out.

Initially, I was planning on having each post select from a list of existing categories (category N -> N posts), but after some thought, decided against that and came up with a working alternative. Posts now have a single column where categories are manually written in, separated by commas. I later retrieve them with select distinct, explode() the string into an array and finally remove duplicates with array_unique(), making it easy for visitors, and for me, to get all the unique and valid categories.

One thing I'm doing that I'm not sure whether it's good, neutral or bad design/architecture, is using the same site that has the form to also validate/insert data, as in: instead of having newpost.php and validate_and_insert_post.php files doing separate jobs, my newpost.php is the page has the form and also receives the form in order to validate and insert into the database.

The whole thing's currently sitting at 220kb, unzipped, counting the leftover files that I'm no longer using. The fact that I can deploy this literally anywhere with a working php 8+ server without typing any terminal commands makes me very happy.

view more: ‹ prev next ›

ICastFist

joined 3 years ago