Archive for the ‘Webtechnology’ Category

No Comments

How to use AMD ROCM on Krackan Point / Ryzen AI 300 series

Tuesday, September 30th, 2025

While AMD’s ROCm platform promises powerful GPU computing on Linux, users often encounter frustrating and contradictory statements on their consumer hardware.

Is ROCM officially supported on any AMD APU? No, according to the official support matrix.

https://rocm.docs.amd.com/en/latest/compatibility/compatibility-matrix.html

Only discrete GPU cards are mentioned here.

Yes, according to other AMD sources, it is supported in preview on the new Strix Halo and other (high-end) Ryzen APUs, e.g. Strix Point / Krackan Point.

https://rocm.docs.amd.com/projects/radeon-ryzen/en/latest/index.html

Here is llamacpp-rocm

https://github.com/lemonade-sdk/llamacpp-rocm

In the past, I’ve run ROCM on a 4800U to try out LLMs. While offloading code to a rather small GPU, the integrated Vega of the 4800U, doesn’t necessarily make the LLM run faster, it does run quieter and is didn’t stress out the CPU so much, so besides speed, there are other benefits to be gained.

For that I wanted to try running llama.cpp with ROCm on a AMD Krackan Point laptop APU, a Ryzen 7 350 with an integrated 860M, with the same RDN 3.5 architecture as a Strix Halo.

Spoof ROCm support using HSA_OVERRIDE_GFX_VERSION

So, just try that ROCm version and spoof the GPU ID

To spoof your GPU ID is dead simple, simply set this environment variable: .HSA_OVERRIDE_GFX_VERSION

The iGPU ID of a Strix Halo is GFX1151.

The iGPU ID of a Krackan Point is GFX1152.

So with this workaround the only thing you have to do is download a working example for Strix Halo, and instead of running:

llama-cli -m model.gguf

You run:

HSA_OVERRIDE_GFX_VERSION="11.5.1"  llama-cli -m model.gguf

That’s all. Now you have ROCM running on a Strix Krackan laptop.

Running llama.cpp with ROCM (Ubuntu) on a Ryzen AI 7 350

The easiest way to run llama.cpp with ROCm support is to download a fresh builds of llama.cpp with AMD ROCm acceleration made by AMD:

Download the latest release:

wget https://github.com/lemonade-sdk/llamacpp-rocm/releases/download/b1066/llama-b1066-ubuntu-rocm-gfx1151-x64.zip
cd Downloads

Unzip the downloaded file

unzip llama-b1066-ubuntu-rocm-gfx1151-x64.zip -d llama-b1066-ubuntu-rocm-gfx1151-x64

Enter the dir

cd llama-b1066-ubuntu-rocm-gfx1151-x64

Mark llama-bench executable

chmod u+x llama-bench

Download a GGUf model

wget https://huggingface.co/unsloth/Qwen3-0.6B-GGUF/resolve/main/Qwen3-0.6B-Q5_K_M.gguf?download=true
llama-bench -m ~/Downloads/Qwen3-0.6B-Q5_K_M.gguf

It won’t run:

ggml_cuda_init: GGML_CUDA_FORCE_MMQ: no
ggml_cuda_init: GGML_CUDA_FORCE_CUBLAS: no
ggml_cuda_init: found 1 ROCm devices:
Device 0: AMD Radeon Graphics, gfx1152 (0x1152), VMM: no, Wave Size: 32
| model | size | params | backend | ngl | test | t/s |
| ------------------------------ | ---------: | ---------: | ---------- | --: | --------------: | -------------------: |
rocBLAS error: Cannot read ./rocblas/library/TensileLibrary.dat: Illegal seek for GPU arch : gfx1152
List of available TensileLibrary Files : 
"./rocblas/library/TensileLibrary_lazy_gfx1151.dat"
Aborted

Aha we forgot to override the GPU ID:

HSA_OVERRIDE_GFX_VERSION="11.5.1"  llama-cli -m model.guff

And now we’re running:

