Telemetry in Go

Posted on 15th of February 2023 | 614 words

Update: Go decided to go with opt-in telemetry, which at leastpersonally speaking I’m very happy with. [https://research.swtch.com/telemetry-opt-in](Read more about it from here.)

Last week, Russ Cox from Go team started a discussion about the possibility of starting to collect telemetry from Go usage .

How do software developers understand which parts of their software are being used and whether they are performing as expected? The modern answer is telemetry, which means software sending data to answer those questions back to a collection server.

I believe that open-source software projects need to explore new telemetry designs that help developers get the information they need to work efficiently and effectively, without collecting invasive traces of detailed user activity.

I have written a short series of blog posts about one such design, which I call transparent telemetry, because it collects as little as possible (kilobytes per year from each installation) and then publishes every bit that it collects, for public inspection and analysis.

I’d like to explore using transparent telemetry, or a system like it, in the Go toolchain, which I hope will help Go project developers and users alike. To be clear, I am only suggesting that the instrumentation be added to the Go command-line tools written and distributed by the Go team, such as the go command, the Go compiler, gopls, and govulncheck. I am not suggesting that instrumentation be added by the Go compiler to all Go programs in the world: that’s clearly inappropriate.

Cox also published three part introductory blog post about “transparent telemetry” that is worth a read:

So this whole discussion got me thinking about my feelings towards Go and, possibly, its future. First, I enjoy working with Go. As a language, it’s delightful to work with. It’s safe and fast, and I feel productive in it. But if the Go developers would introduce something like telemetry collecting your Go usage, I would have to re-evaluate the need/desire to use Go in current/new projects. There aren’t many developers that enjoy something like this in their toolchains. Or that would willingly allow something like that.

Sure, collecting telemetry in Visual Studio Code hasn’t affected too much in its popularity. But then again VSCodium is also quite popular, so clearly, some people hate this kind of telemetry, even in their favourite tool. Of course, I’m not yet even talking about the legality of collecting something like that. Because if something like this would be on by default, even if opt-out is offered, looking at GDPR, this can be considered illegal.

Of course, Go has had some “trust issues” for many due to it being language primarily developed, or at least funded, by Google. So naturally, people tend to have certain ideas and feelings about it even without touching it. Understandably so. Many people have already raised criticism in Go, for example, in their usage of Google run closed source Go module proxy mirror (proxy.golang.org), which is set on by default. This is also odd since Go’s import system was made to be decentralized from the get-go. Still, they decided to introduce something like this to increase reliability when importing libraries.

Considering all this, personally, I feel that if they were to introduce something like this to the Go toolchain, especially if it’s set on by default, it’d be a horrible thing for Go making the language to start fighting a big uphill battle, which may never end. I would still like to continue working in it, but if something like this were to happen, I feel that I couldn’t continue working in it if I had a choice.


Shawn Raboutou Projecting Burden of Dreams

Posted on 6th of February 2023 | 61 words

So climbing world seems pretty stoked that Shawn has recently been projecting the infamous Burden of Dreams, 9A/V17, in Finland. Boulder is famous for being the first 9A boulder first ascent made by Nalle Hukkataival in 2016 after three years of projecting.

Lately, Shawn has also uploaded his projecting videos of the boulder to his YouTube channel, so check those out!

Youtube video
Youtube video

Carbon Costs of Self Driving Cars

Posted on 4th of February 2023 | 159 words This is Fine, (c) K.C. Green

MIT study finds huge carbon cost to self-driving cars

The study found that with a mass global takeup of autonomous vehicles, the powerful onboard computers needed to run them could generate as many greenhouse gas emissions as all the data centres in operation today.

These data centres currently produce around 0.14 gigatonnes of greenhouse gas emissions per year, equivalent to the entire output of Argentina or around 0.3 per cent of global emissions, according to the researchers. […]

The high emissions are the result of the huge computing workload placed on each self-driving vehicle. The researchers’ modelling assumes that the vehicles use a similar algorithm to what is popular today – a multi-task learning deep neural network, so called because it can perform many tasks at once.

These neural networks have to process an onslaught of data, simultaneously analysing the inputs provided by several onboard cameras with high frame rates to allow the car to drive on its own.


We Have This Today With Common Lisp

Posted on 3rd of February 2023 | 429 words Alien technology aka Lisp, (c) Land of Lisp

Despite not using Twitter, I stumble upon some Twitter threads every once in a while, and I have to read them through. This time, it was one of the tweets that John Carmack, for whom I have tremendous respect, wrote:

Programmers are also users, and “funnel drop offs” apply. “Show source” was pivotal for the web, and I wish native code behaved similarly — ctrl-break any application and be in a debugger with full source and the ability to make changes.

Precisely this kind of control-break behaviour where you can immediately after failure get into full-fledged debugging, inspectability with complete source available but also where you can evaluate any expression in any stack frame is available in Common Lisp. Today! Similar behaviour is basically impossible to implement in any modern language that requires compiling and running to do anything, meaning C, C++, Rust, Haskell, Go and so on.

Actually, just recently, Jack Rusher had a great talk in Strange Loop, called “Stop Writing Dead Programs”, which revolved around this exact topic, why we keep using technologies that were meant for batch-processing days and punch cards, and one of the topics in this was the previously mentioned ability to debug from Lisp. Check it out:

Youtube video

So naturally, in the Twitter thread, someone raised Lisp, and Carmack responded to that with:

Unfortunately, heavily customizable languages like lisp are their own barrier to entry, even for those that already know the language. There is a lot to be said for boring languages making it easier to contribute.

Which is fair. But, at the same time, every language can be abused; the same applies to Lisp. Of course, you can go full-on wild west with various macros, which only you can understand, but when it comes to good code (whatever that means), even in Lisp, it should be pretty straightforward and easily understandable. Functions, classes, nothing too fancy. If you need to use something fancy, the problem should REALLY require it. Great example would be reader macros from Common Lisp. Great feature, rarely needed.

It truly saddens me that we live in a world where something that Carmack talks about would be easily achievable, and you could argue when looking at the industries where Lisp used to be heavily used, we had this world, but we just decided to give it away.

Common Lisp would definitely be a fine choice for many problems that we face today, but we just decided to go elsewhere, and now we have to live with it. But maybe it’s not too late. Start using Common Lisp more!


What I Read Between November 2022 and January 2023

Posted on 3rd of February 2023 | 656 words

Some time ago, I decided to start keeping a book list and wanted to start writing some notes about them . But, unfortunately, life happened, and I forgot that I was supposed to make these notes. Of course, I don’t have anything or anyone enforcing me to do these, but I still want to keep my own promises. So, now when I found some time, I decided to do this small overview of the months that I missed. Hopefully, in the future, I could continue this habit monthly. So here are the books I read between November 2022 and January 2023.

Jason Molina: Riding with the Ghost by Osmon, Erin, ISBN: 9781538112182

Jason Molina has been one of my favourite songwriters for a very long time. Still, I never knew too much about him, so I wanted to pick this book up as a desperate fanboy.

Rautatie by Aho, Juhani

I mainly use Kindle for my reading, which naturally depends on Amazon itself, sadly. Since moving to Berlin, I’ve missed Finnish literature since, naturally, those books are pretty hard to come by here. At the same time, Amazon doesn’t really have too many of these. Then I found out that Project Gutenberg provides lots of books not only in English, but in other languages, too, such as Finnish. For which I wrote a little appreciation post a while ago .

Juhani Aho is one of the first novelists coming from Finland during the time of late 1800s and early 1900s, Rautatie (engl. Railway) being one of his most notable novels. A culturally important book about a man and woman living in the countryside in the late 1800s, where they start hearing rumours about trains without seeing them.

To Live’s to Fly: The Ballad of Late, Great Townes Van Zandt by Kruth, John, ISBN: 9780306816048

In the same category as Jason Molina’s biography, Townes Van Zandt is also one of my favourite songwriters, and I was interested in learning more about him.

The Prophet by Gibran, Kahlil, public domain

Another classic. An excellent and short book with lots of profound teaching and philosophies about life. Inspirational.

Be Here Now by Dass, Ram

When moving to Berlin, I sold everything I owned and moved only with the clothes I had. The sad part is that I had to sell all the vinyls I owned and all the books I owned. The only physical book that I brought with me was this one. Very hippy-dippy book to some, but I love it. I’ve read it multiple times before this and will most likely reread it.

One Hundred Years of Solitude by Márquez, Gabriel García, ISBN: 9780060883287

For some reason, when I started to keep this reading list, I filled it up with classics that I, for some reason, hadn’t read earlier. This is one of them. A fascinating book filled with symbolism, some could say a little bit too much of it even, telling the story of one family living in a small town and their problems with the world and how history keeps repeating itself. Classic for a reason, definitely a great read.

Juoksuhaudantie by Hotakainen, Kari

Despite not being too old book (coming from 2002), many would call it already a classic in Finnish literature. It was awarded the prize for literacy excellence (Finlandia award). When I started reading this book, it really didn’t hit me too much, but despite this, I decided to continue reading, and in the end, I feel that I was rewarded. The story of a delusional man who tries to get his family back, whom he lost due to his own mistakes.

Hävitys by Rauma, Iida

Last year’s Finlandia award winner. Tells the grim and dark story about the effects of bullying in school.

Juha by Aho, Juhani

Another classic by Juhani Aho which many would consider his most important work. Tells the story of a “love” triangle in Sweden occupied Finland.