EuroVelo 9

Sep. 19th, 2025 11:16 pm
rbarclay: (rad)
[personal profile] rbarclay
Or, getting from home, a tad north of Vienna, to my birthplace and childhood home, Wr. Neustadt, on a bicycle.

Now, I did nearly (because of a wrong turn) that route a couple years back, visiting my grandmother. But then I only rode there, and was taken back by car. This time around, a.) I went with my wife, and b.) back again on the bicycle, too.

And ye gods, it's been even worse than memory served. At least half of it, once out of Vienna proper, is some form of gravel. Some decently fine, some with lots of large-ish (2-5cm diameter) and sharp stones thrown in.

Last time, I rode a bike with a front suspension (see posting icon), this time I didn't. And my upper arms and shoulder area have suffered for it, lots. Last time, I also had some suspension under my seat ("Thudbuster LT", IIRC), this time I didn't. And my butt and spine suffered for it, lots.

EuroVelo 9 is (mostly, or at least somewhat) built along a canal which opened in 1803, and was designed for moving bulk (for the time) freight on water, drawn by horses on paths along both sides. Some of these paths are now called a "bicycle highway". Yes, really. But it just fucking ain't. See https://youtu.be/us8MOc3Hb7E

(And don't even get me started on the signage. Which's often repeated utterly & completely without sense - say, on a straight bit of way with no possibilities of making a turn - and otherwise often missing - say, when going through sidestreets in villages.)

The Frustration of Sickness

Sep. 19th, 2025 06:36 pm
tcpip: (Default)
[personal profile] tcpip
A kind friend recently remarked that I write in a universal voice. That is true, albeit not by conscious intent, although it allows me to have a journal that is both public and personal without falling to the superficial culture with its self-indulgence and sycophancy. Instead, I prefer to take those selective slices of the classics which have accessible meaning and relevance: "Homo sum, humani nihil a me alienum puto" ("I am human and nothing human in alien to me", Publius Terentius Afer). It does serve a challege to us all - are we capable of truly understanding the experiences of others or, to quote Conrad (and nicely adopted by the punk-funk group "The Gang of Four"), do we live, as we dream, alone? Our existential experiences: life, love, hope, guilt, fear, sickness, death, shared by all but in very different degrees and often, we can express with sadness, wickedly imposed by people upon others.

The past few days, I have been struck by a minor malaise. In my convalescence, however, I thought about how even a minor illness can be so disruptive. "This sickness does infect the very life-blood of our enterprise", said Shakespeare (Henry IV, Part I). As a busy person, I was frustrated by a number of events that had to be cancelled or modified. A Chinese arts and culture delegation from Shenzen had to be guided through the National Gallery by the Vice-President of the ACFS instead of myself. An HPC presentation to research team leaders at work had to be handballed, and other meetings were cancelled, and, alas, dinner and other social plans with friends also suffered this fate. Operational work, research essays, and studies have likewise been delayed. Needless to say, my usual fitness regimen had been suspended as well.

The only way to deal with such illnesses is rest and nutrition, followed by gradual recuperation. In this regard, I have been truly blessed by the presence of Kate R., who put her professional nursing skills to good use for this patient. As for the feeling of frustration, that is often resolved by shifting focus to something that one can control. Even in a semi-delirious state, I managed to work my way through the new Duolingo chess skill tree, along with keeping up with Spanish lessons. However, most of my sparse waking time was spent in passive entertainment in the form of the series "Arrested Development". I first encountered this show almost twenty years ago and, despite a few efforts, I'd hitherto never even managed to complete the first season. The hilariously dysfunctional family with its internecine manipulations and suspicions suits my absurd and ironic sense of humour: "there's always money in the banana stand".

The more recent history of DR GEM

Sep. 18th, 2025 05:12 pm
liam_on_linux: (Default)
[personal profile] liam_on_linux
A tech blogger called Nemanja Trifunovic posted an enjoyable article called the History of the GEM Desktop Environment.

It's a nice piece -- it's very good on the early history.
 
It does, however, totally omit much of the later development.
 
When Caldera released the source code, it also released the unfinished multitasking GEM/XM version.
 
Another version was X/GEM on FlexOS [PDF], DR's multitasking RTOS line, and at least some forms of UNIX.
 
DR FlexOS eventually evolved into IBM 4680 OS
 
And that evolved into IBM 4690 OS, later sold as Toshiba 4690 OS.
 