HSA_OVERRIDE_GFX_VERSION="11.5.1" ./llama-bench -m ~/Downloads/Qwen3-0.6B-Q5_K_M.gguf
ggml_cuda_init: GGML_CUDA_FORCE_MMQ: no
ggml_cuda_init: GGML_CUDA_FORCE_CUBLAS: no
ggml_cuda_init: found 1 ROCm devices:
Device 0: AMD Radeon Graphics, gfx1151 (0x1151), VMM: no, Wave Size: 32
| model | size | params | backend | ngl | test | t/s |
| ------------------------------ | ---------: | ---------: | ---------- | --: | --------------: | -------------------: |
| qwen3 0.6B Q5_K - Medium | 418.15 MiB | 596.05 M | ROCm | 99 | pp512 | 863.83 ± 86.23 |
| qwen3 0.6B Q5_K - Medium | 418.15 MiB | 596.05 M | ROCm | 99 | tg128 | 43.32 ± 1.89 |
build: 703f9e3 (1)

For Ubuntu, you have to do one more step to allow a toolboc container to use you’re GPU for ROCM. For that you have to create udev rule:

https://github.com/kyuz0/amd-strix-halo-toolboxes?tab=readme-ov-file#211-ubuntu-users

cat /etc/udev/rules.d/99-amd-kfd.rule:

SUBSYSTEM=="kfd", GROUP="render", MODE="0666", OPTIONS+="last_rule"
SUBSYSTEM=="drm", KERNEL=="card[0-9]*", GROUP="render", MODE="0666", OPTIONS+="last_rule"

Is it worth running ROCm on Strix Point, Krackan Point

Not really. It isn’t faster. Vulkan is doing a better job at the moment.

Llama.cpp ROCM vs Vulkan Benchmarks vs CPU on Ryzen AI 7 350

| model | size | params | backend | ngl | test | t/s |
| ------------------------------ | ---------: | ---------: | ---------- | --: | --------------: | -------------------: |
| qwen3 0.6B Q5_K - Medium | 418.15 MiB | 596.05 M | ROCm | 99 | pp512 | 863.83 ± 86.23 |
| qwen3 0.6B Q5_K - Medium | 418.15 MiB | 596.05 M | ROCm | 99 | tg128 | 43.32 ± 1.89 |
| qwen3 0.6B Q5_K - Medium | 418.15 MiB | 596.05 M | RPC,Vulkan | 99 | pp512 | 1599.95 ± 14.06 |
| qwen3 0.6B Q5_K - Medium | 418.15 MiB | 596.05 M | RPC,Vulkan | 99 | tg128 | 80.84 ± 2.81 |
| qwen3 0.6B Q5_K - Medium | 418.15 MiB | 596.05 M | RPC | 99 | pp512 | 406.69 ± 0.21 |
| qwen3 0.6B Q5_K - Medium | 418.15 MiB | 596.05 M | RPC | 99 | tg128 | 108.54 ± 1.82 |

Running the small Qwen3 model on CPU is surprisingly the fastest in token generation, but prompt processing is much faster on Vulkan/GPU.

Sources:
https://github.com/kyuz0/amd-strix-halo-toolboxes
https://llm-tracker.info/_TOORG/Strix-Halo
https://github.com/lemonade-sdk/llamacpp-rocm/

No Comments

How to update/upgrade your Apple Mac Mini M4 over ssh

Monday, September 22nd, 2025

The Mac Mini M4 in its basic configuration is a very affordable and efficient device for a small local server. Its 16GB is a significant improvement over the former 8GB of the M3, and a single core of the M4 Mini is as fast as any other Mac’s single core. It just has fewer cores than other models

Power-efficiency is really great, it sips around 3-4 W when idle which is comparable to a Raspberry Pi.

Using the Mini M4 as a server normally means you have only a network cable attached, but no screen, keyboard, or mouse.

To update your Mac Mini M4 server via SSH

To get a list of available updates:

softwareupdate -l

To update all the software:

sudo softwareupdate -i -a

If you attempt to upgrade your OS to a new version this way, for example Tahoe, you’ll get this output

sudo softwareupdate -i -a
Software Update Tool


Finding available software
Downloading macOS Tahoe 26
Password:


Downloaded: macOS Tahoe 26

It doesn’t install the available upgrade.

To actually upgrade, you need to pass -R, this causes your M4 to restart and  upgrade on boot.

sudo softwareupdate -i -r -R

Now, the M4 will restart and upgrade. This will take a couple of minutes.

How to check if a Mac Mini M4 is running macOS 26 Tahoe

To check if the Mac Mini M4 is upgraded to macOS 26 Tahoe, run uname -a and verify the output:

