Software engineer, functional programming enthusiast.

  • 2 Posts
  • 69 Comments
Joined 3 years ago
cake
Cake day: April 27th, 2021

help-circle
  • No, it is because people in the Linux community are usually a bit more tech-savvy than average and are aware that OpenAI/Microsoft is very likely breaking the law in how they collect data for training their AI.

    We have seen that companies like OpenAI completely disregard the rights of the people who created this data that they use in their for-profit LLMs (like what they did to Scarlett Johansson), their rights to control whether the code/documentation/artwork is used in for-profit ventures, especially when stealing Creative Commons “Share Alike” licensed documentation, or GPL licensed code which can only be used if the code that reuses it is made public, which OpenAI and Microsoft does not do.

    So OpenAI has deliberately conflated LLM technology with general intelligence (AGI) in order to hype their products, and so now their possibly illegal actions are also being associated with all AI. The anger toward AI is not directed at the technology itself, it is directed at companies like OpenAI who have tried to make their shitty brand synonymous with the technology.

    And I haven’t even yet mentioned:

    • how people are getting fired by companies who are replacing them with AI
    • or how it has been used to target civilians in war zones
    • or how deep fakes are being used to scam vulnerable people.

    The technology could be used for good, especially in the Linux community, but lately there has been a surge of unethical (and sometimes outright criminal) uses of AI by some of the worlds wealthiest companies.




  • Emacs is a religion, or an OS

    Philosophy is a subset of religion, and there is a definitely an Emacs philosophy about making absolutely all software hackable, and controlling the computer using text.

    App platforms are a subset of operating systems. People confuse the two because most app platforms are inseparable from the operating system on which they run. But some software, like the Web, or Java, or to some extent .NET/Mono, are app platforms that run the same apps across multiple operating systems. Emacs is an app platform.


  • How do you think one should get started with Emacs? Should they start start with regular GNU Emacs or should they install one of the “distros”?

    I always recommend using the default setup for any software. The same goes for learning GIMP, Krita, Blender, FreeCAD, or whatever else, even though you can customize them all to your liking.

    It is usually a good idea to try and learn the workflow that was intended by the people who developed this software, you could learn something from trying to use the computer in the same way that the professionals do. Same for Emacs: professional software developers have used it for almost 50 years, the default keyboard shortcuts are set the way they are partially for random historical reasons, but partially because they often make a lot of sense.

    If you are interested, please check out my blog series on getting started with Emacs, called Emacs for Professionals



  • Ramin Honary@lemmy.mltoLinux@lemmy.mlWhat are your must-have programs?
    link
    fedilink
    English
    arrow-up
    20
    arrow-down
    2
    ·
    edit-2
    1 month ago

    Emacs.

    Emacs is an app platform in and of itself, and the vanilla installation comes with dozens of its own apps pre-installed. Like how web apps are all programmed in JavaScript, Emacs apps are all programmed in Lisp. All Emacs apps are scriptable and composable in Lisp. Unlike on the web, Emacs encourages you to script your apps to automate things yourself.

    Emacs apps are all text based, so they all work equally well in both the GUI and the terminal.

    Emacs comes with the following apps pre-installed:

    • a text editor for both prose and computer code
    • note taking and organizer called Org-mode (sort of like Obsidian, or Logseq)
    • a file browser and batch file renamer called Dired
    • a CLI console and terminal emulator
    • a terminal multiplexer (sort-of like “Tmux”)
    • a process manager (sort-of like “Htop”)
    • a simple HTML-only web browser
    • man-page and info page browser
    • a wrapper around the Grep and Find CLI tools
    • a wrapper around SSH called “Tramp”
    • e-mail client
    • IRC client
    • revion control system, including a Git porcelain called “Magit”
    • a “diff” tool
    • ASCII art drawing program
    • keystroke recorder and playback

    Some apps that I install into Emacs include:

    • “Mastodon.el” Mastodon client
    • “Elfeed” RSS feed reader
    • “consult” app launcher (sort-of like “Dmenu”)

  • I know, this one is so plausibly something those psychos in the various school board across the fucked-up state of Florida would actually do, I honestly thought this was real for a moment.

    They have already shut down entire school libraries, and censored several other public libraries, and are trying to make it illegal to speak freely about slavery or genocide or generally being critical of the US or the glorious military. And there is no shortage of 100% serious, 100% unironic talk (“protected free speech”) among ordinary Florida folk about how the slaves actually had it pretty good since they never had to worry about paying for rent or food, and anyone could have done the unskilled labor they did, “I mean, they never had human rights, but what would animals I mean black folk want with those.”

    I mean, this Onion headline is really, really plausibly real, and might even become real pretty soon.


  • Ramin Honary@lemmy.mltoLinux@lemmy.mlJanus, a simple text editor
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    2 months ago

    I have been using both professionally for at least 15 years and IMO without a doubt Qt is so much easier to use, read and work with it’s not even a comparison.

    I also use Qt professionally, and it is indeed an excellent GUI library. I have absolutely no complaints with how well it is designed and how easy it is to use, and I am consistently amazed by how beautiful the results are, especially with desktop environments like KDE Plasma.

    My complaint, which is really a deal-breaker for me, is that Qt effectively forces you into using C++ and Python and/or QML+Quick. For the non-professional software I develop, I want my apps to be scriptable by end users, and I do NOT want to force them to choose between only Python or Quick as their scripting language. For building scriptable, truly cross-platform GUI apps, Gtk is the only game in town.

    Gtk is much harder to use only if you are coding in C, because it depends so heavily on the C preprocessor to hack together the infrastructure that C++ has built-in. But because it is so easy to bind scripting languages to Gtk, you only need to program a few very core features in C, the rest you can program in any scripting language of your choice. This very important feature I think is a worthwhile trade-off for making it harder to code in C, especially if you are able to code the larger portion of your application (which is almost always the case) in a scripting language like Lua or Scheme. (Although I admit, most Gtk scripting is done in Python, just as it is with Qt.)

    Plus in comparison to Qt there are almost no commercial outfits using Gtk professionally and selling products based on it.

    Perhaps, but I would point out that both Canonical and RedHat (now IBM) are both heavily invested into developing Gnome, and I believe most of the paid Gtk development has been funded by these two companies.>


  • Ramin Honary@lemmy.mltoLinux@lemmy.mlJanus, a simple text editor
    link
    fedilink
    English
    arrow-up
    3
    arrow-down
    1
    ·
    edit-2
    2 months ago

    As someone who is trying to develop my own Linux destkop apps, I can tell you that the day that I switch to Qt is the day Qt provides a feature that works as well as GObject Introspection (GI) does for Gtk. GI creates a cross-platform database of objects, properties, and signals, for auto-generating language bindings, so you can customize your Gtk programs with scripting languages (Python, Lua, Vala, JavaScript, Scheme). It is a relatively simple task to bind any programming language to GObjects thanks to GI.

    Qt does have a QMetaObject system which is similar, but C++ is a difficult language to bind to on most operating systems because of how native language functions are labeled in the library code – names are “mangled”, a hack to work around the miss-match between object libraries features (.so or .dll files), which do not provide the ability to “overload” functions, and C++ libraries features, which do provide this ability. The function/method overloading feature is used quite often in any C++ program. But decoding mangled names for language bindings can be very error-prone without the sort of automation that GI provides.

    As it is now, really the best way to develop Qt apps is to use C++, with Python for scripting, because these languages are the most well-supported by Qt (C++ natively, Python being the most stable and well-maintained “foreign” language for Qt). And I like neither of these two language. Gtk gives you a much larger selection of scripting language choices, even though it is programmed in C, and this is thanks to how well GObject Introspection works.


  • Whenever I open the symlink, does the software (player) understand «oh this file seems like a symlink, I should go and open the original file», or it’s a filesystem level stuff and software (player) basically has no idea if a file I’m opening is a symlink or the original movie.mp4?

    Others have answered well already, I just will say that symlinks work at the filesystem level, but the operating system is specially programmed to work with them. When a program asks the operating system to open a file at a given path, the OS will automatically “reference” the link, meaning it will detect a symlink and jump to the place where the symlink is pointing.

    A program may choose to inspect whether a file is a symlink or not. By default, when a program opens a file, it simply allows the operating system to reference the file path for it.

    But some apps that work on directories and files together (like “find”, “tar”, “zip”, or “git”) do need to worry about symlinks, and will check if a path is a symlink before deciding whether to reference it. For example, you can ask the “find” command to list only symlinks without referencing them: find -type l


  • I don’t understand this guy’s argument at all. First of all, he isn’t using any shell that I know about, he seems to have invented his own, and the command line arguments he uses are specific to his own shell. He doesn’t explain how these command line arguments work in terms of POSIX system calls, so I can’t follow along with what he is actually doing. As far as I can tell, these are security issues with his own software, not with Unix or Linux.

    If you are worried about file mutability, you can use ZFS or BTrFS or BCacheFS. All of these filesystems have a snapshot function, so if any changes (e.g. file encryption by ransomware attackers) are made you can reboot and roll back the changes, unless the attackers figure out a way to get root access and delete your snapshots. But if an attacker has gained root access to your computer, that is a much more serious issue and not really in the scope of filesystem security or file mutability.

    The snapshot and rollback feature also exists in NixOS and GuixOS, where your operating system kernel and all software installed is part of a snapshot that can be rolled back, if the system becomes unbootable, you can rollback from within the GRUB boot loader. Again, all software installation is managed by a service that runs for you at root level so you never need sudo to install software, and the software you install never effects any other user or the operating system. So the only way to hack this is to gain root access and alter the content of the Guix or Nix “store” database with malicious code, but again, root access is a much bigger issue than what we are talking about.

    So yeah, the argument stated in this video makes no sense to me.


  • Yes! Emacs has already taken over most of my desktop environment apps with the exception of the web browser and a few apps like Blender and Gimp. I haven’t gone as far as you, getting each Emacs buffer to display in its own frame in is own WM-level window, but that would make for a more immersive experience. Also, your color scheme is similar to the one I use now. I love it.

    I can’t wait for the day when software written in Lisp takes over my window manager, then my panel, then my session manager, then my whole operating system kernel.



  • I wonder if that dip in Windows in April, going down to like 62%, and the correlated boost for “Uknown” operating systems to 13% might somehow simply be Windows not being recognized properly and categorized as unknown?

    It seems a bit far-fetched to me that a bunch of Windows users would for 1 month suddenly all decide to use ReactOS, FreeDOS, BSD, Solaris, Illumos, Haiku, Redox, and Plan 9.


  • Ramin Honary@lemmy.mltoLinux@lemmy.mlWhat are your opinions of Guix?
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    6 months ago

    As far as I understand it, Guix will download pre-built binaries for most packages from a cache by default, and the Guix OS distribution makes sure the x86_64 binaries for the latest package descriptions are always cached, so you should usually not have to locally build packages.

    But of course you can easily tweak the default configuration of packages you install and trigger a local re-build of those packages, since changing the configuration of any package causes a cache miss.


  • So usually people do install Linux software from trusted software repositories. Linux practically invented the idea of the app store a full ten years before the first iPhone came out and popularized the term “app.”

    The problem with the Mullvad VPN is that their app is not in the trusted software repositories of most Linux distributions. So you are required to go through a few extra steps to first trust the Mullvad software repositories, and then install their VPN app the usual way using apt install or from the software center.

    You could just download the “.deb” file and double click on it, but you will have to download and install all software security updates by hand. By going through the extra steps to add Mullvad to your trusted software repository list, you will get software security updates automatically whenever you install all other software updates on your computer.

    Most Linux distros don’t bother to make it easy for you to add other trusted software repositories because it can be a major security risk if you trust the wrong people. So I suppose it is for the best that the easiest way to install third-party software is to follow the steps you saw on the website.


  • Ramin Honary@lemmy.mltoLinux@lemmy.mlWhat are your opinions of Guix?
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    6 months ago

    So I think Guix (and Nix) is the most technologically advanced package manager in existence, and I hope someday all package managers work like Guix.

    One other very interesting feature about Guix (which I don’t think Nix is doing yet) (which Nix also does) is that they have implemented a fully verifiable bootstrap, meaning every step of building the kernel, including the steps taken to build the C compiler toolchain, are produced by code that is simple enough for a group of humans to check for correctness and safety. Also, every step of the build process exists in the package repository, with no reliance on externally built binaries for anything, not even the C compiler toolchain. They accomplish this with a multi-phase bootstrap process, where a smaller, simpler C compiler is used to build GCC.

    Do I use Guix? Well, no. Simply put, it is not quite to the point where it just works on a lot of the computer hardware that I own. With a bit more work, with a few more developers, and a bit more money invested, Guix could pretty soon become as reliable and useful as Debian or Fedora. But it is not quite there yet. And frankly, I have other more important things to do than worry about debugging problems with the operating system I am using.


  • Ramin Honary@lemmy.mltoLinux@lemmy.mlWhat are your opinions of Guix?
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    6 months ago

    Using Scheme instead of a purely functional language like Nix as the Nix/Guix expression language is a bold choice I am not sure I agree with.

    Scheme is the most functional of all non-purely-functional languages that I know of. What’s more, the parts of Guix in which packages are defined are quite pure, even using monads for some things, so it is really not too different from the Nix language.


  • This is probably not a solution you would want, but I will mention it anyway…

    Emacs has a built-in app called “TRAMP mode”, what it does is it works as back-end for all of Emacs’s own built-in text editing and file browsing commands, then it uses ordinary SSH and POSIX shell commands on a remote host as the primitive APIs for this back-end. You could say it uses SSH and a POSIX shell as a RPC mechanism.

    What this means is you can use the ordinary Emacs editor with the entirety of your usual Emacs configuration, but all filesystem changes (including editing files, directories, and running shell processes) occur on the remote host via SSH. In order to activate it, you just use Emacs’s special TRAMP URL scheme as the file path you want to edit, and it works seamlessly, (especially if you setup your SSH agent so you don’t need a password). An example of such a URL would be /ssh:user@remote-host:/etc/hosts.


  • Every day is something of an exaggeration, but if you don’t keep a rolling release up-to-date regularly (like once a week), packages start to break. And this gets to be a problem, especially if I don’t keep a computer always on, or if I keep postponing updates because my laptop is not connected to the Internet at the schedule time. There are a dozens reasons why I miss regular updates, but the point is, it should not bork my system if I do miss updates for a while.