-- Leo's gemini proxy

-- Connecting to skyjake.fi:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini;charset=utf-8;lang=en

An Origin Story


When I first started entertaining the notion of writing a Gemini client, I was not at all convinced that such a thing would be useful for me personally. However, the project was spot on perfect for me in terms of my interests:


Focusing on UI since the protocol itself is quite simple. I greatly enjoy UI programming for some reason.

Doing typography and text layout from scratch.

Learning some new (to me) network stuff like TLS, OpenSSL and more details about X.509 certificates.

No compromises cross-platform support.

A great opportunity to write more pure C code.


Being somewhat of an old-school programmer who started by writing BASIC on a C64 in the 80s, modern web software seems like a towering garbage heap of ill-conceived abstractions, layered on top of another until no one even remembers code needs to run on actual hardware. Of course, this is by design: the web has become an operating system of its own — a city in the clouds where no one cares that occasionally it rains in Hardware Land below. However, the internet remains one of the most wonderful inventions that humans have come up with so it seems a waste to let the Web Folks hog it all.


I've noticed a trend in my life since my son was born (almost two years ago) where I've started putting more and more emphasis on simplicity. Time is short, and you get better bang for your buck by keeping things simple. When it comes to programming, C++ remains my most-used language over the years but I've come to resent its baroqueness. Recent expansions of the C++ standard have exacerbated the situation. (It would be nice if they actually considered improving the language instead of just expanding it.) This motivated me to start writing a C11 library that would allow me to program in the way I prefer without having to deal with the complexity and excruciatingly slow compilation times of C++.


I named the library the_Foundation.


That was in 2017, and since then I've written a couple of small projects using it — indulging myself while justifying it by making the library more robust and bug-free. These projects have largely proven that the design I chose for the library was correct and good, for my needs at least. It feels great to be free of C++'s cognitive load while writing code, and to keep things simple.


Here I was, having written a simple UI framework based on SDL and the_Foundation, considering my next little project. I had become aware of a steady but quiet drumbeat of Gemini-related discussion on the Fediverse, and finally it led me on gemini.circumlunar.space reading the Specification.


It all seemed to just make a ton of sense. The World Wide Web became a thing in my teenage years, so admittedly I have strong nostalgia for these early years of dial-up BBS's and modem-based networking, and logging into Unix systems to run stuff in the terminal. (The latter remains cool to this day.) This is when I was introduced to Gopher as well, although the flashiness of the Web (sometimes the literally blinking text) quickly commandeered my attention. Back then things were simple, at least relatively speaking. From a modern perspective this simplicity has been lost, and regaining it seems worth striving for.


As an aside, putting myself in the shoes of a "normal" person, does technical simplicity really lead to lowered barriers to entry, allowing people more freedom of expression, democratizing the internet and freeing us from the oppressive corporate forces of Facebook, Google, and Twitter? Perhaps, to a degree. While normal people won't be setting up their own servers any time soon, they might jump onto a Gemini-based gemlog service or some other GeoCitiesque concoction — maybe as a rebellious countermove to yet another transgression by the powerful social network empires. Or perhaps Gemini will remain a computer geek's haven. But if the client software is user friendly and attractive, it should allow people to at least explore this community of the technologically gifted. Nevertheless, the internet is not meant to be a platform only for a handful of mega-hubs, but to be organic and diverse, full of chaotic energy and serendipitous connectivity.


So I decided to start work on Lagrange. Partially it was a leap of faith, as I couldn't come up with real rationale why I should spend time on this, but as explained by all of the above my intuition was telling me there is value here.


The name is of course a reference to Lagrange points (L₁ in particular), where the gravitational forces of two bodies cancel each other out.

Lagrange point (Wikipedia)

Let's say the Earth represents the wider internet and the Web — a hot, crowded mess full of pollution — and the Moon represents the Geminisphere — a cold, serene, beautiful, harsh alien world:


> Lagrange point L₁ allows comparatively easy access to Lunar and Earth orbits with minimal change in velocity and this has as an advantage to position a half-way manned space station intended to help transport cargo and personnel to the Moon and back.


So here is Lagrange, helping you transport yourself to the Moon and back.


skyjake

📅 2020-11-20

🏷 Gemini

🏷 Lagrange

🏷 the_Foundation

CC-BY-SA 4.0


skyjake's Gemlog

-- Response ended

-- Page fetched on Wed Apr 24 22:50:43 2024