December Adventure

So I felt I couldn’t really bring myself to do Advent of Code this year since I have more than enough other things to do (and watch and play) and with work and the kids, it’s always pretty miserable to keep up.

I saw this thing called December Adventure though and that fits in nicely with my current push to release a major update for Cuppings. If I’m going to be programming until late this month, then I’d prefer it to be on something that I can release.

I can’t promise that I won’t do any AoC (Factor is looking mighty cool) but I won’t force myself to do anything. With that, let’s get going.

1/12

I started working on the map view which clicking around looked like it could be really annoying. I found some dead ends and was afraid I’d have to hack in Leaflet support myself but I found a dioxus example hidden in the leaflet-rs repository.

Yes, I’m writing this website in Rust/WASM, why do you ask?

That example required a bunch of fiddling with the configuration and a couple of false starts, but now I have a vanilla map view.

I can say that I’m amazed that in this ecosystem 1. an example exists 2. that example works 3. it works in my project with a bit of diffing and 4. it seems to do what I need.

I raised a PR to the project to advertise this example on its README just like it does the others so that others wouldn’t have to search like I did. That PR got merged:

https://github.com/slowtec/leaflet-rs/pull/36

2/12

Today I’ll see if I can tweak the map view to show the location of the cafe we tapped and get things to a point where I can commit the change.

To do this I need to figure out how to pass information along to a router when we tap a venue. That should be easy enough but the Dioxus documentation is between 0.5 and 0.6 now and a lot of it is broken.

A tip from the Discord said I need to put the data into a context from a parent and then get it out again in a child. It’s a bit roundabout and required some refactoring, but it works.

Done on time even for a reasonable bed time.

3/12

Turns out my changes from yesterday did not make it to the staging server. I’ll fix that and manually run the job again.

That’s these annoying wasm-bindgen version errors that keep happening and that require a reinstall of this: cargo install -f wasm-bindgen-cli --version 0.2.97 and the dioxus-cli. Dioxus which by the way is preparing its long awaited 0.6.0 release.

Yes, I build this on the same Hetzner box that hosts it. So here you go: https://staging.cuppin.gs

Other than that not that much will happen today since I spent most of the evening noodling around with Factor (despite my intention not to do any weird programming). It’s a nice language that’s very similar to Uiua which I tried out a while back but not being an array programming language makes it feel somewhat more ergonomic.

4/12

I can’t describe how nice it is to wake up and not have to deal with a mediocre story line involving elves and try to find time to attack a programming problem.

After today, I’m going to need that quiet morning, because I spent until 01:30 debugging an issue: Going to a detail view from the frontpage worked, but loading a detail view directly would throw an error.

There were two issues at play here:

