koldfront

Jobs at Novonesis in Denmark (Lyngby) #novonesis #biotech #job

๐Ÿ•œ๏ธŽ - 2025-12-01 - ๐ŸŸŠ 3 - โ™บ 7
- Novonesis logo

Our area in Novonesis has just posted 4 job openings:

  • Site Reliability Engineer - I think this is what we used to call system administrator; hands on a bunch of machines running Ubuntu in a dedicated server room, take care of a backup robot with a thousand tapes, petabytes of distributed storage, an HPC cluster with thousands of cores, etc. etc.
  • MLOps Specialist - help putting machine learning into the hands of the scientists in research and development.
  • Platform Engineer - be part of the team running our on-premise Data Science Platform, which allows everybody in research and development to store, work with, find, and analyze data. Python, databases, Jupyter notebooks, and automation.
  • Lab Operations Specialist - networks, VLANs, firewalls and making things work across lab equipment vendors' odd choices of operating systems and setups.

If you like Linux, are good at any of these things, and are curious and interested - apply! I can recommend not using AI for your application, you'll be standing out ;-)

Disabling newsreader short term caching for creative nntp uses #illuminant #gnus #nntp

๐Ÿ•“๏ธŽ - 2025-11-30 - ๐ŸŸŠ 3 - โ™บ 4
Partial screenshot showing like and boost icons in a Gnus summary buffer

When I abuse bend nntp creatively, sometimes there is a slight impedance mismatch between what a newsreader assumes and what I need.

Case in point: in traditional news (and mail), articles don't change. So keeping them in memory is a nice way to improve user experience. But for my ActivityPub server, Illuminant, articles do (slightly) change - for instance when a Like (star) or Repeat (boost) activity arrives. I could have implemented those arrivals by superseding the article in question, but that would make Likes and Repeats quite noisy (similar to getting a notification for each in, say, Mastodon), and I like that they are not grabbing a lot of attention.

Instead articles just have a header that shows the current Likes and Repeats, so when my newsreader, Gnus, keeps the article in memory, it is effectively hiding any updates.

So I went on a quest to figure out how to disable this; here is the solution I arrived at:

  • In the Topic Parameters of the fediverse topic, I added (gnus-keep-backlog nil)
  • In ~/.gnus I do this:
    (defun asjo-gnus-flush-original-article-buffer (&optional arg)
      "To force reloading from server (if gnus-keep-backlog is nil)."
      (gnus-flush-original-article-buffer))
    (advice-add 'gnus-summary-show-article :before #'asjo-gnus-flush-original-article-buffer)

Gnus defaults to keeping the latest 20 articles in a backlog, so I disable that.

It also keeps the latest original article around in a buffer, so even with the backlog disabled, Gnus won't reload the same article over nntp again, as it just gets it from the original article buffer - I didn't find a way to turn this off, so instead I flush it just before showing an article. Less elegant, but it works.

OpenAI crawling websites #ai

๐Ÿ•›๏ธŽ - 2025-11-14 - ๐ŸŸŠ 1
OpenAI logo with goatse hands grabbing it

If you run a webserver you have probably got hits from OpenAI's crawlers.

They nicely announce themselves in the User-Agent header, and include a link to a page: https://openai.com/gptbot - from which I quote here:

OpenAI uses the following robots.txt tags to enable webmasters to manage how their sites and content work with AI. [...] Disallowing GPTBot indicates a siteโ€™s content should not be used in training generative AI foundation models.

For my little calendar project, Sundial, the robots.txt has since day 0 said:

User-agent: *
Disallow: /

Because, as you can imagine, there are a lot of pages in a digital calendar.

So it was surprising to see the OpenAI crawler requesting page after page from all manner of years, a lot of them negative numbers, even.

The robots.txt clearly says that crawlers should not request anything!

5 days ago I extended the robots.txt to explicitly tell the OpenAI crawlers to not crawl the calender, in case * wasn't explicit enough for OpenAI.

They are still at it:

74.7.227.55 - - [14/Nov/2025:23:23:42 +0100] "GET /-1000/03/ HTTP/1.1" 200 6031 "-" "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"

