WTF is a Terminschleuder? (And why I built one)

One tech scene. A hundred event calendars. So I built a directory that puts community events on one map.

It started, as these things usually do, in a meeting.

Some time ago I sat down with folks from the GI, and at some point the conversation hit the topic that always comes up when people from different tech organizations end up in the same room:

“Wait, you also have your own event calendar?”

GI runs theirs. The ACM folks maintain theirs. The CCC chapters have wiki pages and mailing lists, RZL has their own thing, and every local group, hackerspace and Meetup has some iCal file on a WebDAV server from 2009.

Individually, most of them are well cared for. Collectively? It’s an archipelago. Every island nice and tidy, and mutually invisible.

I said out loud what everyone was probably thinking: GI, ACM, CCC, RZL and friends are, technology-wise, barely connected at all. We are one big tech scene that schedules itself in a hundred places at once.

Then I did the thing I usually do after saying something like that out loud. I built it.

Say hello to Terminschleuder.

Continue reading WTF is a Terminschleuder? (And why I built one)

Let your remote GPU power VSCode Copilot

Who is not dreaming of a virtually unlimited token budget to spend?

Unfortunately, most credit cards have rather hard limits.

So why not make use of that gaming computer sitting at home and turn it into your own AI inference server?

In this post, we will configure a Linux machine with an NVIDIA GPU to run vLLM and expose an OpenAI compatible API. We will then connect Visual Studio Code and GitHub Copilot to it, allowing Copilot Agent to use a model running entirely on our own hardware.

There are a few interesting lessons along the way, particularly around GPU memory, context windows and why a model that technically fits into VRAM might still not be a particularly good fit.

Continue reading Let your remote GPU power VSCode Copilot

Python Development in iCloud Drive on macOS: Why pip install -e Can Break

I recently tracked down a Python packaging issue on macOS that may also explain several development problems I had written off in the past as mistakes in my own setup.

The surprising part was that the problem was not really Python, pip, the virtual environment, or my pyproject.toml.

It was iCloud Drive.

Continue reading Python Development in iCloud Drive on macOS: Why pip install -e Can Break

Mr. Spock meets Pythagoras

Over Easter break, I did what probably counts as a very specific kind of relaxation: I disappeared into philosophy, AI, Docker logs, and GPU temperatures, and came back with something called PhiloGPT.

The question.

The original idea was not “let me build a platform.” It was much smaller and more personal than that. I wanted to explore a question that has been sitting in the back of my mind for a while: what happens when you treat dialogue itself as the interface for thinking? Continue reading Mr. Spock meets Pythagoras

The Architecture of Dependence: Personal Identity, Big Tech, and Europe’s Hidden Single Points of Failure

In 2022, a father took a photo of his toddler’s medical condition at the request of a doctor. The image was uploaded to Google Photos. Google’s automated systems flagged the content. His account was suspended. Law enforcement investigated and cleared him of wrongdoing. His Google account — containing years of personal data — was not restored [1].

This was widely discussed as a moderation controversy.

It was not only that.

It was an infrastructure event. Continue reading The Architecture of Dependence: Personal Identity, Big Tech, and Europe’s Hidden Single Points of Failure

Procrastinating by being busy optimizing

If I just had that perfect keyboard. It would make my workflow just so much better. Certainly I can invest some time to find the perfect one. (BTW, if you know me for a while, I had at least 20 keyboards in the last ten years)

Oh, and if I just had the perfect Headphones. It would make my workflow just so much more enjoyable.

Oh, and if I just had that perfect pen…

I think you got the point? There are two mechanisms working here:

  • Procrastination
  • Wanting mind

The procrastination part is certainly hitting very close to home for me. I am learning math, which to some part seems boring, and to some part is quite challenging. It is also a area of past struggles for me, which I try to evade.

And then there is the Wanting Mind. “If I just had” is a good indicator for this. There is a deep belonging inside me, to be recognized as a nerd. By having stuff. Also, there is a side which tells me “I deserve it”. Well, all of this, of course, is just some distraction from my fear of not being enough. Of me being an imposter.

Good thing, if I notice that. In that case, I can be aware and focus back on my math learning. However, sometimes that can consume several hours.
Then it’s worth writing a blog post about it.
To avoid going back to work.

Messing with local ports

Being able to develop stuff locally is certainly on of the points I love the most working with Azure and Python. Later, you can hyper-scale the shit out of your code, but you can also debug it first on your tiny machine.

if __name__ == '__main__':
    # This code only runs when executing the script directly (not on App Service)
    logging.info("Starting Flask app in local development mode")
    socketio.run(app, host='0.0.0.0', port=5000, debug=True)

This piece of code is probably run a thousand times every day by a thousand developers. However, it was quite difficult to find an easy answer on google for this:

OSError: [Errno 48] Address already in use: ('0.0.0.0', 5000)

Easy to understand what it means, like port 5000 is in use already. WTF? Who is running something on my machine???

Of course, me. Another PyCharm window or something. But no, not this time. Strange. `netstat to the rescue 🙂 Well, not on macOS.

For whatever reason it cannot show you ports in LISTEN, at least that I could find. But how can we figure it out? lsof can help us here:

lsof -i :5000
COMMAND   PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
ControlCe 650 trueal   10u  IPv4 0xa162a6f756348686      0t0  TCP *:commplex-main (LISTEN)
ControlCe 650 trueal   11u  IPv6  0x2c61017c47991be      0t0  TCP *:commplex-main (LISTEN)

WTF is a commplex? Another round of googling shows it belongs to AirPlay. So technically, ever developer on macOS should not be able to run the demo code?? So at least now you know, too, what is hogging your precious port 5000. You’re welcome.

WordPress Admin Panel extremely slow

Hosting a blog yourself is certainly one of the best things to do. Not only will you have full control of your data, but you will certainly learn a lot about technology along the way.

So today I decided to start writing a blog, once more, and hosting it myself. Here. Post 1.

But the /wp-admin/ panel is so painfully slow. The pages take up to six seconds to load.

But how can you figure out what is happening? I mean, sure, it could be my server. It’s just a Synology with a simple 4 core CPU.
But then, it’s just PHP?

So I found this nice plugin for WordPress, called Query Monitor. I will be visible in the top bar of the admin panel and show you exactly what is happening. And I found that:

cURL error 28: Resolving timed out after 3001 milliseconds

Seems like the admin panel is trying to connect to http://api.wordpress.org/translations/core/1.0/ and is running into a timeout.

Strange. Connecting via ssh and running a nslookup is also slow as hell. So it really seems, that the DNS lookup is somehow broken. In my setup, my router (a FritzBox) is causing the delay in DNS lookups.

Solution: Switching to public DNS servers 1.1.1.1 and 8.8.8.8 in the DSM settings, and problems all gone.

Next step: run a proper DNS caching server at home. I think it will be PiHole, but that’s another blog post 🙂