Software engineer, functional programming enthusiast.

  • 4 Posts
  • 142 Comments
Joined 4 years ago
cake
Cake day: April 27th, 2021

help-circle


  • I would go with Guile, because it is built-in to the Guix Package Manager which is a really good general-purpose package manager.

    It ticks several of your boxes:

    • has a CLI interpreter
    • is a general purpose language, Scheme, amd compliant with revisions 5, 6, and 7 of the language standard
    • allows writing in a functional style (it is one of the original functional programming languages)
    • small disk footprint, but still large enough to be “batteries included”
    • decent documentation, especially if you use Emacs
    • simple setup: not so much, unless you are using Guix to begin with. The standard distribution ships with lots of pre-built bytecode files, you need an installer script to install everything.

    It also has pretty good libraries for system maintenance and reporting:


  • I’m a communist but I suddenly realised that American conservatives should all be hardcore Linux enthusiasts. Why is this not already the stereotype?

    Libertarians and conservatives in the US demand liberty only for the already wealthy and powerful upper class, the liberty to enslave and exploit whomever and whatever they choose. They believe the ultra-wealthy have somehow earned the right to do so. On the contrary, the socialists, especially the anarchists, are opposed to unjust hierarchies, and the hierarchy created by wealthy and politically powerful classes are the most unjust of all – quite the opposite of the libertarians and conservatives.

    Libertarian (Liberal) propaganda appropriates the more popular socialist ideologies while conflating liberty for only the wealthy/powerful versus liberty for all people. One can see appropriation done in the same way in the very name of the National Socialist (Nazi) party of Germany. These tactics that were used by the Nazis are still used by various American conservative and libertarian parties, who mostly align under the umbrella of the Republican Party. Just look at what the Trump cult weirdos are all saying nowadays. It is pure KKK and Nazi ideology resurrected, under a thin veil of euphemisms.

    So if you take at face-value what libertarian and conservative politicians in the US say publicly about freedom, small government, civil liberties, etc., then they ought to be very enthusiastically in favor of Linux, but it is all just propaganda. They don’t care about freedom, only freedom for the elite clique of their supposed “supermen,” the wealthy elites, the freedom to exploit groups of people who they hate most — take your pick: foreigners, black people, women, gay and trans, Jews, Muslims, the “woke,” the “leftist,” etc. The libertarians and conservatives hate things that benefit society at large, because what benefits society also benefits these people they hate.

    Linux is pretty authentically a community project for the good of society, and it is truly subversive to the authority of the corporations and elites. So the various libertarians and conservatives of the US recognize Linux as a threat. Only that small group of privileged, middle-class libertarians stupid enough to be duped by the wealthy elite propaganda believe that free software is aligned with their ideology.


  • both can be installed side by side if you have enough disk space.

    Yeah, this is exactly what I do using QEMU and Aarch64 Debian. I suppose I could try the Asahi Linux in QEMU but that actually might be more difficult since I don’t think QEMU can emulate the MacBook hardware, as far as I know. And I can’t do dual boot, I want to be able to switch back and forth between Mac OS and Linux without rebooting anything.



  • I switched to Linux permanently in 2008. Last OS I used before Linux was Mac OS X version 10.4 “Tiger” (if I recall correctly) which is what came with the Macintosh PowerBook that I had bought roughly in the year 2004. I have never used Microsoft software unless someone was paying me to, but at the time, Windows XP was still all the rage even though Microsoft was trying to get everyone to switch to Windows Vista. (Vista got a lot of well-deserved hate too, sort of similar what we see with Windows 11 right now, actually.)

    Anyway, I was a die-hard Apple fanboy, but getting more and more into free software and I kept on using Macports/Homebrew to build Linux stuff I found online, but back in those days a lot of apps I wanted to try did not have good support for the Darwin kernel build of GCC which was pretty old compared to what Linux was using at the time. Occasionally a build would fail, and I would try to port the software on my own, with the idea of maybe submitting a package to Macports. But after a while I realized, “if I want to use Linux software, why not just use Linux?”

    So I bought a Netbook (Dell Inspiron Mini 10) with Ubuntu pre-installed. I really loved that little computer, I used it for a good 5 years until I needed a more powerful computer. I still have it, actually. I never went back to Apple until this year when I took a new job where they wanted me to use a MacBook Pro. (Again, not using proprietary software unless I am well paid.)

    I can say with confidence that Linux is considerably better than Apple’s operating systems. I use Aarch64 Debian 12.5 in a QEMU on that MacBook for most things, only switching over to Mac OS when I really need to.


  • Ramin Honary@lemmy.mltoLinux@lemmy.mlOpenSUSE is the best
    link
    fedilink
    English
    arrow-up
    4
    ·
    4 months ago

    Never tried it, but everyone I know who has tried it says its the most stable rolling release OS ever. That is pretty cool. Btrfs support is cool too, copy-on-write, deduplication, and whole-disk snapshot and rollback capability, its great for keeping your data safe.

    I don't care about rolling releases, I get my stability from Debian, or sometimes Mint. If I want the latest software I’ll install Guix packages or FlatPaks. And I can still use Btrfs on Debian.


  • Ramin Honary@lemmy.mltoLinux@lemmy.mlNot really sure I get Wayland
    link
    fedilink
    English
    arrow-up
    97
    arrow-down
    1
    ·
    edit-2
    4 months ago

    I can explain the difference between X11 and Xorg with an analogy to the web and web browsers: X11 is like HTTP, Xorg is like the Chrome browser. X11 is the protocol, Xorg is software that implements that protocol.

    X11 is old, it was designed back in the 1980s and includes messages for drawing lines and circles and fonts on the screen. Also, back then there were a lot of “thin clients”, computers that were basically nothing but a browser, since graphics were computationally expensive and could not be done on the client computer, graphics rendering was done server side. There are lots of messages in the protocol for handling screen updates over a computer network.

    Nowadays, all personal computers are powerful enough to render their own graphics, and no one needs the display server to draw individual lines or circles on screen. Vector graphics and fonts are done at the application level, not over the network. So these these messages specified in the X11 protocol are hardly ever used. Really, most of X11 (let’s say 90% of it) is not used at all, only the parts where the keyboard and mouse are defined, and how you can allocate memory to buffer a graphic and copy that buffer to the display. But you still need to maintain the Xorg software to handle everything that X11 specifies, and this is just a waste of code, and a waste of time for the code maintainers.

    So basically, they decided about 10-15 years ago that since no one uses most of X11, let’s just define a new protocol (called Wayland) that only has the parts of X11 that everyone still uses, and get rid of the 90% of it that no one ever uses. Also, the protocol design takes into account the fact that most modern computers do all of their own rendering rather than calling out to a server to render for them. Also the Wayland protocol design takes into account that a lot of computers have graphics cards for accelerated graphics rendering.

    Since the Wayland protocol is much simpler, it is easier for anyone to write their own software which implements the protocol, these software are called “compositors.” Finally, 10 years after some of the first implementations of Wayland, the protocol and compositors are becoming mature enough that they can be used in ordinary consumer PCs.



  • 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.


  • If you get the government to simply declare everyone else “terrorists” then there is no need for rule of law anymore, you can do whatever you want! Because they are by definition worse than anything we do to them. How convenient for those states with plans for committing genocide, it doesn’t count as genocide if you are mass-murdering terrorists.

    This strategy of the government calling every troublesome minority ethnic group anywhere “terrorists” got kicked into high gear when the US government started using 9/11 as an excuse to commit war crimes and remove restrictions from police forces (like the right of habeas corpus), and it has been a constant slippery slope since then. Nowadays the Biden administration officially considers the “Anti Fascist” movement in the US “terrorism,” although no one in government refers to fascist mass shooters as “terrorists.” Gee, I wonder why they would do that?




  • 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
    21
    arrow-down
    2
    ·
    edit-2
    5 months 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”)

  • Ramin Honary@lemmy.mltoLinux@lemmy.mlTips/tricks for beginners
    link
    fedilink
    English
    arrow-up
    24
    arrow-down
    1
    ·
    edit-2
    6 months ago

    I wrote a few articles on my blog for people in your situation, who are mostly only familiar with Windows and/or Mac and want to learn Linux more in depth.

    “Advice for people who want to learn linux” – This article is kind of an overview of the Linux learning process. The point of this article is to teach you what it is you need to learn about so that you set your own curriculum. Once you understand what a few of the basic things are, you can look up your own tutorials on how to learn each thing.

    “How to pick a Linux distro” – This article is for people who are overwhelmed by the number of choices for Linux distro. The bottom line is: don’t over-think it, just pick a mainstream distro like Mint, Ubuntu, or Fedora. There is like a 99.99% chance that each of these will just work as soon as you install it, no weird issues with audio, graphics, WiFi, BlueTooth, security updates, or anything else. Also, a lot of the “choices” you see among all those distros are only skin deep – differences in the default theming (i.e. the default “desktop environment”, a concept explained in the “advice” article above). But really they are all using the same basic software packages so there very little substantive difference between any of them except in their app stores, and the mechanism they each use install software.

    If you have any questions, feel free to ask me here. I can clarify here, and also update my blog posts if you think anything is confusing.


  • As many here have said, but I will emphasize: learn the Bash programming language. Linux Survival is a very good start, and you can just start experimenting right away in your own terminal on your own computer.

    To go more in depth, you can read through the manual on your computer by typing “info bash”. The Info documentation browser is a command line app. You may need to install it using your package manager (“apt-get” or “pacman” or “dnf”).

    In the “info” app, you can navigate with the arrow keys, pressing enter on hyperlinks, typing l (lowercase “L”) works like the “back” button in a web browser, typing r (lowercase “R”) works like the “forward” button. Info also lets you search the index by pressing i (lowercase “I”) then entering your search in the prompt, or search the full text by pressing s and entering your search in the prompt. And q quits back to the command line prompt. “Ctrl-Z” pauses the “Info” app and drops you back into the command line, and you can resume your “info” session using the “%” (percent sign) command.

    Another thing that can help is to learn about the GNU “Coreutils”, this is a suite of commands usually installed into /usr/bin or /bin which provides helpful command line utilities. These are commands like cat, wc, sort, cut, ls, du, cp, ln, chmod and many others. Read through the Coreutils Info manual by typing “info coreutils”.

    And I will also reiterate recommendations from others: learn how to use Vim and/or Emacs. Vim has the more difficult learning curve but is extremely useful for writing scripts. Emacs is better though because it lets you split-screen with manual pages, and copy-paste commands between Man pages, “Infodoc” documents, the shell, and/or a text file, all using only keyboard commands. I think it makes it much easier to learn since everything is integrated together. Ask the Emacs community how to get started if you are interested.


  • It’s a i3-6006U with just 4.0GiB of RAM.

    Emacs is considerably more lightweight than a modern Web browser, or any app based on Electron.js (e.g. VSCode) so a computer with those specs is more than powerful enough to run Emacs. If you use version 29.1 or later, Emacs comes with “libgccgit” which will spend a little time pre-compiling Emacs code to very fast native code.

    Emacs used to have a reputation for being slow back in the early 1990s when 32 bit personal computers were just beginning to gain popularity. But nowadays when everyone downloads FlatPak and AppImage and Snap apps which install many hundreds of megabytes of code, Emacs is relatively small and light.

    Also, Guile Emacs and Guilemacs are two different projects, right? Because I also happen to come across this, and I’ve been interested in this project as well.

    The whole history of Guile and Emacs is here on the Emacs Wiki.

    So there are a few projects related to Guile and Emacs. The link you provided me by Ken Raeburn is a fork of older versions of both Guile and Emacs, it seems it has not been worked on in about 20 years, unfortunately.

    The project by Robin Templeton is also a little bit out of date, but still somewhat actively developed. You must build it from source from a patched version of (I think?) Emacs 26 or 27, I am not sure which it was. It works by loading libguile (the Guile interpreter/compiler) into Emacs so you can run Scheme code, and it also provides Scheme “foreign function” wrappers to the Emacs C APIs so you can do everything Emacs Lisp does in Scheme by importing the elisp-functions Scheme module. (There is an example of how to use it on the Emacs Wiki.)

    I did hear Robin say in a recent Spritely chat that it could be made to work on Emacs 29 with not too much effort, they just haven’t had time to do it.

    If you are interested in Scheme, you might also want to check out the Edwin text editor which is built-in to the MIT/GNU Scheme compiler, you launch it from the Scheme REPL with the (edit) function. It is a clone of Emacs 19 (a very old Emacs) written entirely in Scheme, but unfortunately it is a little too old to be useful nowadays, in my opinion. Still, you could learn something by reading the Edwin source code.

    Finally there is TeXmacs, which is a full WYSIWYG application with a built-in LaTeX rendering engine designed for writing scientific papers, and it includes the Guile Scheme compiler for writing extensions, although I would not call TeXmacs a general purpose programming text editor the way Emacs is.