Leaflet maps don’t deal well with being created multiple times so either we have to call `map.remove() or we have to check whether the map has already been created and keep a reference to it somehow.

I solved it by pushing the map into a global variable:

thread_local!(static MAP: RefCell> = RefCell::new(None));

These are Rust constructs I would normally never use so that’s interesting. More interesting is that they work in one go and that they work on the WASM target.

Then the error was gone but the page was blank. Not entirely sure what was happening I poked at the DOM to see all the map elements there but simply not visible. Turns out that because of the different path, the path for the stylesheet was being added to the URL like this: http://127.0.0.1:8080/venue/176/main.css

It just has these two lines:

#map {
    width: 100%;
    height: 100vh;
}

But without a height the map is invisible.

Both issues are solved but not committed. I’ll see tomorrow whether I’m happy with the solution and how to package this up. Also I’m not sure how main.css is being served on production and whether the same fix will work there.

5/12

I couldn’t help but noodle on Advent of Code a bit. Here’s my day 1 part 1 in Factor: https://github.com/alper/advent-of-code/blob/main/2024/day-01/day-01.factor

I like Factor the programming language. It’s like Lisp or Haskell but without all the annoying bits.

The environment that’s provided with it, I’m not so keen about. It’s annoying to use and has lots of weird conventions that aren’t very ergonomic.

6/12

I’ve been bad and I’ve finished part 2 of day 1 of the Advent of Code: https://github.com/alper/advent-of-code/blob/main/2024/day-01/day-01.factor#L27

Not so December Adventure after all maybe. I’ll promise I’ll finish the mapping improvements I was working on tomorrow.

7/12

Went on my weekly long bike ride. Then in the evening I didn’t have that much energy for programming other than finishing Advent of Code day 3 part 1: https://github.com/alper/advent-of-code/commit/0a74c38e7641141e10b4c48203c9e414cc492e1c

(I looked at day 2 part 2 but that just looked very tedious.)

8/12

Got in a ton of commits on Cuppin.gs today. After fixing the map, I wanted to see what would happen if I would add all 2000 markers to the map.

Performance seems to be doable but this is probably not ideal for a webpage. Dynamically rendering the venues is something for later. For now I can probably get away with filtering for the 100-200 nearest locations by distance and dumping those into the map view.

Now I’m back debugging Github Actions. I’m splitting up the build and deploy of the backend and the frontend into separate actions. Compiling dioxus-cli takes forever which is a step I hope I can skip with cargo-binstall.

Iterating on Github Actions takes forever and there really doesn’t seem to be a better way to develop this or a better CI solution that everybody is willing to use.

Renaming half a street

An interesting article to read about how the city botched renaming the Manteuffelstraße to Audrey-Lord-Straße. I cycle past this street every day and I don’t think it’s a bad change. Unfortunately, they’ve done it in such a bad way that it’ll poison every person who hears about it against the very concept of government:

  • They failed to notify the people living there until after the change had already passed (incompetent!).
  • They decided to only rename part of the street (insane!).
  • Renaming part of the street forces the street numbers to be re-allocated (insane!).

„Im Nachhinein ist das eine ­gute Frage“, sagt Werner Heck von der ­Bezirksverordnetenversammlung (BVV) Friedrichshain-Kreuzberg.

Werner Heck‘s statements are a good argument here for abolishing the entire concept of the BVV. If they couldn’t even be bothered to check-in on the implementation of one of their more material and prestigious measures, then what are they good for?

Heck sagt, es sei „nicht optimal“ gewesen, dass die involvierten Verwaltungsabteilungen „nicht miteinander gesprochen“ hätten.

This makes it clear that it is not uncommon for the Berlin administration to do things without talking to other departments. This is the way you would work, if you’re mentally entirely dead and checked out.

Das Bezirksamt erklärt, das „komplexe Verfahren“ solle künftig ressortübergreifend organisiert werden.

This sounds ‘good’ to the average German but it will in no way prevent these kind of problems from happening because the issue is not one of process or tactics, but one of culture.

All of these were unforced errors and you can ask yourself maybe they were actually intended to make a mockery of the entire process by a civil service that is politically opposed or too lazy to do any real work.

https://www.faz.net/aktuell/gesellschaft/menschen/wenn-die-umbenennung-von-strassen-in-berlin-schief-geht-ich-kann-mir-nicht-mal-eine-pizza-bestellen-110102184.html

GIFT

Watched “Evil Does Not Exist” as GIFT, the recut and rescored (silent) version performed live by Eiko Ishibashi at HAU1.

This has a shorter runtime than the movie because a lot of fluff is cut out and we are only left with a very summary story. That is a good choice and I can’t say the movie suffers from it very much even though this is version is very much its own thing (i.e. not a narrative movie).

Ishibashi-san is on stage and directs the musical soundtrack while occasionally accompanying the movie on her flute. From the distance it was very hard to tell what she was doing or even what sounds she was producing on top of the soundtrack.

Musically it’s a lot of the soundscapes with the main theme interspersed at various key junctures. We don’t get to learn anything more about the ending.

Review at Letterbox

Love having the kids be off school every 6 weeks or so which means we get a week of everybody adjusting to them being at home and then another week of adjusting them being back at school. All thanks to the trash tier school logistics of Germany.

Reckoning with the Greens

After some occasional brushes with party politics and reading up on the minimal political agency that we foreigners get here, I dove in. The rise of right-wing sentiment seemed to be a good reason to become a member of the Greens just like I imagine it did for a number of people. Much good that did do if you see the continued rise of that sentiment and this Green government all but enabling right-wing parties with their politics of austerity.

I rescinded my Green Party membership a couple of months ago because of irreconcilable disagreements with their politics. Also because I don’t think they’re effective even at the things they want to do. That move put me way ahead of the Green youth wings many of whom recently exited the party for similar reasons and with a lot of fanfare.

Politics

A lot of my beef with the Greens (though by no means all of it) is for their hypocrisy when it comes to the Palestine question.

I don’t really have a stake in the Israel-Palestine conflict. I know more Israelis than Palestinians and get along with them fine. I’m opposed against theocratic movements and governments of all backgrounds. Still, in this conflict it is obviously apparent what is right and what is wrong and it has been obvious for decades.

This topic is too big to treat in whole and I hope there will be hundreds of reckonings of the past year in German politics at some point. I’ll just post my receipts and explain why they made the Green Party morally repugnant to me.

Cem Özdemir

Özdemir quotes Golda Meir at an Israel Solidarity event

I saw Özdemir in this video with many other high ranking German politicians quote Golda Meir saying: “Peace will come when the Arabs will love their children more than they hate us.” This is a vile bit of racism that should be unacceptable but to which nobody batted an eye back then.

Özdemir now is the mostly useless minister for agriculture in this Green government and his political views have not improved.

Baerbock

https://twitter.com/Strack_C/status/1735629355668173297

Baerbock sat here next to the person responsible for spreading IDF propaganda in Germany which you can understand consists mostly of lies and excuses for war crimes. Her fans will make lots of excuses for this but the optics of being this chummy with such a vile human being do not become any less terrible.

Baerbock now is the foreign minister in the current German government where her already questionable and empty platform of “feminist foreign policy” has devolved to the point where she is making passionate pleas in favour of war crimes in German parliament.

https://twitter.com/tparsi/status/1846186196419924294

Parliament

https://twitter.com/hahauenstein/status/1771455044098871704

The Green parliamentary fraction invited and posed with Daniel Ryan Spaulding, a comedian who’s made a name for himself now with increasingly racist anti-Palestinian bits.

Habeck

Habeck, the only functional politician in the German government, posted this sermon relatively quickly after the attacks. It has been much praised by mainstream Germany but every Palestinian and Arab listening to it will hear: “You are second class citizens. Your grievances are not real. You do not belong here.”

I didn’t think back then it was smart to put out a message alienating a sizeable minority in your country. I think I’ve been proven right.

Party

What the of the Green Party members themselves?

Inside the party itself on this topic I’ve seen mostly silence and a significant number of statements that would not be out of place in the AfD.

The Green youth wings who left the party did so because of (valid) political disagreements with the party establishment but none of them even once mentioned Palestine in the exit statements.

Party Membership

I don’t think party membership is a thing for most people. There are power dynamics at play which are the same in the Greens as they are everywhere else. In every party there are two classes of members:

  • Career politicians who have decades of experience and relationships in the party. They run everything.
  • Ordinary members who are there to volunteer at the local levels and support the party materially with their time or money.

These two classes have almost no interaction with each other. The mechanisms of inner party democracy (and pretty much any functional organisation) are setup in such a way that ordinary members can’t bother the people doing the “actual work”.

So what is the point of being a member if you don’t have time or money to give?

I would answer that for me there is no point in party membership. I don’t get anything out of it. I may keep voting for the Greens (for lack of better alternatives) and support them in one way or another, but I don’t need to be a member to do either of those things.

Maybe being a party member will be worth it for others who have more to give or who stand to get more out of it. That is a calculation that everybody needs to make for themselves.

Wanted to show the kids some chiaroscuro for their art class about light and dark tomorrow and ran through some of the all time greats from Caravaggio. They were particularly impressed by Holofernes being beheaded.

Always stunning to see how good these paintings are and a bit sad for how long it’s been since I saw one for real. But Sanssouci has the picture of Doubting Thomas so that can be fixed.

https://www.artrenewal.org/artists/caravaggio/589

Krasse Links looks like yet another collection of links but the German wall of text notwithstanding, it’s a remarkable act of curation and contextualisation. Remarkable and unique for sure in Germany.

There are very few people here who have the desire and skills to be able to look beyond the borders, beyond the Tellerrand, and who feel that what the German state and establishment press and media serve you is simply not good enough. I’d be hard pressed to suggest anything at the same level as what Michael Seemann here and any German interested in the intersection of technology and politics would be well served to read this newsletter.

Waarom ik geen ID-Check kan gebruiken

Met een nieuwe identiteitskaart of paspoort die je in het buitenland krijgt (als je niet meer in Nederland woont), kun je niet meer ID-Check van DigiD gebruiken.

Ik vroeg me af waarom dat was en kreeg dit antwoord:

Identiteitsbewijzen die in het buitenland worden uitgegeven, worden door de Rijksdienst voor Identiteitsgegevens (RvIG – uitgever van de Nederlandse identiteitskaart en paspoort) niet in de Basisregistratie Personen (BRP) geregistreerd. DigiD gebruikt de BRP tijdens de ID-check om te controleren of het identiteitsbewijs (ID) een geldig ID is dat bij die gebruiker hoort. Dat kan dus niet wanneer het ID-bewijs in het buitenland is uitgegeven. Om deze grote groep mensen in het buitenland toch te helpen, controleert de DigiD app tijdens de ID-check het burgerservicenummer (BSN) in de chip van identiteitsbewijzen die in het buitenland zijn uitgegeven. En vergelijkt dan of dat overeenkomt met het BSN dat hoort bij het DigiD-account van de gebruiker.

De RvIG heeft om veiligheidsredenen besloten om per augustus 2021 het BSN uit de chip te verwijderen. Daarom is het niet meer mogelijk voor de DigiD app om het BSN uit te lezen van de chip en kan de gebruiker dit ID-bewijs dus niet meer gebruiken voor de ID-check. Het scannen van de QR-code op het ID-bewijs mag ook niet, want dat kan eenvoudig vervalst worden. De ontwikkelaar van de DigiD app is Logius.

https://www.rvig.nl/wijzigingen-nederlandse-identiteitskaart

https://www.rvig.nl/wijzigingen-model-paspoort-2021

Mijn BSN zit dus niet meer in de chip op het document wegens “veiligheidsredenen”.

Ondertussen heb ik een Europese digitale pas gekregen in Duitsland en kijk of ik die kan gebruiken voor online dienstverlening, maar zoals ze al zeggen: “Inlogmiddelen van andere Europese landen kunnen steeds vaker worden gebruikt om online zaken te regelen met Nederlandse overheidsorganisaties.”

Steeds vaker betekent in dit geval: bijna nooit. We zullen zien.