Darwin mini.local 25.0.0 Darwin Kernel Version 25.0.0: Mon Aug 25 21:12:01 PDT 2025; root:xnu-12377.1.9~3/RELEASE_ARM64_T8132 arm64

No Comments

The SHIFTphone 8.1 has 18 replaceable modules, 13 DIY

Sunday, September 21st, 2025

Most people are familiar with the Dutch Fairphone as a initiative in sustainable smartphone design. The SHIFTphone 8 represents a comparable commitment to longevity and sustainability, designed in Germany—though, like the Fairphone, it is manufactured in China.

While both the SHIFTphone 8 and the Fairphone 5 feature the same QCM6490 octa-core processor (based on the Snapdragon 778G, but with extended software support) and offer a decade of software support, the SHIFTphone 8 provides several enhanced specifications:

  • 12GB internal memory LPDDR
  • 256 or 512GB internal storage UFS 3.1
  • IP66 dust and weather resistance
  • Wireless charging capability (Qi-Standard)
  • 120 Hz refresh rate display
  • Fast charging: Power Delivery 3.0, Quick Charge 4
  • Custom key (left / configurable)
  • Hardware kill-switches for cameras and microphone

In addition, the SHIFTphone 8.1 offers a significant improvement in modularity, with 18 replaceable components—compared to the Fairphone 5’s nine—further reinforcing its focus on repairability, sustainability, and extended device lifecycle.

SHIFTphone 8.1 replaceable modules

SHIFTphone 8.1 replaceable modules

The 18 replaceable modules of the SHIFTphone 8.1

A small screwdriver is included.

  1. Amoled Display (1080 x 2400 Pixel) 6,67″, 120 Hz Gorilla Glas
  2. Camera Module 1 (main ) 50Mpx, Sony IMX 766
  3. Camera Module 2 (wideangle) 50MPpx, Sony IMX 766
  4. Camera Module 3 (front/selfie), Sony IMX616 32 MPx, pixel binning 8Mpx
  5. Battery ( 3820 mAh)
  6. eSIM
  7. Fingerprint sensor (front under the display)
  8. Proximity sensor  & Light sensor
  9. Vibration motor
  10. USB-C port (USB 3.2 (Gen1, 5Gb/s) type-C)
  11. Sub-board
  12. Ear speaker
  13. Main speaker
  14. Mainboard
  15. SIM card slots (2x nano, or 1 nano and 1 eSIM nano)  & SD card slot (Micro-SDXC up to 2TB)
  16. Antenna module
  17. Keyboard unit (Volume and power keys)
  18. Custom key (left key)

The first 8 components can be replaced with relative ease, you should be able to do that at home (DIY).

A bit more difficult to replace are the modules  9-13, still you should be able to do that yourself if you have some experience and some basic mechanical knowledge.

The final five modules are more intricate and require specialized expertise. You’re advised to attend to SHIFT’s own workshop or another certified, specialized service provider .

You can find the video-guides here: https://www.shift.eco/shiftphone-8-guide/tutorials/

No Comments

How to insert a timestamp in Gnote by keyboard

Tuesday, September 9th, 2025

Gnote is a very handy note taking app you can use on a Linux Desktop.

It has some nice keyboard shortcuts, but unfortunately Gnome is moving out from showing the shortcuts by default on every menu item, which to me was the only way to learn them.

Because when you open the menu everytime by mouse, you see immediately how you can do it faster by keyboard.

Not showing the shortcuts by default is designed for touchscreens or for mobile devices, but the default overview of shortcuts does have a big omission.

Plugin shortcuts are not displayed!

So how do you know you have to type CTRL + D to get the date.

I’m using Linux long enough to know that there was a shortcut for inserting the date/timestamp. BTW you need to enable the plugin for inserting the timestamp, but I forgot which shortcut to use.

I tried to look it up, but it’s not in the shortcut overview. How nice and handy.

Luckily I found this bug report, which explains that the shortcut is CTRL + D. (Which also more often is a shortcut for DELETE in other programs, so be careful)

Let’s wrap it up.

The shortcut for inserting the timestamp/date in Gnote is CTRL + D. Don’t forget to enable the plugin before in Preferences -> Plugins -> Insert Timestamp, and probably set your default format in the preferences of the plugin.

