Using bad hardware: why I work in the terminal (2024)
colean.cc
colean.cc
The difference is that I tend to to work on pretty high-powered machines (not for graphics or gaming, but for audio).
But the main reason I have this set up is that I find the minimalism . . . calming? It's not entirely distraction free, but I just find it easier to work in a kind of low-stimulation environment. I do occasionally work on way less powerful rigs (and way more powerful servers), and it's nice that the basic tools don't change. But ultimately, I think my fondness for this way of working might be aesthetic.
If UIs are constantly shifting or if there are popups telling you about a "cool" new feature, then that software feels less interested in serving the user and more serving its developers. I don't want the manic Silicon Valley hype-of-the-month when I have other more important things to do than fight with technology that's supposed to be helping me (and me exclusively).
When your tools change every damn week because some faceless soulless middle manager wants a promotion, you can't master the damn tools.
I don't know how anyone is supposed to become a master at programming when the industry standard tooling requires waiting around for tooltips to show up because meaningless icons are "clean"
But it's not even that tools change every week. When you look at things like VSCode it's hard to make your own. Is hard to shape into an environment for you and instead you should shape to it. I see this in a lot of tools and it's destructive. Everyone is different and there's nothing that can be made for everyone. So a good tool needs to be modifiable, so that people can turn it into the thing that works for them.
I'm still working on how to do this right. But I think it is important that all parties recognize the pushback isn't about "us" but since we're on a team trying to make the best business possible. Part of why I struggle with this is 1) I just generally don't care about authority (maybe a bit too autistic lol) and 2) we're all wrong, so being wrong shouldn't really be seen as that bad of a thing. We're talking about pretty complex problems and we're only human with two eyes that must be in the same place at the same time, so it is pretty obvious that we're going to miss some stuff. It's about being less wrong, and if someone is giving you new information from a perspective you don't usually have access to, you sure want to check that it fits your current working model. If not, you're more wrong by not updating.
There's an information asymmetry here that makes things difficult, but a good manager will always listen to their employees BECAUSE they want to better the business. A good culture will allow "arguing" as everyone should be on the same team. As long as the "arguments" can end on good enough terms like everyone is willing to have a beer together at the end of the day. We get heated with our best friends and partners, right? Confrontation isn't destructive, it /can/ be very constructive. But the culture has to be right. Both management and employees need to be happy to share credit when success is made. This is definitely something even low level employees can do to help cultivate these good cultures. Management can do it by not just encouraging this but also watching to make sure it happens and do their best to make sure that success is properly allocated. Otherwise there's a natural incentive for "bad actors" to oversell their possible contributions. That's how you get "Loud Laborers." I think people think just because you're "a small cog in a giant machine" that this means you can have no impact. But the truth is that every cog is critical to the machine. It's just that the small cogs need to align and the problem is that a bad cog can upset the balance of everything. Success is unstable equilibrium.
If only the same people developed their programs with the same philosophy (minimal, simple, clean UI and keyboard driven) but in a normal GUI, so that you don't have to abuse Unicode to draw UI and just draw it.
This reads a bit like "these poor sods can't afford to pay for my app, so why bother", at least to me.
However even if a certain device owner subgroup doesn't represent a potential revenue stream, you can as a developer still profit from also (or even primarily) targeting their devices.
Apps that will run on lower-powered devices will almost necessarily be leaner, and as a side benefit will have less complexity, less dependencies, and, ultimately, less technical debt for you as the developer to manage.
I think you mean you. I don't and never have done that, and I suspect millions of windows developers have not either.
In fact, how dare you forget the Linux users when writing your comment?!
Just… why.
Or even just devices in high-latency environments. This gets missed in development so often. My experience is that 75% of apps cannot handle it and fail to work in all kinds of ~~interesting~~ frustrating ways.
Too bad they don't seem to publish anymore.
I think this is a common fallacy. Fundamentally adding an tty layer in the middle does not make lighter solution, so in almost all cases terminal application+terminal emulator is inherently heavier than equivalent application talking directly to display server.
But using tty/ncurses does not avoid the costs of GUI, your terminal emulator will still need to have that. So using terminal can only add additional cost, not reduce it.
Remember, Unix systems implemented tty support in perhaps tens of kilobytes of memory, on CPUs running at single-digit megahertz speeds. Graphical IDEs these days are often frickin' Electron apps.
Talking directly to display server simply can not incur more cost than having terminal application and then terminal emulator talking to display server; the talking to display server is something you need anyways, and anything else (like having a tty layer) is just additional cost on top of that.
The application doesn't notice any of this though. So they're easier to develop and the program itself runs faster (is lighter). Which is the specific point the article was making.
With full control over pixels, you can use any combination of "text" and "graphics" that you want. For example, you could make Vim or EDIT.COM but with a normal mouse cursor and a scrollbar with pixel granularity.
Are you sure about that? The memory range still exists and still operates the same as it ever has. The _card_ just does the translation for you.
> so you're still converting to pixels at some layer.
This has /never/ not been true.
> With full control over pixels
Yea, again, you are intentionally not understanding the point the article or myself made. The application in text mode does NOT need to do this work. The application IS lighter as a result.
> but with a normal mouse cursor and a scrollbar with pixel granularity.
And how do you receive mouse inputs? With more code. How do you manage pixels? With more code. Are you understanding that this is PRECISELY the point here?
Memory fails me on whether it was running Linux or another Unix.
The only winning move is not to play.
I actually used Firefox at the time of this post but I now use Librewolf. Modern day web browsing actually isn't as demanding as you think it is: I've been able to happily have Firefox open with Discord in it and FreeTube (an electron app for watching YouTube) on a Pentium T4300 with 4GB of RAM.
It was slow but it worked perfectly fine, you just have to have patience to use older hardware. Hope this clears that up :)
(As an aside, my main PC now uses KDE instead of i3wm!)
The main problem I experience with it are: 1) Go compile times on some projects, and 2) JS frontend builds.
The Go compiler is fairly fast, but there are some patterns that can make the compiler much slower, and the difference can be pretty dramatic.
I don't do that much frontend stuff and many projects are fine, but some projects are just a horse to build. At my last job it took at least ~5G of RAM and ~3 minutes on my i5-8350U (never tried on the N4500). This is a main reason I bought a new machine; otherwise I'd still be using the i5 (a second-hand x280 I got for ~€200 because the screen on the N4500 broke, although that has magically fixed itself in the meanwhile and now I have 3 laptops).
The only usable browsers were very-light WebKit ones, and even then, more than three tabs was no good, and heavier “webapps” weren’t an option, unusably slow. Firefox and Chrome were unusable, period, and “lightweight” options based on their engines are not very lightweight at all. It had to be WebKit.
Wild that with the early ‘00s Web I could browse far more capably on machines 1/10 that powerful.
[edit] I mean, it was a chromebox by brand but I was running Void Linux on it.
It was surprisingly snappy and usable.
I dread the day we are forced to move to wayland, in that environment one is forced to use a Desktop Environment or a Tiling WM.
Luckily, the site works well in lynx. The colors under Firefox was atrocious for me.