Comment by louismerlin
3 years ago
These kinds of realizations have made me look into permacomputing [1], suckless [2] and related fields of research and development in the past few months.
We should be getting so much more from our hardware! Let's not settle for software that makes us feel bad.
> suckless
Mind you, the software we had 20 years ago was fully featured, smaller and faster than what we have today (orders of magnitude faster when adjusted for the increase in hardware speed).
Suckless, on the other hand, is impractical esthetic minimalism that removes "bloat" by removing the program. I'd rather run real software than an art project.
If you want more from your hardware, the answer is neither the usual bloatware, nor Suckless crippleware.
I have thought for a while that suckless might literally be a piece of performance art.
Solid point, but some of the suckless stuff is pretty good, I use `dmenu` with i3 and often run the `st` terminal.
st is actually one of the worst terminals available. For all their purported minimalism, it has abysmally bad performance. See https://danluu.com/term-latency/
1 reply →
It's funny, the older I get the less I care about this stuff. I like to use technology to, well, live my life in a more effective, effort-free manner. I have lots of friends who aren't other nerdy techies. In high school I refused to use "proprietary, inefficient WYSIWYG garbage that disrespected the user" like Word and typed up all of my essays in LaTeX instead. Now I get accounting spreadsheets for vacations going on my smartphone using Google Sheets. I still love writing code but my code has become more oriented around features and experiences for myself rather than code for the sake of code.
I love exploring low-latency code but rather than trying to create small, sharp tools the suckless way, I like to create low latency experiences end-to-end. Thinking about rendering latency, GUI concurrency, interrupt handling, etc. Suckless tools prioritize the functionality and the simplicity of code over the actual experience of using the tool. One of my favorite things to do is create offline-first views (which store things in browser Local Storage) of sites like HN that paper over issues with network latency or constrained bandwidth leading to retries.
I find suckless and permacomputing to be the siren song of a type of programmer, the type of programmer who shows up to give a presentation and then has to spend 10 minutes getting their lean Linux distro to render a window onto an external screen at the correct DPI, or even to connect to the wifi using some wpa_supplicant incantations.
It's the cycle and not just in software. Younglings are idealists and try a thousand things, some of which happen to change and improve the ever-turning wheel of software, while elders turn the wheel and ensure the system, practices and knowledge continue and get transferred.
Fully agree. When I was younger I used to care more about privacy, and would use nothing but FOSS apps and OSes no matter how much it inconvenienced me.
There's a significant opportunity cost for zealotry.
OpenBSD it's just "sh /etc/netstart if", where if is the network interface once you set /etc/hostname.if
No WPA incantations, the OS handles multiple connections seamlessly.
With that, magicpoint/sent and xrandr you just don't care, it works.
OpenBSD is actually a good example of a system that envisions a holistic experience. Sure its experience is that of one for a techie nerd, but it's still very experience oriented. This is a pretty big contrast from suckless which creates small tools that only kinda work together and claim the code as documentation. OpenBSD docs are wonderful.
(Though in my experience modern Linux kernels have much better networking throughput than BSD kernels. It confounds the overall performance argument of this thread chain, but the overall OpenBSD experience leads to on average a more speedy experience.)
“A person's primary task should not be computing, but being human.” - calmtech.com
I really like the idea of permacomputing.
WTF happened to all the THOUSANDS AND THOUSANDS of machines I deployed to datacenters over the decades? Where are the F5 load balancers I spent $40,000 on per box in 1999?
I know that when we did Lucas' presidio migration, tens of million$ of SGI boxes went to the ripper. That sucks.
edit:
All these machines could be used to house a 'slow internet' or 'limited interenet'
Imagine when we graduate our wealth gap to include the information gap - where the poor only have access to an internet indexed to September 2021 - oh wait...
But really - that is WHAT AI will bring: an information gap: only the wealthy companies will have real-time access to information on the internet - and all the poor will have outdated information that will have already have been mined for its value.
think of how HFT network cards with insane packet buffers, and private fiber lines gave hedgies the microsecond advantages on trading stocks...
Thats basically what AI will power - the hyper-accelerated exploitation of information on the web via AI - but the common man, will be releagated to obsolete AI, while the @sama people of the world build off-planet bunkers.
Occasionally I end up with a truckload of gear from things like that. The circumstances that saved it from shredding are usually something like Founding Engineer X couldn't stand to see all that nice workstation stuff go in the trash so he kept it in his garage for 25 years and now his kids are selling it.
I use Suckless terminal myself, but if I'm not mistaken it's actually not the fastest terminal out there, despite its simplicity[^1]. My understanding is that many LOCs and complex logic routines are dedicated to hardware/platform-specific optimizations and compatibility, but admittedly this type of engineering is well beyond my familiarity.
Also, OpenBSD's philosophy is very similar to Suckless. One of the more notable projects that come to mind is the `doas` replacement for `sudo`.
[^1]: This is based on Dan Luu's testing (https://danluu.com/term-latency/). I don't know when this testing was done but I assume a few years ago because I remember finding it before.
I'm somewhat offended on behalf of OpenBSD! doas is a good program written for good reasons (cf. https://flak.tedunangst.com/post/doas). Suckless sudo would ensure it was as painful as possible to use, so suckless fans feel like cool sysadmin hackers setting it up. (Just compile in the permitted uids lol!)
I totally agree with doas being a good program with really good rationale. I also get that suckless does have a bit of a reputation that isnt for everyone (I've heard that it's basically impossible to make a PR to any of their projects). Theyre obviously not philosophically aligned, that was terrible wording, but I mentioned OpenBSD because its an excellent project that deserves more mention and a lot of the criticisms for modern software design in this post and thread are addressed by their design philosophy. That said, the compiling issue aside I think the overall embrace of simple, self-contained, C code is where you could compare the two.
I love that Alpine Linux adpoted `doas`
Yeah, totally possible to get excellent results with older hardware, and really stellar results with very new hardware, if you're running stuff that's not essentially made to be slow.
I basically only upgrade workstations due to web browsers needs, and occasionally because a really big KiCAD project brings a system to a crawl. At this point even automated test suite runtimes are more improved by fixing things that stop test parallelization from working efficiently vs. bigger hardware.
I am constantly dumbfounded with the fact that the majority consumer of memory on my machine is a FN web browser! (that said, I *do* have basically like 30 tabs open at any given time...
(It would be cool if dormant tabs can just hold the URL, and kill all memory requirements when dormant after N period of time..)
But heck, even when I am running a high-end game on my machine, the memory consumption is less than when I have a bunch of tabs open displaying mostly text ...
I have a hundred tabs open in my Firefox. They are structured by Tree Style Tab, and most of them are offloaded by Auto Tab Discard.
This gives me a way to instantly switch between contexts (with a small delay if a tab has to be reinstated from cache). This is how bookmarks should really work.
This us why Firefox is not the biggest memory hog on my system. Most of the RAM is consumed by language servers and Emacs.
2 replies →
Small tangent: I wonder what people are seeing when they say they have "too many" tabs open.
I had over 1000 tabs open in Firefox (macOS) and never noticed any problems. (Trying to clear them out. Down to 920 now.) 2.26 GB out of 32.00 GB is used by Firefox. I have about 70 open in Chrome (since only a certain number fit on the screen) and it's split across 12 processes which are between 12 MB and 158 MB each. I have nearly 500 tabs open (because that's the limit) on my iPhone and iPad each, in Safari.
15 replies →
(It would be cool if dormant tabs can just hold the URL, and kill all memory requirements when dormant after N period of time..)
The problem with this is that a lot of web pages don't handle this gracefully. You don't end up back where you left off!
It would be nice if all the details of the inactive web page were saved to storage, and then retrieved from storage when the tab is reactivated, without having to make any network calls at all.
1 reply →
I turned off JavaScript one day and found my browser memory woes completely evaporated. Now I turn it on per site on a case by case basis and it's easy to figure out which sites leak a lot and prepare accordingly.
Browsers have gotten worse. In..2013, I believe, I regularly had 200+ firefox tabs open on a laptop. It was a high-end laptop, with IIRC 16 gigs of ram, but it was still a laptop. The number may have been much higher than that - I've hit over a thousand tabs before, but I can't recall if that was then or more recently.
Multi-process firefox seems to have absolutely obliterated the performance of firefox with large numbers of tabs until recently (it seems to be have improved).
i think edge and chrome have started doing this recently
My impression of Suckless is that it’s “Unix philosophy” software where you edit the code and recompile instead of using dynamic configuration like all those config files. And while there are way too many ad hoc app-specific config systems out there, I don’t see how Suckless makes a huge difference for simplifying things.