Articles of Interest
A Gemini client* is needed for the following links.
-
Another Smol Journal: Forty years a programmer
Forty years of programming, or thereabouts -- 1982 is probably about right, as the start of my programming years.
Early on, it was Forth and Pascal and Basic and Modula-2 and assembler (which I have yet to write much of, but got so I could read it anyways - 6502, z80, 68000).
Then there was C. Then there was Lisp and Prolog and then Perl and then ABC and then Python and Lisp and Prolog some more. And always Forth, through these times.
And J. And I got stuck on J. J is hard. I'm still stuck, although now I'm stuck in dyalog apl, which is a very sweet dev environment that I am a complete newbie in. I seem to be unable to program with arrays; I need records (aka structs), it seems. Still trying to crack this nut. I remember seeing an APL machine in around 1982 or so, it was basically a laptop, from Japan (iirc). I've wanted to grok (and use) APL ever since. I believe that there's a major "aha" moment I have yet to have about doing modern enterprise class computing (cf: codd's relational model of data) using APL. There's a secret sauce, and I'm pretty sure I've read about it, but I still haven't quite got it.
-
Internationalizing Zond
My capsule generator, Zond, hasn't seen a lot of new features lately because it's been pretty feature complete, at least for my own usage. I have been keeping on top of tracking newer versions of it's dependencies as they come out. I also periodically run `clippy` as new versions of the compiler come out to check it against all of the latest lints, which over time tends to accumulate a number of changes making the code more idiomatic. But other than that it hasn't really changed much and has just been a rock solid boring tool for me.
[...]
In looking at Fluent I do think that it is a better designed system. In particular, it allows one to place variables into your string translations, so any portion of a string which is going to remain static accross all languages can be placed into the correct grammatical position accross all languages. However, there is a lot to be said for inertia in software, and if I'm going to go through the work to make Zond i18n capable then I want to also make it as easy as possible on potential translators. Gettext has been a standard for such a long time and has great tools that have grown up around it's use such as Poedit. So ultimately that's what I went with.
-
Adoption Curves
Things start slow and hard amd expensive, and get easier, cheaper and faster. That is how it is. Was it always like this, or are we on a runaway train?
With tech the curve is clear. Think back to 1953, when IBM was surprised to get more than 5 orders for a new computer. Coincidentally, John McCarthy put together the first Lisp a few years after - the language which pioneered garbage collection, bytecode interpretation, first class functions and lambdas, to name a few concepts - the language which I use daily... Weird, huh.
Back when Lisp was invented, running a Marathon was a feat for professional athletes. Today, if you go to a Marathon in your city (!) you will likely find older folks, people with arms and legs missing, and likely people who've had heart attacks. It's just a race. There are people who fly around the world and run Marathons a few times a week. It's not just tech, it's the whole society.
-
Going Smol Increases Your Horizons
For the last month or so, I have done all of my cooking on a small wood stove. I didn't have to do this, but I wanted to do it as an experiment to challenge my concepts of what I need to live. At some point in the experiment, I experienced a sort of matrix style download, and could suddenly understand a great deal about different food preservation methods, why certain common dishes became popular historically, and how I might go about storing and grinding various grains. The reason I mention this, is because it is not the first time I have had this kind of experience. But what i realized this time, was that the experience is always preceded by challenging a perceived need, or a norm of convenience.
-
Pushing Pieces
Pushing pieces around a game board can be done in a number of different ways. The first attempt was recursive, though I did have vague notions of how to do a better job of it. Up to N moves are made, swapping the piece being moved with an empty cell, or recursing if there is something in the way, in which case there's a conga line of swaps. With a callback or by building a list this could in theory give an animation routine something to do, but I have no idea how to implement animations, so that might all be wrong.
-
Component-based Software Development
If you read the literature for long enough, you see the same ideas come around again and again, be they good or bad. A good idea is imposing a structure of larger units, components, composed of many indiviual modules. Components are also often used as a unit of deployment, rather than one of work assignment like modules.
[...]
First, Taligent. I've heard it referred to as a noble failure, like the Charge of the Light Brigade. Clean C++ interfaces for all OS features, but it was built as a library for AIX, OS/2, etc. I never saw it running, apparently very few did since it didn't sell well at all, but did I leaf through the documentation.
* Gemini links can be opened using Gemini software. It’s like the World Wide Web but a lot lighter.