This supports a GUI, which I think is based on X/GEM -- as well as TCP/IP networking, app development in Java, and more. It was sold until about 10 years ago. 
 
I don't think I've ever seen a screenshot.
 
There have also been interesting later FOSS developments.
 
On the ST platform, TOS + GEM evolved in multiple directions. Some were proprietary, such as MagiC.
 
A FOSS one became MiNT, which is sometimes called FreeMINT.
 
This became the basis of TOS 4, so "Mint is Not TOS" was redefined to mean Mint is Now TOS.
 
There's a complete distro of FreeMINT with the TeraDesk multitasking desktop, called AFROS. It targets a FOSS ST emulator called ARANyM.
 
 
Some very minimal firmware to emulate just enough of TOS to boot the MINT replacement OS was developed, called EmuTOS.
 
This eventually grew into a very complete FOSS clone of TOS+GEM. It even supports some Amiga hardware now!
 
There's a 4min demo on Youtube
 
EmuTOS went from a stub ROM that just reproduced something analogous to the kernel of MS-DOS to a full graphical OS, using the PC GEM source code that Caldera made GPL.
 
So there is a lovely full circle here, where the ST version continued for years after Windows killed off the PC version, but then the PC version got open-sourced and was used to revive and modernise the ST version in the 21st century.

 
There's been a lot more GEM-related development in the last decade or two than you'd expect. This makes me happy. 

tcpip: (Default)
[personal profile] tcpip
The past several days, courtesy of my great book giveaway, I've had several bookish visitors gracing my abode. The sort of person who is interested in my academic books tends to be a person with a vibrant curiosity, so it has inevitably led to long and fertile discussions across the arts, the sciences, and the laws (to use the contemporary trivium). This has included Elliot B., Marc C., Liza D., Kate R., and, as interstate visitors, Dylan G., and Adrian S. It's been several years since I last saw Dylan, a former co-worker from VPAC days, so that was an excellent evening. Inverting the style, I visited Brendan E.'s new abode in Northcote, where he gifted me a first print copy of Wired magazine, which now, appropriately, sits next to my Mondo2000 User's Guide; cyberpunk forever. I have further updated my free book giveaway, this time with a small mountain of texts in computer science.

Other interstate visitors cam the week previous in the form of Lara D., and Adam B., from the Territory, and we had a glorious time at the French Impressionists at the NGV, after joining Anton W with a visit to the State Library where there is an excellent and highly recomended Misinformation exhibit. Of course, the works of the famous artists were at the NGV; Monet, Renoir, Degas, Cézanne, et al, but the one which really caught my attention was Fantin-Latour, whose simple subject matter made his skill in texture all the more clear. A few days later I would visit the NGV at Federation Square with Liana F., which always has excellent indigenous artworks, and the evening previous Liza D and I ventured to the Northcote Social Club (fine venue) to see Guy Blackman from Chapter records perform for his first album in "quite a while". His lyrical talent is really quite special, and his stage presence curiously enticing, and the self-deprecating humour pleasing. Certainly, this will be worthy of a Rocknerd review.

Going further back, I was thoroughly charmed to attend Nitul D's family gathering for Ganesh Chaturthi Puja, and a few days later, I would join him again, attending the 2025 Hugh Anderson Lecture by Marilyn Lake "Rapprochement with China" at the Royal Historical Society. Dr Lake was able to give some impressive history, a great deal of regional context and, of course, had a few words to say about AUKUS. It was the first time I'd been in the RHS building, a late-deco establishment and once a military hospital. Another one of Melbourne's hidden gems. On similar subjects, I must mention Dr Wesa C's birthday gathering last week at Vault Bar, a delightful little place and, as the name suggests, a former bank vault. It should be mentioned that Wesa is a bit of a hidden gem herself, and I had no prior knowledge of her singing talent!

a few notes on ratelimiting

Sep. 14th, 2025 04:31 am
fanf: (Default)
[personal profile] fanf

https://dotat.at/@/2025-09-14-ratelimit.html

Last year I wrote a pair of articles about ratelimiting:

Recently, Chris "cks" Siebenmann has been working on ratelimiting HTTP bots that are hammering his blog. His articles prompted me to write some clarifications, plus a few practical anecdotes about ratelimiting email.

Read more... )

jyrgenn: Blurred head shot from 2007 (Default)
[personal profile] jyrgenn
"Without Remorse or Recipe" is how I would translate this title. Wolfram Siebeck, the influential German journalist and restaurant critic, was someone I already knew in my childhood; I read his restaurant reviews in my parents' papers. After I had left my parents home, I heard less of him, but later met someone who had even cooked together (or was it against?) Siebeck.

