GrapheneOS / Android desktop mode

Tags:

This is my yearly look at Android Desktop Mode.

The idea is to use my phone, docked to a screen, keyboard and mouse as a remote desktop platform. The goal is to run a remote desktop through RDP, Citrix Workspace, or another such app, and use MS Teams and other stuff supplied by that remote machine/VM. That way, I would not need a laptop since my phone has enough power to do the RDP thing.

Phone version

Pixel 9 XL

GrapheneOS 20251225

Android 16

Setup 1 ("Amazon Basics")

Phone connected to Amazon Basics USB-C docking station with HDMI display

Screen gets recognized and added (1600x900 or 1920x1080 resolution), a taskbar shows up at bottom, but no tasks other than Camera can be launched from it. After the screen lock activates, the taskbar is gone. Mouse works, keyboard not tested (?!). Taking a screenshot of the Android Desktop is not possible.

Setup 2 ("HP")

Phone connected to HP USB-C docking station with HDMI display.

What works in Android 16

HP: Desktop appears on HDMI screen, mouse and keyboard work. Taskbar at the bottom of the HDMI screen. Remote desktop works and displays. Phone-local apps and the remote desktop can live on the phone desktop and can be resized without problem.

What doesn't work in Android 16

HP: Screen resolution is weird. Smaller screen space, but pixel count seems to be full-width and then scaled down to smaller screen space.

Fennec HTML zoom is very weird and seems to orient itself on the phone-screen measurements, not on the HDMI screen measurements. Further debugging is needed.

External camera and microphone don't seem to work with the Citrix Workspace app.

My first Building Bricks MOC

Tags:

I built my first MOC using Lego-compatible Building Bricks (German: "Klemmbausteine"). I saw the inspiration and main baseline in a photo by a colleague on LinkedIn where they had built a model of our skyscraper office building. Having not played with Lego bricks for a long time, I gave in and tried to build something similar to the photo.

But first, the result:

MOC of Westend 1

For some reason, I did not remember the premier modeler, LDraw, so I went with the 3D builder offered by Mecabricks. The builder works fairly well, but you cannot save/export your model without signing up.

After being satisfied with my rebuilding after the photo, I manually created the CSV import for upload with MOC brick store. The upload failed to match discontinued parts with their replacements or unavailable colors, so I had to do some manual replacements in my CSV import. The import also did not allow for easy checking of which parts were unavailable, so I had to do the complete order manually, working from my CSV file instead of uploading the CSV file. The shipping was roughly as expensive as the blocks, but that's expected for something coming from China.

This ended up with me mis-ordering one brick type. Luckily I ordered one more than needed from every brick type so I still could make things work in the end and I am happy with the final product:

MOC of Westend 1 back

Tooling: git absorb

Tags:

My development workflow looks something like this

  • Implement feature 1
  • Implement another feature 2
  • Bug fixes for something in feature 2
  • Bug fixes for feature 1
  • More bug fixes for something in feature 2

This results in a git history like the above, which I then interactively rebase into

add Implement feature 1 squash Bug fixes for feature 1 add Implement another feature 2 squash Bug fixes for something in feature 2 squash More bug fixes for something in feature 2

The git absorb command automates part of the rebase by looking at the currently staged hunks and finding the commit that most recently changed lines in that hunk, and squashing that hunk in that commit:

git add app.pl -p # add the parts for feature 1 and feature 2 that don't overlap git absorb

Now playing: Silksong

Tags:

Silksong Logo

A classic Metroidvania, doing fights and exploring a vast area. They have a really interesting mix of music and bugs as a theme, where the music becomes more and more central throughout the progress of the story.

It's not easy at the start, but it is not super hard either. The difficulty ramps up a lot.

My main gripe is that there is no downwards attack - I kept on jumping / hitting on enemies below me, Super Mario style. That was, until I discovered that Attack+Down actually does a downwards attack.

The first three levels / maps were fairly easy. I'm now close to the second act, but each boss fight needs some training/repetitions to figure out the rhythm of the boss.

Played on:

  • PS4
  • Windows (Controller really recommended) Using a Steam Controller with GoG Silksong required launching the game from Steam.
  • Steam Deck (Windows GoG version via Heroic) Getting the Steam Deck controller to work with the Linux version of Silksong failed with the same symptoms as on Windows. Launching the Windows version through Steam -> Heroic -> Silksong worked and also made the controller buttons work. Weirdly enough, this is the version I like most. Both the PS4 version as well as the Windows+Controller version felt not as tight as the Steam Deck

Linkblog: Backing Up Spotify

Tags:

Anna's Library is Backing up Spotify.

This sounds interesting, not for the music but for the metadata they've also scraped. At least for the database schema and some kind of mildly universal track ID and genre association, this seems promising.

Also, this means a non-spotify version of Hitster is possible.