Personal Website of Levi Neuwirth

I have very strong opinions concerning just about anything related to computation, including Operating Systems. Proceed at your own risk :)

Which Linux Distro / WM / DE do I use?

Trick question. I use two distributions as my main operating system. On my desktop, I run Gentoo with Sway. On my laptop, I run Arch Linux with i3. I've been meaning to switch from i3 to Sway on my laptop for months now, primarily due to the security benefits that Wayland provides over X11, but I regrettably haven't found the time. I also interact with Debian and Red Hat Linux fairly frequently, as they are used by systems that I ssh into at Brown's Sunlab and High-Performance Computing Cluster respectively. 

I don't have a strict preference between Gentoo and Arch, but I do believe that for me they are the two distributions which work best. I do find that Gentoo is maintained far better than Arch is, but this is not to say that Arch maintainers are doing a poor job!

Rolling Release? Bleeding Edge? Stability?

On the contrary, I do have a very strong preference for rolling release distributions (like Arch, Gentoo, et al.) and a strong disdain for frozen release distributions (like Debian, Ubuntu, et al.). There is very little to be gained in terms of "stability" from freezing software updates, yet this practice incurs outrageous security costs, not to speak for the inefficiency it creates within the development teams of those distributions. Rolling release and bleeding edge are often confused - you do not have to be on the bleeding edge to use a rolling release distribution. Recall that I still use X11 with Arch ;) 

Desktop Environments?

Once again, I have a general disdain for desktop environments, and a strong preference for window managers. However, I also understand that many folks would prefer a desktop environment in the style that they are used to from other operating systems, so I encourage work on adequate desktop environments, of which unfortunately there do not currently seem to be any. If you want a refined desktop environment, I would recommend using MacOS instead of Linux.
  • The GNOME project seems to be led by ill-advised folks who take massive dopamine hits from subjecting the userbase to feature creep and bloat. They must have separated from GNU because GNU actually knows something about how to write quality software, while GNOME very clearly does not.
  • I have not tried KDE personally, but it seems to be affected by similar bloat.
  • I tried using Cinnamon out of curiosity, and found that it crashed roughly every 19 seconds.

One of the principal benefits of Linux and the Unix philosophy in general is customization and extensibility. When you use a desktop environment, this crucial aspect of the Unix philosophy is lost - control over your system is abstracted away to the authors of the environment, and they are most likely enthused by feature creep. On the other hand, a good window manager like Sway does nothing but handle windows, and otherwise gets out of your way. In general I am an advocate of an idea presented in the linked Wikipedia article: "Write programs that do one thing and do it well." 

I have not even made my case about how much more efficient use of a system with a window manager is over a desktop environment, because the above points are enough.

Systemd and glibc

I use both systemd and glibc on my desktop and laptop, but only out of reluctant necessity.

  • systemd has serious flaws.
    • It violates the core principles of the Unix Philosophy.
    • Seriously, don't refer to systemd as an "init system." That is about the least of what it does.
    • The large amount of tasks handled by systemd's bloat and non-modular design leads to increased attack surface and generally slower boot times.
    • systemd doesn't care about POSIX.
    • Lennart Poettering is a power-hungry leader who blatantly goes against the wishes and philosophy of the community in favor of impractical technical ideals.
    • His choices lead to the situation described below.
  • glibc has serious flaws.
    • There is very little emphasis on security in glibc.
    • The vast amounts of bloat in glibc lead to increased attack surface in general.
    • The bloat is not justified by performance; glibc is far from the most performant standard library implementation.
    • glibc is "designed to be portable," yet it is highly Linux specific and essentially unsuitable for use with any other kernel. That seems to be the opposite of portable to me.

In principal, I would much rather use something like musl for my library and OpenRC for my init system, but these would incur too much of a usability hit. Unfortunately, we have reached a point where developers operate under the assumption that all Linux systems are going to use systemd and glibc, and so many programs that I use on a day-to-day basis would not work if I say switched my library for musl.

I take other hardening measures where reasonable and possible, such as compiling my Linux kernels from source and with most modules blacklisted.

Other Operating Systems

