[-] ICastFist@programming.dev 2 points 2 days ago

Starfield? I would argue it's much worse than NMS, though I don't know how the current game is. Back when I played, a couple of months before the first dlc dropped (before the buggy update, even), you were extremely limited in choices for base building. You had like 4 or 5 prefabs of a living quarter which came pre decorated.

Starfield offers good ship customization (and stupidly talent-locks a lot of it), unlike NMS, which only added a tiny bit of that in an update last year I think

[-] ICastFist@programming.dev 2 points 2 days ago

Evil org tries to take over the world, 10yo kid beats them with the power of ~~animal abuse~~ FRIENDSHIP. Absolute cinema, my friend

[-] ICastFist@programming.dev 1 points 2 days ago

Sometimes you are high on hopium and copium, you're hoping that it gets better later on, or you just overlook some problems.

Sometimes you're already too used to the game, so it doesn't fully entertain, but it isn't "feeling" like a waste of time yet. This happens a lot with "endless" games like most MMOs and "game as a service"

[-] ICastFist@programming.dev 1 points 2 days ago

If you don't mind, I can spoil the story for you:

NMS storyAs you try to help Artemis, you discover that they're just a simulation of a different reality. Some time after you discover that, you have a choice to either keep a version of that simulation working or shut it off. I dunno what the text says if you shut it off, but if you keep it, Artemis isn't happy because now they know they're living in a simulation that they cannot escape. Advancing a bit further, you find out that you are also living in a simulation and that the galaxy you're in is no different from Artemis'. Atlas is the source of the simulation, but it is faulty for unknown reasons.

Advance some more and you're then given a choice to reset the galaxy into something "different" - mechanically, it only affects where you restart and how likely you are to find certain types of planets.

[-] ICastFist@programming.dev 1 points 2 days ago

TIL About that Theatre of the Opressed. Not really surprised that, even today, the powerful in Brazil do their best to un-exist people that do anything that could even remotely threaten the status quo. I mean, I took theatre classes twice in my life (2004 and 2015) and Augusto Boal was never once mentioned, likely because none of the veterans and teachers even knew about him.

[-] ICastFist@programming.dev 2 points 3 days ago

It affected everyone using the app, no matter the instance. For example, if me, a resident of programming.dev, tried to look for the mod_abuse or power_tripping communities of any instance, I would see no results. If you tried to connect as a user from any of the blacklisted instances, the app wouldn't even work

When you use tesseract to connect to one blacklisted such instance , you just get a message informing you that Tesseract is “incompatible with that instance” which leads one to think of a technical issue, like an API mismatch, rather than the dev being an opinionated coward. - https://lemmy.dbzer0.com/post/72685299

Regarding the frontend, seems it also worked "behind the scenes" on the browser, which is stated in the post I linked in that quote. Unfortunately, the github links are all 404 now.

[-] ICastFist@programming.dev 12 points 3 days ago

Back in 2013 or 2014 I think.

I was going out with a woman slightly older than me (me 23, she 27), we had already had sex twice. I don't recall the exact details of this date of ours, but we met around 19h, later I took her home and we sat in the car, getting hot and stuff, when my hand went down on her, where I noticed something weird. She pulls her panty aside and there's a male condom sticking out of her. I bust my ass laughing while she desperately tries to not die from shame. We weren't having anything serious and we both knew the other "might be meeting others", so I really didn't mind the fact she fucked another guy before meeting up with me that day. I found it so absurd that she somehow didn't notice the condom was left inside her that I just couldn't help myself but laugh.

She started ghosting me after that day, no big loss 😆

[-] ICastFist@programming.dev 6 points 3 days ago

Look on the bright side, all that plotting and scheming will make for a great series of tales for centuries to come

[-] ICastFist@programming.dev 5 points 4 days ago

The whole culture seems sexually repressed, if you look at it. The internet loves to joke about holding hands being the culmination of porn, but it feels like they treat anything beyond touching hands as sexual

[-] ICastFist@programming.dev 43 points 4 days ago

Tesseract is an android app people could use to connect to lemmy. For some reason, the dev had several instances, words and users completely blocked within the code, without letting the person who downloaded even know about it, much less disable the blocks. One of the things it blocked were "mod abuse" communities.

As expected, things exploded once it was made public. No problem in having personal biases, everyone has them, but shipping an app with those biases baked in and hidden from the user is a shitty thing to do.

[-] ICastFist@programming.dev 16 points 4 days ago

"It wasn't aliens!" - Says the people who work at a flying saucer looking building! I bet it doubles as a landing place for the aliens!!!

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.

89
view more: ‹ prev next ›

ICastFist

joined 3 years ago