Hi, there! I’m pmsteinberg aka ps (on the internet I usually go by
the name objectliteral). This page is about me.
I’ve spent a good amount of the last twenty years in front of a computer
and something tells me, the next twenty are not going to be so
different. I like to write software, learn about software, complain
about software, and I care quite a lot about the freedom and privacy of
users of software.
My other interests are history, politics, film, photography, and quizzes
and puzzles.
To provide some context for all my highly questionable opinions, here’s a
short recap of my programming journey:
The first program I wrote, I can’t remember what language that was in,
was a command line-based trivia quiz on my Windows 98 machine. The
implementation was some spaghetti-fest of if-elses, but it was
something. Writing down logical instructions for the computer to
consistently follow was quite satisfying for my very young self.
Years later, after being introduced to HTML and CSS in school, I taught
myself PHP and JavaScript and hacked on a bunch of small web apps;
nothing exciting, but enough to satisfy my curiousity and to learn quite
a lot about how the web worked. I came to really like JavaScript as a
language (the semantics of a functional language in the syntax of a
procedural one… what a neat combination!) and the web as whole due to
its openness: How the internet was built on open standards and
protocols, I think, shaped my conception of how software could and
should be built, and its inviting and vibrant developer community made
it a welcoming place for beginner programmers like me.
In high school and university I had to learn and use Java because that
was apparently what the Real Programmers used. I won’t completely go on
the soap-box here, but it feels necessary to state that my experience
with Java hasn’t been the greatest. What people call Object-Oriented
Programming is a paradigm that, to put it charitably, doesn’t seem to
really gel with the way I think about code.
Instead I stuck to the web, but over the years that environment changed
as well, and not for the better: The whole technology stack got
increasingly complicated by adding too many features in browsers and
languages, and conjuring up byzantine build setups. A platform that
earlier felt so accessible, social and freeing, became increasingly
encumbered by corporate interests and then government interference. As
a user, I started to see the web now being abused as a vehicle for
surveillance for the sake of advertising and surveillance for the sake
of social control. From a technical standpoint I loathe websites making
unnecessary use of scripting, and the fact that browsers have become
these mini-operating systems on top of your actual operating system
isn’t particularly elegant either. The community of web developers
chased every trend and that inspiring “vibrancy” became
a tiring rat race of change for change’s sake and hype-driven
development processes.
Besides being frustrated with the way the web was changing, by the late
2010s, I realized that I had absolutely no clue how to write “native”
applications. I toyed around with node.js and Electron (and nw.js
before that) and that was alright, but I wanted to go deeper. Instead
of shopping around for some higher-level language, I decided to go
straight to C. We didn’t get any extensive C practice at university,
but it had always been on my list to get to know it a little better.
Around that same time I made the switch to use Linux exclusively after
getting too frustrated with Windows 10. Before that I had used Linux
only occasionally on secondary systems like older laptops and my
Raspberry Pi, but once I realized that all the relevant games ran just
fine on Linux, I pulled the trigger and went Linux fulltime… and I
haven’t looked back.
I mention this, because, for me, the journey of learning C and diving
more into the unix world have (naturally) complemented each other
really well. Surprisingly, I came to like C very much and these days, I
do almost all my programming in it.
In software, tools, and programming languages I value simplicity,
efficiency and user-empowerment. Computers are the greatest invention
since movable type and their significance to our society makes it so
vital that we always remember to put the human interest first. That
includes fighting for the user’s right to decide what software runs on
the hardware he owns. The technology has to be created for the
benefits of its users, not to their detriment. Too much effort is
expended to misuse software technology to surveil users and restrict
what they can or can’t do on the computers and with the data they own.
Programmers, as the ones who understand the incredibly complex domain of
software, must be mindful of the issues of user freedom, and apply their
skills for good. This sounds dramatic, but I truly believe that a
better world is possible if people work for it.
We programmers need to fight for user’s freedom: The freedom to choose
which software to run and the freedom to modify the software to suit
their needs. And we need to give them the tools to protect their
private data and control where and how it is stored. Means to achieve
this are interoperable interfaces, simple and efficient implementations,
and user interfaces that provide effective and efficient control over
computation and data.
That’s all for now. I invite you to browse around here some more and
maybe write me what you think of it.