I always think that the date should be sortable by default so 2025-09-09 11:56 is the correct format.

No Comments

Open source coding using your Raspberry Pi as a CoPilot/AI assistant in ZED

Sunday, February 2nd, 2025

In this blog, we’ll delve into the benefits of using AI in the open source coding-app Zed and explore how it can help to write better and faster code with the assistance of a Raspberry Pi.

For AI we don’t use ollama, but we run Llamafile on the Raspberry Pi.

Llamafile is created by, to make LLMs much more accessible to both developers and end users. Also it’s often faster than Ollama, and has a more performant server. That’s important when unning a LLM on a rather low-end Raspberry Pi 5.

So ssh into your Pi5 and startup Llamafile:

dev/llamafile/Llama-3.2-1B-Instruct.Q6_K.llamafile --server --v2 -l 0.0.0.0

To make ZED use your Pi, add this to your settings file CTRL+,:

The key step is to set the name to openai, and add an api_url where you set your local endpoint.That way it will use the openai API on a local endpoint instead of the cloud.

“language_models”: {
“openai”: {
“api_url”: “http://raspberrypi.local:8080/v1”
}
},
“assistant”: {
“version”: “2”,
“provider”: “openai”,
“type”: “openai”,
“default_model”: {
“provider”: “openai”,
“model”: “rpi”
}
}

For the rest just add a bogus key in the Assistant configuration for ZED openai, and you’re ready to go.

Llama-3.2 is running fine on a Raspberry Pi 5, it’s a good tradeoff between quality and speed for lower-end hardware. You could also try Qwencoder2.5, that is a bit slower though.

Just run another Llamafile on your Pi, there is no need to reconfigure the settings in ZED. That’s is the fun and easy of this solution.

No Comments

Yes, Google did it, they went REALLY UGLY with forcing JavaScript

Sunday, January 26th, 2025

About 10 years ago, we warned about the danger that the internet will become a privacy unfriendly place, due to bad behavior of Big Tech.

We more or less predicted that time, that Javascript would become required.

https://dev.webonomic.nl/breaking-the-bad-internet
https://dev.webonomic.nl/breaking-the-bad-pushing-a-worse-internet-part-ii

And now in 2025, 10 years later, Google just did that.

So when you visit an URL you get zilch info, a blank page, you need to give Google a permission to execute unknown code on your computer to see any content. That is of course breaking the internet. What is the use of an url when there is no content?

https://www.google.com/search?hl=en&q=why%20is%20Javascript%20required

<noscript><style>table,div,span,p{display:none}</style>
 <meta content="0;url=/httpservice/retry/enablejs?sei=xXXX_XXXxx" http-equiv="refresh">
 <div style="display:block">Please click <a href="/httpservice/retry/enablejs?sei=xXXX_XXXxx">here</a> if you are not redirected within a few seconds.</div>
</noscript>

 

Yes there is a collection of scripts, but that is no information.

Please read our older posts:

Everybody that is surprised by the latest developments of Trump 2.0, Twitter/X and Facebook dropping any form of self-control/fact-checking on the news nonsense they publish or the lies they spread, it has never been the goal of Social Media firms to spread or publish info, the real goal is to collect (personal) data.

So lowering the amount of info is not what they want, the want to spread more info, because then they can sell more adds, and the more controversial the info is the more response you get etc. The more adds you can sell.

So why the big investment in AI?

Create more info ->  spread more info/nonsense -> sell more adds -> collect more data.

Remember what we wrote 10 years ago:

What social media buttons really mean, is: please share your social network, tell us the names of all your friends and please share your online presence with us.

A “JavaScript wall” is an extreme version of a “cookie wall.”

Scripting can form an integral part of an application. Web browsers that do not support scripting, or that have scripting disabled, might be unable to fully convey the author’s intent.

So when the Internet guidelines clearly state:

If it is not possible to make the page usable without scripts, provide a text equivalent with the NOSCRIPT element, or use a server-side script instead of a client-side script, or provide an alternative accessible page as per checkpoint 11.4.

https://www.w3.org/TR/WAI-WEBCONTENT/#gl-new-technologies

https://www.w3.org/TR/WAI-WEBCONTENT/#tech-alt-pages

Google had a usable page without Javascript, they just killed it. All because gathering user info is more important then serving info. Think about that.