Author here. When I started working on SatPulse a few years ago, I was focused on a narrow use case: making it easy to create your own PTP server using inexpensive hardware. But it turned out that producing a really good solution for this use case involved building a fairly general GNSS subsystem, with some unique capabilities including vendor-independent configuration and support for a wide range of modern Chinese GNSS hardware (see https://satpulse.net/2026/04/01/a-tour-of-the-gps-modules-su...). With SatPulse 0.2, I have extended the GNSS subsystem, and the daemon and CLI built on top of it, to work for a range of timing and positioning use cases beyond the original PTP focus. To be clear, I am not trying to replace gpsd, which does an excellent job of what it sets out to do. But I think there is room for another approach, particularly for server environments, where explicit configuration makes sense. I have also done an experimental cross-platform GUI powered by the same Go library that is used by the daemon and CLI: https://satpulse.net/2026/04/26/desktop-gui-preview.html.
I didn't say that all the listed problems were caused by the goal of being familiar.
It doesn't yet have generics because they are hard to get right and the language is still at an early stage. Many languages that subsequently added generics did not have them in the earliest versions of the language (C++, Java, C#, TypeScript, Go).
The language has a lot of syntactic compromises, because it has a design goal of being familiar to users of C-family languages like C, JavaScript, Java, C#, etc.
Thank you for your comments. Both the cartoon and the sentence you highlighted have been fixed. We want to create an environment where everybody feels welcome. Your rule about not sexualizing the name seems like an excellent idea.
Here's what the spec [1] says about the sequence diagram aspect of the language: "[Ballerina's] abstractions and syntax for concurrency and network interaction have been designed so that there is a close correspondence with sequence diagrams. This enables a bidirectional mapping for any Ballerina function between its textual representation in the syntax described in this specification and its graphical representation as a sequence diagram, such that the sequence diagram fully shows the aspects of the behavior of that function that relate to concurrency and network interaction."
The two biggest things that are different about Ballerina in my view are the language abstractions for providing and consuming network services, and the correspondence with sequence diagrams.
Happy to answer questions.