This blog reflects how I read fewer and fewer books over the time; the last entry about one is even 4 years ago. My parents know this, and their birthdays gifts are now mostly not books, or ones that can be consumed in little portions on the loo, for instance.

But about this one, when they gave it to me on my birthday, my father said, I know you are not really reading books any more. But still, you actually should read this one!

So I did, mostly on my commute, meaning but twenty minutes (the uninterrupted time on the train) two times weekly. Still, I managed to read it to the end, and actually this wetted my appetite for reading more books again. That is good!

Now this book is rather not as significant as my father made it sound. It is interesting to some degree, it is somewhat entertaining, but if Siebeck hadn't been in my mind since the 70s, I might as well have found it a bit boring.

Siebeck comes across as someone with a curious intellect, but also vain, arrogant in parts, not necessarily the most likeable character, and not one out to save the world — and he knows it. That he paints this picture of himself with some self-mockery makes it bearable, but then he *is* a snob when it comes to eating, cars, people, and ways to live.

The more interesting and central parts are, apart from his account of the end of the war, in which he was involved as a 16-year-old, his portrayal of the rise of fine dining after the war, and journalism's increasing interest about it. His narration about the places where he lived, mainly that cottage in south France, and all the hassle with it, isn't, so much.

In the end I found the book somewhat interesting and entertaining (he can write, after all), but far from being a must. I don't regret spending the time to read it, but I could have done without it.
tcpip: (Default)
[personal profile] tcpip
In lieu of an actual pushbike (my last one fell apart) I've taken up the exercise bike in the past month. Almost every day, across two cities and four different devices (fortunately, all a Matrix U1XE), I've smashed out 40km, which is the Olympic-distance triathlon bike leg, which sits in the middle of the standard course (1.5km swim, 40km bike, 10km run). Of course, the real challenge is doing these in succession. Nevertheless, ever a keen cyclist, my first times were around 70 minutes, which is pretty good, especially for an old bloke. After a few days and a bit more pushing, I found that I could regularly get around the 65-minute mark, and I was pretty chuffed when I got it down to 62 minutes.

Since my return to Melbourne from Darwin, I've continued the activity, and since then, I've even managed to get 60, 59, and 58-minute levels, all of which are extremely good. My method is pretty straightforward; get my speed to 40km/h and stay at that for an hour. In case you're wondering, yes, it is quite challenging, to say the least. Indeed, on a 58-minute run, I realised that my eyes were incredibly bloodshot. Apparently, I was experiencing a subconjunctival haemorrhage; that is, when blood vessels have burst and are haemorrhaging into the tissue under the white of the eye. It sounds and looks a lot more dramatic than it actually is, and one recovers fairly quickly. But by goodness, it really caught my attention!

Ever a data nerd, I have a bit of a rough habit of tracking some core measurements, albeit with a rough cut. I'm pretty happy with these results. But there's still some work to do.

October 1st, 2024: 117cm chest, 114 cm stomach, 112 cm waist. 105.7kgs. WHtR 0.62
February 8th, 2025: 118cm chest, 103 stomach, 102 waist. 94.9kgs. WHtR 0.57
August 20th, 2025: 110cm chest, 92 stomach, 96 waist. 84.8kgs. WHtR 0.47
September 11th 2025: Heart and Blood Pressure 118/75 46bpm

first-class merges and cover letters

Sep. 11th, 2025 02:38 am
fanf: (Default)
[personal profile] fanf

https://dotat.at/@/2025-09-11-cover-letter.html

Although it looks really good, I have not yet tried the Jujutsu (jj) version control system, mainly because it's not yet clearly superior to Magit. But I have been following jj discussions with great interest.

One of the things that jj has not yet tackled is how to do better than git refs / branches / tags. As I underestand it, jj currently has something like Mercurial bookmarks, which are more like raw git ref plumbing than a high-level porcelain feature. In particular, jj lacks signed or annotated tags, and it doesn't have branch names that always automatically refer to the tip.

This is clearly a temporary state of affairs because jj is still incomplete and under development and these gaps are going to be filled. But the discussions have led me to think about how git's branches are unsatisfactory, and what could be done to improve them.

branch

One of the huge improvements in git compared to Subversion was git's support for merges. Subversion proudly advertised its support for lightweight branches, but a branch is not very useful if you can't merge it: an un-mergeable branch is not a tool you can use to help with work-in-progress development.