So they are basically lying to people's faces, when they say that robots.txt allows webmasters to manage how OpenAI crawls their websites.

(Yes, I realize they are trying to weasel-word their way around what robots.txt means, by writing that they interpret disallowing crawling as an indication that the content should not be used for training their models - but why crawl an infinite number of pages you won't be using!?!)

It is quite the shit show.

On the positive side, I have apparently unintendedly created an AI crawler tarpit.

AI and code review #programming #ai

๐Ÿ•›๏ธŽ - 2025-11-02 - ๐ŸŸŠ 4 - โ™บ 2

The thing I value most in a fellow programmer or developer is a rather ill defined and loose concept of "good taste".

"Good taste" is a very subjective thing, which encompasses a lot of stuff - it can be all kinds of things, from naming things consistently, choosing a reasonable level of abstraction, using tools in ways where they work well, all the way to not using tabs but spaces, and having a favourite text editorยน.

One side effect of using AI to program I think I have observed recently happens during code review.

Sometimes, when doing code review, I will see some solution that I don't like or understand, and I will ask why it was done in that way, and not in [my preferred] way.

Usually this sparks a discussion: the author will "defend" their choice of solution, perhaps pointing out some good reasons that I have overlooked (as a reviewer, you are usually not as deep into the code and problem space as the author, so this happens more often than you'd like/think) or some drawback of the alternative I am proposing that I didn't think of.

It is like the IKEA effect, where if you have put something together, however shabbily, you tend to get more attached to it.

I, as a reviewer, learn about how they are thinking, what made them get to the solution they implemented, and hopefully my questions give them some different perspectives on what might be worthwhile to consider.

Regardless of whether we agree on keeping the current solution or changing it, we both learn something about the code, the solution, and each other's way of thinking. Either of us, or both, expand our idea a little bit about what our shared concept of "good taste" is.

However, recently, I think I have observed this not happening. Instead of engaging in a discussion of the solution, the author will just say "Ok, I will change it", and ask their AI agent to rewrite the code in the way I suggested.

Since I am always right and always knows better than everybody else, that's of course always great.

Except... is it, now? I don't learn anything about why they made those "wrong" choices, and they don't learn why they should have done differently in the first place. And if my suggestion was bad, for some reason or another, my feedback doesn't get challenged and, perhaps, rejected. Sometimes a third solution might have emerged from our discussion.

When you think about a solution and implement it, you feel some sort of responsibility for - and maybe even pride in - in your choices. If you just had an AI minion do it for you, and it can redo it easily, however big the change might be, you don't care.

But somebody has to care.

Somebody has to care about solving the problem in a reasonable way, about making things that last, about quality.

Somebody has to have good taste.

AI doesn't.

"Ah, but that's where I as a human manager of AI agents come into the picture," I hear someone answer. Yes, perhaps, right now, or in the beginning, but will you keep doing that? Will your taste improve? Or will you become lazy and just accept what slop the AI spits out with less and less discrimination, as time goes by? Will you hone your skills and become better at what you do? I don't think so. The feedback loop isn't there, the gradual improvement of our common understanding of good taste is lost.

I don't want to be a manager of AI agents, and I think you don't want to either. Not if you want to develop good taste, learn, and become better at what you do.

Yes, a wise man once said that laziness is one of the great virtues of programmers - I think I'll add that it doesn't mean mental laziness, but rather laziness expressing itself in avoiding spending time doing repetitive and unchallenging tasks.


ยน While I prefer Emacs, it doesn't matter which one. (Although I will deduct points for having an IDE as your favourite, of course.)

Siamese Dream

๐Ÿ•—๏ธŽ - 2025-09-12

A couple of weeks ago I went to a Smashing Pumpkins concert.

This evening I have put Siamese Dream on the jukebox.

What a great album.

Cover of Siamese Dream by Smashing Pumpkins - showing a photograph of two smiling kids standing close together in monochrome/purple with an orange patterned background instead of sky

The Smashing Pumpkins, Vega, Copenhagen, Aug 19 2025 #live #music #copenhagen

๐Ÿ•ค๏ธŽ - 2025-08-23
Tour poster, showing James Iha, Billy Corgan, and Jimmy Chamberlin

Monday and Tuesday this week The Smashing Pumpkins played Vega in Copenhagen. I managed to buy (expensive) tickets to the Tuesday concert.

Myrkur was the support act, which at first glance seemed a little odd, genre-wise - but in the introduction of a song, she mentioned that Billy Corgan had helped write it, so that gave away the connection.

Smashing Pumpkins played quite a lot of songs from Mellon Collie & The Infinite Sadness, which of course was well received by the audience - it is hard to deny that they are some of the best songs by the band, and from that time.

The sound was okay to good, sometimes a little muddled, I found.

They showed that they can still make noise, especially Bodies was pretty thundering. There were also more pretty moments, like the quiet parts of Porcelina Of The Vast Oceans.

Surprising me - and maybe a lot of the audience - was a cover in the middle of the set, "Take My Breath Away"! Corgan sounds like Corgan, and that is not a very crooner-like voice, so that was a fun interlude.

We also got a quite heavy, thumping version of Ava Adore, which was nice.

At one point Billy Corgan explained that he had visited the free town Christiania earlier in the day, "We played there in 1992, do you remember that, James?", to which James Iha replied: "No, I don't" - heh :-)

After a good concert the band left the stage and did not return for any encores. Not that they were needed, but that took me a bit by surprise.

It was fun to see such a big band in such a relatively small venue (audience ~1550), and nice to see that they play some of the oldies currently.

Servers upgraded to Debian 13 (trixie) #debian

๐Ÿ•œ๏ธŽ - 2025-08-10 - ๐ŸŸŠ 2 - โ™บ 2
Debian 13 logo

Yesterday the Debian project released version 13 called trixie. I have been running it on my laptop since May, with the only problem being GnuPG.

After the release finished yesterday, I upgraded my two tiny virtual private servers - an arm64 at Hetzner and an amd64 at Akamai Linode - which went without a hitch.

Today it was time for my hat shelf home server, here are my notes:

  • On the VPS's ping as me stopped working until I installed the package linux-sysctl-defaults which was not installed for some reason.
  • The format for sources for apt has changed, easily updated with apt modernize-sources, for my local package reposity I had to fill in the Signed-By: line manually.
  • On the hat shelf server I had at some point removed the postgresql package, not sure why, so it didn't offer to upgrade the PostgreSQL cluster from version 15 to 17. Easily fixed by installing the package. It's a dump/restore so it took a while (~30 GB on disk).
  • The isc-dhcp-server package is running out of support, so I have to look into replacing it on my local network with something else. Works for now.
  • Dovecot took some work to get going, I had to update auth-system.conf.ext, 20-imap.conf, and 10-mail.conf - TLS/SSL and password related keywords had changed, and also how to say that email is stored in mdbox format, and I had to explicitly comment out the mail_inbox_path default line to allow mail to be delivered.
  • The configuration of bind had to be modified as I used views and a default include outside a view was not allowed.
  • Upgrading PostgreSQL did not do the materialized views I use for free text search, so I had to REFRESH MATERIALIZED VIEW search_index; a number of times.
  • Recompiled lantern, illuminant, sixpence, and sundial to make them run. Only had to adjust bogus version limits in .cabal-files. Happy about the update_* scripts I have!
  • feedbase-web runs, but can't compile, due to the Spock library, it seems, so I will have to rewrite it to use twain instead.
  • Had to install a newer version of weewx, because the version I was using complained about some Python six.codes library missing.

Pretty smooth sailing, well done everybody contributing to Debian!

Lille langebro

Today

Quantum physics (125).

Last men landed on the moon (so far) (53).

Wednesday

Wright brothers took off (122).

Stine Sjรธrslev Kelsรฅ (50).

Thursday

Perl 1.000 released (38).

Saturday

Apple buys NeXT (29).

2025-12-22

Ramanujan (138).

Winter solstice.

2025-12-23

Vincent van Gogh cut off his ear (137).

2025-12-24

Jesus (2024).

2025-12-25

Isaac Newton (383).

2025-12-26

Mary Somerville (245).

Charles Babbage (234).

Sonja Rindom (121).

Mother Meera (65).

2025-12-28

Linus Torvalds (56).