In the past I have daily-driven MacOS and Windows 8.1, Windows 10, and Windows 11. My conclusions about them are as follows:

  • MacOS is a fine operating system, but unfortunately subjected to telemetry and severe privacy violations.
    • If you don't mind those privacy concerns, and want a desktop environment that works, it is a good choice.
    • It's far better than Windows in terms of privacy, and also just about any other criterion.
    • At least some source is available (XNU)
    • It's a good place to learn about Unix commands and structure before switching to Linux.
  • Windows is perhaps the worst contribution to technology made by any organization in the history of technology.
    • Everything about Windows is about bloat, enshittification, advertising, telemetry, and inefficiency.
    • I remember back when the File Explorer actually did its job...
    • Seriously, Microsoft? You can't uninstall Edge, which itself is just a useless fork of Chromium?
    • You are a commodity to be bought and sold if you use Windows.
    • Microsoft implements the C/C++ standard libraries just to then create a copy of another programming language (clearly they only imitate instead of create), just to then run an entire web brower with every program instead of using the programming language they created?
    • "Security" is just a buzz term for Microsoft; they actually care about forcing you to buy new hardware when your old hardware would've done fine.
    • Windows BitLocker encryption was clearly not written by anyone who knows about how to do encryption.
    • Windows is ransomware: pay us, or your files that we discretely moved to OneDrive are gone
    • Any computer that runs Windows can be hijacked at any moment to forcibly install updates.
    • You can no longer use Windows without an account and internet connection.
    • NTFS is far from "new technology"; it should be called Obsolete Technology filesystem instead.
    • Windows 10 was a major tragedy when compared to Windows 8.1 and prior versions. It introduced widespread telemetry out of the box and advertising.
    • Windows 11 was even worse, pushing useless "AI" tech and horrifically insecure and indignant dystopian nightmares like Recall.
    • If you have a choice between using Windows and just not using a computer, I would choose not using a computer.
  • Weenix is the operating system kernel that I wrote in the first half of 2025.
    • It's better than Windows, which is essentially saying nothing.
    • It can't do networking, nor anything beyond simple text graphics.
    • It can run just about any simple C program in userspace, however.
    • It will be revised in the next 12 months to do much more.

Electron

Electron is the worst development ever to occur in the realm of software. I vehemently refuse to use any program that incorporates electron (which I say is unworthy of capitalization) wherever possible, and I urge you to join me. Not only has electron significantly contributed to pointless software bloat and remarkable inefficiency - it has also distilled laziness and terrible programming habits into the workflows of many organizations and developers. If you take pride in writing code, whether for fun or for a living, do not use electron!

Anyone who programs with electron is essentially saying "I am so lazy or incompetent as a programmer that I can't take time to read documentation about native graphics frameworks on any platform and use them, so I would rather bundle a huge codebase (Chromium) which I've probably never seen, don't know anything about the inner workings of, and don't care enough to investigate, instead of taking the time to write a program the real way. Rather than build a program which uses reasonable amounts of resources and does not constrain the system, I would prefer to use hundreds of megabytes or even gigabytes of memory, incredible amounts of CPU utilization, and massively bloated binary sizes just to save myself a little bit of effort." 

Programming Languages

  • My favorite programming languages are C and Rust.
    • Good C code is elegant yet easy to understand, and C has remained a very simple language in contrast to its hideous relative.
    • Rust makes writing memory safe code easy, and takes the best parts of object-oriented programming without forcing that paradigm on anyone. 
    • Performance and efficient resource usage are important to me, if you couldn't tell from my rant about electron.
  • I think that there are many other fine programming languages, but they are generally less ubiquitously useful that C and Rust.
    • Go is a phenomenal language that I try to use where I used to use Python, with really exceptional concurrency.
    • That's not to say that Python is a bad language - it is quite nice for AI-related tasks, scientific computing, within the shell, etc.
    • I prefer to use Python over R for statistical computing, but use both.
    • I quite like Lisp, but the parentheses syntax does drive me crazy.
    • I have worked in both C# and Java in the past, and think both are fairly nice to work with in certain use cases, but I would now go with Go or Rust in just about any of the cases where I used to use them.
    • I don't know much about Zig yet, but I'm learning it and it seems pretty sweet.
  • There are a few languages that I think are absolutely awful and try to avoid using where possible.
    • C++ is insanely bloated, makes it easy to write unsafe code, and is just an unpleasant experience in general. I will use Rust anywhere that C++ might be used when given the choice, but unfortunately I'm still required to use C++ in many instances.
    • I understand where the design choices of JavaScript come from, but I find working with the language absolutely irritable and avoid using it wherever possible. This is part of why this website has no JS.
    • I find TypeScript to be a slight improvement over JavaScript, but still absolutely irritable to use.
  • Assembly depends a lot on what ISA is being used.
    • I find RISC-V assembly a great pleasure to work with. It's easy to understand, very well documented, and the design choices are excellent and explained thoroughly and convincingly in the documentation.
    • On the other hand I quite dislike working with x86 assembly, though I have gotten proficient at it from developing a kernel. The ISA is in general bloated and that makes it very nice for compilers but painful for humans.
    • I haven't interacted with ARM assembly before.
  • I am not a blind advocate of any programming paradigm.
    • I quite like functional programming, and enjoy writing functional code in general, but I also acknowledge that it is not well-suited for all tasks.
    • Similarly, I somewhat dislike writing pure object-oriented code (thinking Java style here), which feels bloated, but I also acknowledge that it is very well-suited for some tasks.
    • I appreciate languages like Go, Python, and Rust allowing for usage of multiple paradigms.