The point of this anecdote is to illustrate that rather than trying to make branches better, we should try to make merges better and branches will get better as a consequence.

Let's consider a few common workflows and how git makes them all unsatisfactory in various ways. Skip to cover letters and previous branch below where I eventually get to the point.

merge

A basic merge workflow is,

  • create a feature branch
  • hack, hack, review, hack, approve
  • merge back to the trunk

The main problem is when it comes to the merge, there may be conflicts due to concurrent work on the trunk.

Git encourages you to resolve conflicts while creating the merge commit, which tends to bypass the normal review process. Git also gives you an ugly useless canned commit message for merges, that hides what you did to resolve the conflicts.

If the feature branch is a linear record of the work then it can be cluttered with commits to address comments from reviewers and to fix mistakes. Some people like an accurate record of the history, but others prefer the repository to contain clean logical changes that will make sense in years to come, keeping the clutter in the code review system.

rebase

A rebase-oriented workflow deals with the problems of the merge workflow but introduces new problems.

Primarily, rebasing is intended to produce a tidy logical commit history. And when a feature branch is rebased onto the trunk before it is merged, a simple fast-forward check makes it trivial to verify that the merge will be clean (whether it uses separate merge commit or directly fast-forwards the trunk).

However, it's hard to compare the state of the feature branch before and after the rebase. The current and previous tips of the branch (amongst other clutter) are recorded in the reflog of the person who did the rebase, but they can't share their reflog. A force-push erases the previous branch from the server.

Git forges sometimes make it possible to compare a branch before and after a rebase, but it's usually very inconvenient, which makes it hard to see if review comments have been addressed. And a reviewer can't fetch past versions of the branch from the server to review them locally.

You can mitigate these problems by adding commits in --autosquash format, and delay rebasing until just before merge. However that reintroduces the problem of merge conflicts: if the autosquash doesn't apply cleanly the branch should have another round of review to make sure the conflicts were resolved OK.

squash

When the trunk consists of a sequence of merge commits, the --first-parent log is very uninformative.

A common way to make the history of the trunk more informative, and deal with the problems of cluttered feature branches and poor rebase support, is to squash the feature branch into a single commit on the trunk instead of mergeing.

This encourages merge requests to be roughly the size of one commit, which is arguably a good thing. However, it can be uncomfortably confining for larger features, or cause extra busy-work co-ordinating changes across multiple merge requests.

And squashed feature branches have the same merge conflict problem as rebase --autosquash.

fork

Feature branches can't always be short-lived. In the past I have maintained local hacks that were used in production but were not (not yet?) suitable to submit upstream.

I have tried keeping a stack of these local patches on a git branch that gets rebased onto each upstream release. With this setup the problem of reviewing successive versions of a merge request becomes the bigger problem of keeping track of how the stack of patches evolved over longer periods of time.

cover letters

Cover letters are common in the email patch workflow that predates git, and they are supported by git format-patch. Github and other forges have a webby version of the cover letter: the message that starts off a pull request or merge request.

In git, cover letters are second-class citizens: they aren't stored in the repository. But many of the problems I outlined above have neat solutions if cover letters become first-class citizens, with a Jujutsu twist.

  • A first-class cover letter starts off as a prototype for a merge request, and becomes the eventual merge commit.

    Instead of unhelpful auto-generated merge commits, you get helpful and informative messages. No extra work is needed since we're already writing cover letters.

    Good merge commit messages make good --first-parent logs.

  • The cover letter subject line works as a branch name. No more need to invent filename-compatible branch names!

    Jujutsu doesn't make you name branches, giving them random names instead. It shows the subject line of the topmost commit as a reminder of what the branch is for. If there's an explicit cover letter the subject line will be a better summary of the branch as a whole.

    I often find the last commit on a branch is some post-feature cleanup, and that kind of commit has a subject line that is never a good summary of its feature branch.

  • As a prototype for the merge commit, the cover letter can contain the resolution of all the merge conflicts in a way that can be shared and reviewed.

    In Jujutsu, where conflicts are first class, the cover letter commit can contain unresolved conflicts: you don't have to clean them up when creating the merge, you can leave that job until later.

    If you can share a prototype of your merge commit, then it becomes possible for your collaborators to review any merge conflicts and how you resolved them.

To distinguish a cover letter from a merge commit object, a cover letter object has a "target" header which is a special kind of parent header. A cover letter also has a normal parent commit header that refers to earlier commits in the feature branch. The target is what will become the first parent of the eventual merge commit.

