263 lines
16 KiB
Org Mode
263 lines
16 KiB
Org Mode
|
#+TITLE: For Want Of A More Limited Computer
|
||
|
#+DATE: <2023-01-26 Thu>
|
||
|
#+DESCRIPTION: A lament against certain design trends in computing that has caused the apparent loss in a few of the things I found fascinating about computers in the first place. Or, in other words, a verbose "Damn it, I missed the cool stuff!"
|
||
|
Modern computing is truly a marvel. I have a device sitting in front of me that
|
||
|
at my beck and call can send a request halfway around the world for 2 million
|
||
|
bytes to come screaming down a complex system of connected computers, which is
|
||
|
then decoded and displayed on a monitor refreshing one hundred and forty-four
|
||
|
times a second, all taking less than the time it takes me to blink. All of these
|
||
|
computers working in unison, to deliver to some random guy a distorted image of
|
||
|
the actor Bob Odenkirk with the caption: "Your Honor, do you expect the jury to
|
||
|
believe that a shrimp fried that rice?"
|
||
|
|
||
|
/What the actual hell?/ Sixty years ago, the idea of a /personal/ computer that
|
||
|
could fit in a house was pure science fiction! Then when /microcomputers/ came
|
||
|
along, it was still preposterous to imagine the average consumer could afford to
|
||
|
have a computer, much less access to a worldwide network with "free" (more on
|
||
|
that, later) services and information which can be summoned at a moment's
|
||
|
notice. And then you look at today's reality, and this amazing technology is
|
||
|
/real/ and /available/! So what have we all done with it?
|
||
|
|
||
|
* Part One: One Man /Can't/ Know It All.
|
||
|
I suppose I better start with what I've done.
|
||
|
|
||
|
I've been fascinated with computers ever since my family's first computer, which
|
||
|
sadly I do not recall the model of. It was a generic enough Windows XP machine,
|
||
|
that's all I can remember. But it was more than enough to get me hooked. Here was
|
||
|
a machine that could do many, /many/, things, and my child mind was determined to
|
||
|
know /everything/ about it. Many a night was spent poring over menu options,
|
||
|
trying to find every little thing I could learn about. Broke the thing, a couple
|
||
|
of times.
|
||
|
|
||
|
I pored over that machine, hoping that I'd be able to understand every little
|
||
|
thing about it. Granted, I wasn't suddenly going to grasp the intricacies of
|
||
|
networking, or operating system design, or hardware architecture, especially not
|
||
|
by just clicking buttons in a Windows XP install. But it did leave me with my
|
||
|
main hyperfixation: All things computers.
|
||
|
|
||
|
I began to program when I was in third class, when my teacher at the time
|
||
|
recommended CoderDojo to my parents. I played around with some Scratch, which
|
||
|
was fun, plugging together little games, I did a bit of HTML and CSS, which
|
||
|
wasn't really for me. I wanted to know *more*, though.
|
||
|
|
||
|
I started to read a bit about programs I used and games I played. And one day, I
|
||
|
found something really interesting: The /source code/ of Quake III Arena. It was
|
||
|
my first time looking through a codebase of that scale. I glanced through it,
|
||
|
until I came across quite a famous function. Fast Inverse Square Root. I was
|
||
|
utterly mystified. This was the kind of thing I was enamoured with. A solution
|
||
|
to a problem that was a mystery itself. "0x5f3759df"? "Evil Floating Point bit
|
||
|
level hacking"? It was from there I knew I wanted to work with computers, in any
|
||
|
capacity possible. (It also started my love of arena shooters, because who looks
|
||
|
at the source code of a game without playing it?) It was also there that I began
|
||
|
to learn about Free Software, as the GPL was what allowed me to have my little
|
||
|
revelation. I saw how people could collaborate, improve on each other's work,
|
||
|
and create something together. I steeled myself, sat down, looked up some
|
||
|
programming tutorials, and dove in.
|
||
|
|
||
|
At this point I made a pretty big mistake: I started bouncing around languages,
|
||
|
depending on whatever mood took me. I never got any further than implementing
|
||
|
something trivial for a few years. I still regret that. I should have realized
|
||
|
that I wasn't really learning anything new, or developing any useful skills. I
|
||
|
finally dug in, and picked C to learn "properly", with the goal that it would
|
||
|
help me understand "what's /really/ going on."
|
||
|
|
||
|
It did that, somewhat. I tried to learn some x86-64 assembly, to get an even
|
||
|
deeper look, and was scratching my head at the sheer size of the instruction
|
||
|
set. But then I finally made my realization: modern personal computers are far
|
||
|
too advanced for one person to understand, fully. You can understand the general
|
||
|
concepts, even know a few "secret sauce" tricks, but at the end of the day, you
|
||
|
can't truly understand everything. Not for lack of trying: even if you were a
|
||
|
genii, you'd have to work at numerous companies to gain access to the documents
|
||
|
and designs you'd need to do so. Bit too much of a time-sink, even for the most
|
||
|
dedicated individuals, for what is ultimately a child-like goal. I could try to
|
||
|
develop my own operating systems, but the GPU that's sitting in my PCI-e slot is
|
||
|
far beyond my capabilities to work with. I wouldn't ever understand every
|
||
|
instruction that my CPU could run, nor am I meant to. No matter what I wrote, I
|
||
|
could never be sure that I was in full control.
|
||
|
|
||
|
Granted, I could do a project like jdh's computer and graphics card from
|
||
|
scratch, but that's an altogether different goal. (That can be found on
|
||
|
YouTube) Designing a computer isn't the same as learning everything about a
|
||
|
computer you have, though it is perhaps just as or even more impressive. It was
|
||
|
somewhat possible in the days of 8-bit home computers to understand everything
|
||
|
about your computer, not easy, but possible. At the end of the day, I have to
|
||
|
concede to trying to understand quite a bit about my computer, which just
|
||
|
doesn't have the same /ring/ to it.
|
||
|
|
||
|
Sometimes I wish I did grow up in the time of the 8-bit home computers, and to
|
||
|
be able to have my child-like wonder satiated by manuals, schematics, and
|
||
|
software, to explore and squeeze every last bit of performance out of one of
|
||
|
those little machines. To this day I'm still fascinated the demoscenes of
|
||
|
devices like the Commodore 64, or the ZX Spectrum, and have often considered
|
||
|
trying my hand at them, but ultimately, I've just never gotten around to it.
|
||
|
|
||
|
I hope that in the future, both libre hardware and software will be able to
|
||
|
create a new useful computer that I /can/ fully understand, but I'll have to wait
|
||
|
and see on that one. It's simply a fact in our complex, modern computers, that
|
||
|
there's too much for one man to know.
|
||
|
|
||
|
Then again, maybe it's me that's not smart enough.
|
||
|
|
||
|
* Part Two: The Internet /Was/ A Big Place.
|
||
|
For almost as long as I've used computers, I've had some form of Internet
|
||
|
access. From a USB mobile broadband modem, to a mobile broadband hotspot, to a
|
||
|
terrible copper-wire router with an attitude problem and a tiny data cap, to
|
||
|
a finally tolerable router with unlimited data. My earliest memories were of
|
||
|
playing random flash games, and very little else. Had I found the right
|
||
|
resources when I was younger, I may have been much farther along in my
|
||
|
programming journey by now, but that would have been difficult enough.
|
||
|
I wasn't too much of an explorer in the early days of the internet, holding
|
||
|
myself back due to tall tales of the dangers of the web, keeping under the
|
||
|
limited data caps, and most of all, avoiding the anger of my parents, afraid
|
||
|
that I'd provoke anger by discovering... something. I wasn't sure what at that
|
||
|
age, but I played it safe. My parents were right, of course. There was a lot of
|
||
|
stuff I wouldn't have understood at that age and likely would have been harmful.
|
||
|
|
||
|
Had I been older at the time, I would have been able to experience the death
|
||
|
of the Web 1.0, and the transition of content to social media. I personally
|
||
|
think that this is what made so much of what toxic, harmful design we see
|
||
|
today possible. But more than that, this made the internet feel a /whole/ lot
|
||
|
smaller. No longer are you able to stumble across niche communities by chance,
|
||
|
not with search engines pointed squarely at the landfill of garbage and
|
||
|
mind-numbing content perpetuated by whatever platform was "in" at the time.
|
||
|
|
||
|
And that's what I think is sad about the modern internet. Yes, you can find
|
||
|
cool sites from time to time, but with everyone's eyes glued squarely to
|
||
|
hostile sites designed to grab their attention for longer and longer, these
|
||
|
cool sites are cast to the wayside in exchange for the next generic blob of
|
||
|
popular "culture." I wouldn't feel so annoyed at this if it were the good
|
||
|
content on these platforms rising to the top, like the layer of foam on a
|
||
|
soft drink, but it's often the most mind-numbing, low-effort,
|
||
|
just-entertaining-enough tripe that ends up the algorithms fancy for the
|
||
|
increasingly shortening attention span of the users.
|
||
|
|
||
|
And it's this plainly *hostile* design that makes me sick to my stomach. These
|
||
|
platforms are so clearly designed to create addiction in their users, through
|
||
|
slimey techniques like infinite scrolling and push notifications, where systems
|
||
|
are built solely for the purpose of maximising the time a user spends on the
|
||
|
platform, through the mining of data of millions and millions.
|
||
|
|
||
|
I'm not going to pretend I'm a veteran of the older internet and that I know
|
||
|
exactly where it all went wrong, nor do I intend to gatekeep something I have
|
||
|
no right to gatekeep. I will, however, say that making content easy to publish
|
||
|
on the Internet, albeit inside a walled garden, seems like a great way to
|
||
|
allow creative people to do their thing and show it to an audience, but it
|
||
|
also allowed people who just wanted to grab a brief moment of fame to trumpet
|
||
|
in and throw whatever at an audience to see what stuck to do so. It created a
|
||
|
culture of fleeting attempts at striking it big quick, which leads to a deluge
|
||
|
of garbage flooding the public conciousness.
|
||
|
|
||
|
But this is just a secondary effect, this dilution of quality and
|
||
|
creativity. The primary effect of this transition was taking a decentralized
|
||
|
system and centralizing it into hubs, where a singular corporation would have
|
||
|
jurisdiction. *This* makes me angry. The freedom of information that is the
|
||
|
promise of the internet isn't possible with a single party in control of said
|
||
|
information. Yes, it's more possible than ever to host information outside of
|
||
|
these networks, but the network effect is a powerful thing. People don't hear
|
||
|
about things if it isn't on their various newsfeeds. It's created a partition
|
||
|
between an average user and one which is aware of communities outside of that
|
||
|
bubble. It's not the users fault, not at all. Once the right person had the
|
||
|
idea of creating that bubble, there wasn't much anyone could do to stop
|
||
|
them. Of course people were going to use something that made the hot new thing
|
||
|
easy for everyone. Of course buisnesses were going to flock to try and make
|
||
|
money in this new frontier. Of course it was going to become harder and harder
|
||
|
to find the good from the bad. I speak with hindsight, and I know it wouldn't
|
||
|
have seemed obvious from that point in time, but yet I still find myself
|
||
|
annoyed.
|
||
|
|
||
|
Yes, that's probably a me problem. I'll go touch some grass, now.
|
||
|
|
||
|
* Part Three: Holy Hell, It's Getting /Worse/?!
|
||
|
It's easy to look back at technology with rose-tinted goggles. Taking those off
|
||
|
for a moment, I remember my first computer being slow and unresponsive. I could
|
||
|
stare at the Windows XP logo long enough that it would leave a ghost image on my
|
||
|
eyes afterwards. I'm rather surprised that I managed to get anything done on
|
||
|
that computer at all, a younger me having much less patience. Thankfully, now in
|
||
|
2022 I have a reasonably powerful computer, so all my applications should run
|
||
|
quickly and snappily.
|
||
|
|
||
|
Right?
|
||
|
|
||
|
/Not a hope in hell./ Somewhere along the line, computers became powerful enough
|
||
|
that optimization was not the be all and end all. Of course, I can't hold that
|
||
|
against anyone. Not everyone is going to be the super hacker that does
|
||
|
pico-optimizations to save a grand total of 3 CPU cycles in a massive
|
||
|
application like a CAD program or a web browser. But it seems more and more like
|
||
|
modern programs do everything BUT optimize themselves.
|
||
|
|
||
|
I think the biggest example of what I mean comes from Electron; a nice idea in
|
||
|
concept, by allowing web developers to create native applications with the
|
||
|
languages and design capabilities that they're used to. Certainly, it's easier
|
||
|
to theme and design than something like GTK, that's for sure. But it comes with
|
||
|
the trade-off of running an entire browser engine to use your application. At
|
||
|
that point, I'd rather just run your application in my actual browser. I think
|
||
|
the most egregious examples come from applications which require you to be
|
||
|
connected to the internet to use anyway: for example, chat programs. However,
|
||
|
the one that really took the cake for me was Balena Etcher; an image-writing
|
||
|
program that uses Electron to provide a pretty GUI. Not the worst goal, but to
|
||
|
run a browser to copy some bytes? /Really?/
|
||
|
|
||
|
And if you ask me, optimization is even more important nowadays. I don't want to
|
||
|
be wasting cycles to display an application that could be native when I'm on a
|
||
|
machine with a battery, whether that's a phone or a laptop. At least offer me
|
||
|
the option to use a native window toolkit or other solution, or if you're
|
||
|
running a service, to be able to use my own client.
|
||
|
|
||
|
But I'm sure it's just me that needs to get a better computer. Or I just need to
|
||
|
update for the 50th time today. I'm sure whatever "various bugfixes" have been
|
||
|
done will solve all of my problems!
|
||
|
|
||
|
* Part Four: Privacy, or what's /left/ of it.
|
||
|
Privacy is something that's important to me. Do I have things to /hide?/ No more
|
||
|
than any other person. I don't want people to know things like my bank account
|
||
|
information, or the amount of times I listened to the /Wrath of Khan/ theme loop
|
||
|
in a single sitting. But what I don't understand is the reaction people give
|
||
|
when you tell them you'd prefer not to be tracked by gigantic corporations who
|
||
|
log everything you do on your devices and on the internet.
|
||
|
|
||
|
Suddenly, you're accused of being some kind of conspiracy theorist, or you get a
|
||
|
response along the lines of "But why would they want my data? Who cares?". The
|
||
|
simple fact of the matter is they do, and they use it specifically to try to
|
||
|
manipulate you, either through ads, or as we found out about companies like
|
||
|
Cambridge Analytica, manipulate your political opinions to match whatever the
|
||
|
highest bidder wants.
|
||
|
|
||
|
And so, as I began earlier, most "free" services you see on the internet aren't
|
||
|
free at all. It's a transaction. "Let us track you relentlessly in order to
|
||
|
learn as much as possible about you and the people you connect with, so we can
|
||
|
sell that data and manipulate you, and you can put funny pictures over your face
|
||
|
and send them to your friends." Sounds like a much worse deal now, doesn't it?
|
||
|
|
||
|
And really, it /is/ becoming worse and worse. With the advent of machine learning
|
||
|
and related technologies, who knows what fun new ways to track and analyze us
|
||
|
corporations are working on? How much can you manipulate a person by knowing how
|
||
|
their eyeballs move inside of a VR headset, for example? There are people who
|
||
|
likely have a highly paid job right now to figure that out.
|
||
|
|
||
|
As a rule of thumb, if you or that computer-savvy friend you have can't find the
|
||
|
source code somewhere for whatever service you're using, or the Privacy Policy
|
||
|
reads like /Finnegan's Wake/, you're going to have to do a lot of work to not be
|
||
|
tracked. If it's not critical to your life, I'd say drop it, or start
|
||
|
researching how to minimize the collection of data from that service. It's
|
||
|
incredibly fortunate that there are dedicated people who develop software to
|
||
|
help with things like that.
|
||
|
|
||
|
Or, I suppose, you could wear a tinfoil hat. I'm sure that'll be just as
|
||
|
effective.
|
||
|
* Part Five: So what are you going to /do/ about it?
|
||
|
To be frank, I can't change all of this. This is the route that design has gone
|
||
|
down, and after a certain point you can't really fight against the tide. I will,
|
||
|
however, try not to worsen the problem. And at the end of the day, it's still
|
||
|
really cool, and I'm still going to try and learn as much as I can.
|
||
|
|
||
|
Just because you can't know it all doesn't mean you get to throw in the towel,
|
||
|
and so I'm not going to. I'll just write my programs, and hopefully, they'll be
|
||
|
useful to someone.
|
||
|
|
||
|
But all the while, I'll feel the want of a more limited computer. One that I can
|
||
|
understand, fully, top to bottom, back to front. One that is not limited in
|
||
|
usefulness, but in design sprawl. One that I can run software on that doesn't
|
||
|
trample over my privacy or pin my processor to 100 percent.
|
||
|
|
||
|
Or I could scrounge up a fortune and become one of those diehard /Amiga/ fans.
|