• 0 Posts
  • 49 Comments
Joined 2 years ago
cake
Cake day: July 5th, 2023

help-circle
  • A few years ago I had a software problem, and in the course of trying to solve it I found someone with almost the identical problem on SO, although no-one had posted a solution. Later on, I managed to piece some facts together and come up with a solution that worked for me. Trying to make life easier for others having the same problem, I posted my solution to that SO question, along with a brief explanation of what I thought the underlying problem was, and how my solution addressed it.

    I got several upvotes, and one or two comments from people saying it worked for them too, which was nice. There was also a post from someone it didn’t work for, and they outlined why they thought that might be, which was constructive.

    Unfortunately there was also some salty grump who weighed in just to tell me that my solution wasn’t “correct”. Not that it didn’t work mind you, just that it wasn’t good enough for them. As far as I bothered to look into their vague comments, my solution may have fixed the issue more as a side-effect than directly, but it did fix the issue. Meanwhile this person offered no alternative instructions of their own.

    As time goes on, I seem to run across this sort of – not just unhelpful but “anti-helpful” – attitude more and more often on SO.




  • That’s kind of the bare bones of how it works, underneath all the abstraction layers and pretty GUIs.

    Then it evolves.

    First, you start splitting your code into multiple source files, either because your programs get too big to keep scrolling up and down one huge file to cross-check things, or because you want to incorporate someone else’s code into your program, and it’s more than just one or two functions you can easily copy and paste. You can still keep compiling and linking all of this in one step, but the command gets so long that you make a shell script/batch file as a shortcut.

    After that, you might want to mix-and-match various source files to target different platforms, or to make other bulk changes, and you start going down the rabbit hole of having your shell script take arguments, rather than having a dozen different scripts. And then one day you take another look at “make” and realize that whereas before it seemed like impenetrable overengineering, it now makes complete and obvious sense to you.

    Then you discover using “make” (or a similar utility) to split compilation and linking into separate steps, which used to seem nonsensical, but now you’re dealing with codebases that take more than a couple of seconds to compile, or precompiled libraries or DLLs, and you get comfortable with the idea of just hanging on to compiled object files and (re)using them when the source for that part of the program hasn’t changed.

    And finally (maybe) you look at some of the crazy stuff in fancy IDEs and understand why it’s there; that it’s just representations of all this other stuff that you now know about and feel competent with. I say “maybe” because I’ve been programming for over 35 years, occasionally professionally but mostly as a hobbyist, and there are still things in IDEs that I either don’t understand, or don’t see the point of having them. But knowing the underlying principles makes me feel comfortable enough to ignore them.


  • I hadn’t heard of Kate before, so I can’t offer much hands-on advice. I dug around and found a “handbook” here: https://docs.kde.org/stable5/en/kate/kate/index.html

    Unfortunately it does look like you need to define a project to compile/run anything, which appears to require manually creating a .kateproject file in the directory as outlined here: https://docs.kde.org/stable5/en/kate/kate/kate-application-plugin-projects.html#project-create

    I had exactly the same problem when I moved from languages that were interpreted or combined the IDE and runtime environment into one, and starting to use languages which had their own external compiler. Unfortunately, open source project user documentation is often terrible for beginners (what I found above for Kate seems to be no exception), and IDEs often seem to be written by people who don’t really expect anyone to actually use the included build options (to be fair, most folks seem to like using their own separate build utilities, so probably this is often the case)

    If you can tell us which compiler or interpreter you’re using (e.g. gcc, clang, Python), someone can probably tell you how to compile and/or run a single-file program from the terminal with a fairly simple command.



  • If you or anyone else is interested in playing more, I recommend:

    • Silent Hill 2: Restless Dreams (aka Director’s Cut). Not a continuation of the story of the first game, but a separate story in the same universe. Generally agreed to take everything good from the first game and improve upon it. The “Restless Dreams” version has a substantial extra scenario which adds some backstory and lore, but should probably be played only after completing the main game.
    • Silent Hill 3. This one does continue the story of the first game, somewhat. To be honest I remember enjoying it but not much in terms of particulars.
    • Silent Hill 4: The Room. Started out as a separate game unrelated to the Silent Hill mythos, but was rewritten to become an SH game during development. This sounds like it might be a terrible cash-in, but it really is a perfect fit for the SH universe. IMO almost as strong as SH2.
    • Silent Hill: 0rigins. A PSP game set as a prequel to the first game. A little light on story, and with some odd combat mechanics, but I still found it very enjoyable. I played the later PS2 port.
    • Silent Hill: Shattered Memories. A “reimagining” of the story from the first game. It plays and feels very different to the previous games, but I still enjoyed it quite a lot.
    • Silent Hill: Orphan. A series of point-and-click adventures for Java-enabled mobile phones from the 2000s. Totally different mechanics from the mainline games, but they do the atmosphere and story well if you don’t mind the slower pace of point-and-click. They run on some J2ME emulators.
    • Silent Hill: Alchemilla. A free fan-game centered on the Alchemilla Hospital, but also including several other locations. First-person view with many puzzles and no combat. Very polished and really nails the atmosphere.

    I played a little of Silent Hill: Homecoming but got tired of it about 1/3 of the way through (I guess). I also bought Silent Hill: Downpour but gave up on that even more quickly. I don’t recommend either of them. Things introduced in the earlier games for specific psychological reasons related to the plot - especially sexy monster nurses and Pyramid Head - tend to be regurgitated in the later games for no real reason other than “Silent Hill”, which removes their impact completely.


  • I think I was kinda in the same boat as you.

    In theory, I loved the fact that if you wanted to check, the game would tell you when you theoretically had enough information to identify one of the crew or passengers, so you knew where to focus your thinking. But I got stuck on some characters who seemed to me to be implied or hinted, but for whom I didn’t think I had positive proof.

    I eventually got tired of continuously reviewing the same scenes over and over, looking for some detail that I had overlooked, and read a walkthrough to find out what I was missing. It seems that I hadn’t missed anything, and “an educated guess” was the standard expected by the game, not “definitive proof”. But I was burnt out with the game by that point and stopped playing.



  • The morality system was a huge disappointment for me. You said most of what I wanted to say, so I’ll be brief.

    Right near the start of the game, an NPC outlines the Way of the Open Palm vs. the Way of the Closed Fist, more or less the same way you described them. And I was so excited to see a morality system in which both sides were morally defensible positions. But from the very first Closed Fist follower you meet (just minutes later), they may as well all be monacle-wearing moustache-twirlers who punctuate every sentence with “mwah-ha-ha!”

    The worst example that I remember is a bootlegger who’s essentially holding a town hostage. Far from following either philosophy as described, he’s just plain evil, and in fact I easily came up with (IMO solid) arguments for actually swapping the game’s morality labels on the player’s options. But no, one option is clearly “evil”, so that’s Closed Palm, while the other is obviously “good”, hence Open Palm.


  • You say active waiting, but I wonder if you mean a busy-wait? Busy-waiting is generally bad, but don’t forget that your main loop is just what executes when the OS decides to give your program some processor time. If you just check a stored timestamp vs the current clock at the start of each iteration, and then do nothing unless enough time has passed, control will go back to the OS for a bit, not the start of your next loop, so it’s not a true busy-wait.

    The original PC’s hardware timer was… not great, and I believe that the situation only got worse over time. I understand the desire not to waste resources, but modern OSs are designed with the fear of not fully exploiting resources, so there’s only so much you can do.



  • It’s not a really big thing, but it is a pet peeve of mine (and some others); the name of the series isn’t “Dues Ex” but “Deus Ex” (day-us ex), as in “deus ex machina” (day-us ex mack-in-a).

    “Deus ex machina” literally translates as “God from (the) machine”, and originally referred to a type of stage prop used in ancient plays, then in more modern times the term came to refer more generally to the sort of plot device that used that prop, which is a previously unmentioned person or thing that suddenly appears to save the heroes from an otherwise inescapable threat. At some time in the 60s or 70s it started to become popular to use it in a more literal sense in sci-fi stories about machine intelligence or cyborgs.





  • Let me know if you find one that uses AI to find groupings of my search terms in its catalogues instead of using AI to reduce my search to the nearest common searches made by others, over some arbitrary popularity threshold.

    Theoretical search: “slip banana peel 1980s comedy movie”
    Expected results in 2010: Pages about people slipping on banana peels, mostly in comedy movies, mostly from the 80s.
    Expected results in 2024: More than I ever wanted to know about buying bananas online, the health impacts of eating too many or not enough bananas, and whatever “celebrities” have recently said something about them. Nothing about movies from the 80s.


  • I think that the demographics of gamers have been skewing older and older, and it’s finally reached the point where a critical mass are past the age where they place significant value on the “newness” of a game.

    You can still find 13-year-olds decrying PS3 and 360 games as being “unplayable” due to their perceived technological shortcomings, but every year they represent a smaller and smaller slice of the total market. The surveys I’ve seen lump 18-35 into one group, but I’d be interested to see the results of splitting that into two groups at around 26-27.



  • That XKCD reminds me of the case a year or three ago where some solo dev that no-one had ever heard of was maintaining a library that a couple of other very popular and major libraries depended on. Something somewhere broke for some reason, and normally this guy would’ve been all over it before most people even realized there had been a problem, but he was in hospital or jail or something, so dozens of huge projects that indirectly relied on his library came crashing down.

    What upset me most was reading the community discussion. I didn’t see a single person saying, “How can we make sure that some money gets to this guy and not just the more visible libraries that rely so heavily on his work?”, even though the issue was obliquely raised in several places, but I did see quite a few saying, “How can we wrest this code out of this guy’s hands against his will and make multiple other people maintain it (but not me, I’m too busy) so we don’t have a single point of failure?”