previous branch

The other ingredient is to add a "previous branch" header, another special kind of parent commit header. The previous branch header refers to an older version of the cover letter and, transitively, an older version of the whole feature branch.

Typically the previous branch header will match the last shared version of the branch, i.e. the commit hash of the server's copy of the feature branch.

The previous branch header isn't changed during normal work on the feature branch. As the branch is revised and rebased, the commit hash of the cover letter will change fairly frequently. These changes are recorded in git's reflog or jj's oplog, but not in the "previous branch" chain.

You can use the previous branch chain to examine diffs between versions of the feature branch as a whole. If commits have Gerrit-style or jj-style change-IDs then it's fairly easy to find and compare previous versions of an individual commit.

The previous branch header supports interdiff code review, or allows you to retain past iterations of a patch series.

workflow

Here are some sketchy notes on how these features might work in practice.

One way to use cover letters is jj-style, where it's convenient to edit commits that aren't at the tip of a branch, and easy to reshuffle commits so that a branch has a deliberate narrative.

  • When you create a new feature branch, it starts off as an empty cover letter with both target and parent pointing at the same commit.

  • Alternatively, you might start a branch ad hoc, and later cap it with a cover letter.

  • If this is a small change and rebase + fast-forward is allowed, you can edit the "cover letter" to contain the whole change.

  • Otherwise, you can hack on the branch any which way. Shuffle the commits that should be part of the merge request so that they occur before the cover letter, and edit the cover letter to summarize the preceding commits.

  • When you first push the branch, there's (still) no need to give it a name: the server can see that this is (probably) going to be a new merge request because the top commit has a target branch and its change-ID doesn't match an existing merge request.

  • Also when you push, your client automatically creates a new instance of your cover letter, adding a "previous branch" header to indicate that the old version was shared. The commits on the branch that were pushed are now immutable; rebases and edits affect the new version of the branch.

  • During review there will typically be multiple iterations of the branch to address feedback. The chain of previous branch headers allows reviewers to see how commits were changed to address feedback, interdiff style.

  • The branch can be merged when the target header matches the current trunk and there are no conflicts left to resolve.

When the time comes to merge the branch, there are several options:

  • For a merge workflow, the cover letter is used to make a new commit on the trunk, changing the target header into the first parent commit, and dropping the previous branch header.

  • Or, if you like to preserve more history, the previous branch chain can be retained.

  • Or you can drop the cover letter and fast foward the branch on to the trunk.

  • Or you can squash the branch on to the trunk, using the cover letter as the commit message.

questions

This is a fairly rough idea: I'm sure that some of the details won't work in practice without a lot of careful work on compatibility and deployability.

  • Do the new commit headers ("target" and "previous branch") need to be headers?

  • What are the compatibility issues with adding new headers that refer to other commits?

  • How would a server handle a push of an unnamed branch? How could someone else pull a copy of it?

  • How feasible is it to use cover letter subject lines instead of branch names?

  • The previous branch header is doing a similar job to a remote tracking branch. Is there an opportunity to simplify how we keep a local cache of the server state?

Despite all that, I think something along these lines could make branches / reviews / reworks / merges less awkward. How you merge should me a matter of your project's preferred style, without interference from technical limitations that force you to trade off one annoyance against another.

There remains a non-technical limitation: I have assumed that contributors are comfortable enough with version control to use a history-editing workflow effectively. I've lost all perspective on how hard this is for a newbie to learn; I expect (or hope?) jj makes it much easier than git rebase.

I Saw The TV Glow

Sep. 6th, 2025 07:43 pm
emperor: (Default)
[personal profile] emperor
This is the last of this year's Hugo Award shortlist for dramatic presentation long form. It's very strange. Owen and Maddy are disaffected teenagers who bond over their obsession with The Pink Opaque. How much of it is warping their perception of reality or actually warping reality is left unanswered; the whole film proceeds at a very slow pace, and that plus the occasional breaking of the fourth wall give it a dreamlike or nightmareish quality. I think it is talking about fandom, queerness, and gender, but I didn't really get it. And the end was a damp squib.

I didn't vote in this category, but if I had I think I would have ranked Flow first; it came second behind Dune.

Profile

rone: (Default)
entombed in the shrine of zeroes and ones

December 2022

S M T W T F S
    123
45678910
11121314151617
18192021222324
252627282930 31

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 20th, 2025 02:24 am
Powered by Dreamwidth Studios