1
37
I Don't Trust My Own Code (lackofimagination.org)
2
6
3
-11
4
22
5
50
6
31
The 2024 Stack Overflow Developer Survey is live (stackoverflow.az1.qualtrics.com)
submitted 2 days ago* (last edited 2 days ago) by Kalcifer@sh.itjust.works to c/programming@programming.dev
7
18
8
84
submitted 4 days ago* (last edited 4 days ago) by BurningnnTree@lemmy.one to c/programming@programming.dev

Some background: I'm a software developer, and I've never really participated in the open source software community before. (i.e. I don't contribute to open source projects, I don't know anyone who does, and I don't really know anything about the companies who start these projects to begin with, or what their motivations are for being open source.)

I'm currently trying to find software that my team at work can use to solve a particular problem we have. After doing some googling, it looks like this open source product called OpenReplay is a good fit for what we need: https://openreplay.com/

But when I first visited that website, I noticed that the background artwork looks AI generated. This made me feel skeptical of the project, and it makes me wonder: what if it's actually a huge scam and it's actually malware? For example, maybe OpenReplay is actually a copy of a different legitimate product that I'm not aware of. Maybe all of the stars, forks, and discussions on the GitHub page are from fake accounts. When I Google OpenReplay, there aren't a whole lot of results. How do I know if it's trustworthy if I can't find an authoritative source telling me it is?

Maybe I'm just being paranoid. But this is basically the first time in my career where I've tried to vet a new piece of software for my team to use, and I want to make sure I'm doing it right. How do you know when a product like this can be trusted?

EDIT: I don't mean to cast doubt on OpenReplay specifically, I'm just using that as an example because it's the product I'm currently looking into. My question applies to any piece of software that isn't widely known about.

9
-16
10
182

New favorite tool 😍

11
32
submitted 5 days ago* (last edited 5 days ago) by full_of_questions@programming.dev to c/programming@programming.dev

I just searched online and was taken aback by the lack of content I could find , there are millions of video for different small niche things by hundred of people which are right and wrong about things but the most I could even find about how chips are made today are the ones explaining how silicon works etc. LTT is the only one which even have a factory video and it is too very censored uninformative and useless for my questions .

1 - I get that light is flashed in binary to code chips but how does it actually fookin work ? What is the machine emmiting this light made up of ? How does this flashing light hold as data forever on chip ?

2 - How was program's, OSs, Kernal etc loaded on CPU in early days when there were no additional computers to feed it those like today ?

3 - I get internet is light storing information but how ? Fookin HOW ?

4 - How did it all come to be like it is today and ist it possible for one human to even learn how it all works or are we just limited one or two things ? Like cab we only know how to program or how to make hardware but not both or all ?

5 - Do we have to join Intel first or something to learn how most of the things work lol ? Cause the info available online about the software, hardware, skills etc is shit ? Not even RISC-V documentary are available .

Context - Just started learning python and got philosophical to how all things came to be ? Is just making apps or websites even a thing worth learning in the grand scheme of things ? I get that some people is just okay with that but come on have you never thought about how the deep you can go ?

anyway feel free to tell me to stfu and I'm sorry if sub=wrong and will move on request . And as the username suggest I'll be posting questions as I have them and thanks.

ALSO ELI5 everything please

12
82
13
-66

JavaScript is a language that's easy to learn and has a gorillion features shoehorned in, to varying degrees of success. If you're relatively new to programming (just got done learning Python/Java) there's bound to be something new that you learn from JavaScript due to all its extra added features. Though these extra features are cool, over time you will slowly learn of the flaws that JavaScript has, and you will begin to associate "easy to learn with cool features" as the worst mistake that the language made. So, surely the answer must be to reduce how easy things are to learn. You will start to worship anything that excludes the less experienced and has cool features - for example Haskell or JS Frameworks - and you will denigrate solutions that seem too "simplistic and dirty". You will point to examples like C or Adobe Flash, citing that they have must have security vulnerabilities because they're accessible and so stupid people must be creating footguns with them. You will completely neglect the ways in which they're poorly designed and you will completely ignore the positives of both. Fundamentally, you will refuse to acknowledge that it's possible for software to be accessible and to be designed well at the same time.

Today, the internet is a dumpster precisely because of this false equivalency. It would be easy for Google to remove the guardrails from WebAssembly in some sort of public testing version of Chromium, allowing WASM to support fun little runtimes with 10x the safety of Flash. Artists could use software packages similar to the old Adobe Flash suite in order to make cool things again, expanding beyond the Neocities pages that are currently trendy. Over time, we could improve WASM environments to be incredibly safe, have interesting specialized runtimes and make super cool creations, a development model which basically already worked with HTML and CSS. But, because people still think accessible === vulnerable, we will never have that, and so every site will have the same hyperminimalistic slop look, and artists will be pushed onto the same shitty platforms to do nothing exciting in formats that have existed for centuries.

Programmers learned the wrong lesson in the 00s - that everything needs to be gatekept to protect people from themselves. The actual lesson was that designing things properly can let anyone make anything. Sure, the DOM doesn't satisfy people's need today, but it used to be excellently designed for its task - that's why it could let anyone build something amazing

14
11

When people reunite after a long absence, they are often surprised by the changes in each other; however, the transformations in those who are with us day after day are often overlooked. In this article, I will sift through the key updates to SwiftUI that have made a significant impression on me since its first version. This is not only a reflection on the evolution of SwiftUI from its inception to its maturity but also a fresh appreciation of the vitality it embodies.

15
27
16
43
17
57

Some of you may have come across Helix - a very fast editor/IDE. Unfortunately, Helix has its own set of keybindings, modeled after Kakoune.

This was the one problem holding me back from using this excellent editor, so I soft-forked the peoject to add Vim keybindings. Now, two years later, I realize this might interest others as well, so here we go:

https://github.com/usagi-flow/evil-helix

I‘d be happy to polish the fork - which I carefully keep up-to-date with Helix‘s master branch for now. So let me know what you think!

And yes, I‘m also looking for a more original name.

18
44
19
22
20
93

Not sure if this is the right community, but I didn't see a general one. What search engine do you use? Besides Google increasingly spying on its users, the quality of its search results seems to have gotten significantly worse over the last decade. What search engine(s) do you use?

21
98

In this letter, Dijkstra talks about readability and maintainability in a time where those topics were rarely talked about (1968). This letter was one of the main causes why modern programmers don't have to trouble themselves with goto statements. Older languages like Java and C# still have a (discouraged) goto statement, because they (mindlessly) copied it from C, which (mindlessly) copied it from Assembly, but more modern languages like Swift and Kotlin don't even have a goto statement anymore.

22
13
submitted 1 week ago* (last edited 1 week ago) by thingsiplay@beehaw.org to c/programming@programming.dev

Solution was quite easy. Thanks to the user reply here: beehaw.org/comment/3535588 or programming.dev/comment/10034690 (Not sure if the links actually work as expected...)


Hi all. I have a little problem and don't know how to solve. A CLI program in Python is broken since Python 3.12. It was working in Python 3.11. The reason is, that Python 3.12 changed how subclassing of a pathlib.Path works (basically fixed an issue), which now breaks a workaround.

The class in question is:

class File(PosixPath):
    def __new__(cls, *args: Any, **kwargs: Any) -> Any:
        return cls._from_parts(args).expanduser().resolve()  # type: ignore

    def __init__(self, source: str | Path, *args: Any) -> None:
        super().__init__()
        self.__source = Path(source)

    @property
    def source(self) -> Path:
        return self.__source

    @property
    def modified(self) -> Time:
        return Time.fromtimestamp(os.path.getmtime(self))

    @property
    def changed(self) -> Time:
        return Time.fromtimestamp(os.path.getctime(self))

    @property
    def accessed(self) -> Time:
        return Time.fromtimestamp(os.path.getatime(self))

    # Calculate sha512 hash of self file and compare result to the
    # checksum found in given file. Return True if identical.
    def verify_sha512(self, file: File, buffer_size: int = 4096) -> bool:
        compare_hash: str = file.read_text().split(" ")[0]
        self_hash: str = ""
        self_checksum = hashlib.sha512()
        with open(self.as_posix(), "rb") as f:
            for chunk in iter(lambda: f.read(buffer_size), b""):
                self_checksum.update(chunk)
            self_hash = self_checksum.hexdigest()
        return self_hash == compare_hash

and I get this error when running the script:

Traceback (most recent call last):
File "/home/tuncay/.local/bin/geprotondl", line 1415, in 
sys.exit(main())
^^^^^^
File "/home/tuncay/.local/bin/geprotondl", line 1334, in main
arguments, status = parse_arguments(argv)
^^^^^^^^^^^^^^^^^^^^^
File "/home/tuncay/.local/bin/geprotondl", line 1131, in parse_arguments
default, status = default_install_dir()
^^^^^^^^^^^^^^^^^^^^^
File "/home/tuncay/.local/bin/geprotondl", line 1101, in default_install_dir
steam_root: File = File(path)
^^^^^^^^^^
File "/home/tuncay/.local/bin/geprotondl", line 97, in __new__
return cls._from_parts(args).expanduser().resolve()  # type: ignore
^^^^^^^^^^^^^^^
AttributeError: type object 'File' has no attribute '_from_parts'. Did you mean: '_load_parts'?

Now replacing _from_parts with _load_parts does not work either and I get this message in that case:

Traceback (most recent call last):
File "/home/tuncay/.local/bin/geprotondl", line 1415, in 
sys.exit(main())
^^^^^^
File "/home/tuncay/.local/bin/geprotondl", line 1334, in main
arguments, status = parse_arguments(argv)
^^^^^^^^^^^^^^^^^^^^^
File "/home/tuncay/.local/bin/geprotondl", line 1131, in parse_arguments
default, status = default_install_dir()
^^^^^^^^^^^^^^^^^^^^^
File "/home/tuncay/.local/bin/geprotondl", line 1101, in default_install_dir
steam_root: File = File(path)
^^^^^^^^^^
File "/home/tuncay/.local/bin/geprotondl", line 97, in __new__
return cls._load_parts(args).expanduser().resolve()  # type: ignore
^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/pathlib.py", line 408, in _load_parts
paths = self._raw_paths
^^^^^^^^^^^^^^^
AttributeError: 'tuple' object has no attribute '_raw_paths'

I have searched the web and don't understand how to fix this. Has anyone an idea what to do?

23
35
24
89
25
11

For some time now, I've been thinking about the concept of interactively manipulating mathematical expressions and equations via software. Like doing some quick algebra in Notepad or similar, except there's no potential for arithmetic/algebra errors, typos, etc. ruining any results.

At the same time, I also wanted to experiment a bit with zippers from functional programming. You need some way of specifying what (sub)expression to perform operations on, and it seemed like this kind of data structure could help with that.

And so, I made AlgeZip, a small proof-of-concept of the whole general idea. Although this polished Python version was completed only a few days ago, there were various other versions before this one in different languages and with worse-quality code. Instructions for things are on GitHub; requires Python 3.12 to run.

For simplicity, I decided to use boolean expressions instead of generic numeric algebraic expressions/equations, and only decided to include the minimum in terms of commands and functionality. From my understanding, it should be possible to transform any boolean expression into any other boolean expression in AlgeZip (without using the r! command except to set things up), though I could be wrong.

Thoughts, comments, and criticism on the idea as a whole, the program, or the source code are welcome, though I'm not sure if I'll be making any changes at this time.

view more: next ›

Programming

15872 readers
90 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 11 months ago
MODERATORS