Stochastic terrorist and Y Combinator CEO Garry Tan -- who told SF supervisors to "die slow, motherfuckers" and unleashed a mob sending them death threats -- is hosting a "fireside chat" where noted vampire and fascist Peter Thiel will explain his "political theology".

Jesus Fucking Christ:

Christians in Tech, it's time to get together in SF

Join us on Cinco de Mayo for "Holy" Guacamole at my home in SF for a happy hour serving tacos and tequila while DJ Canvas is spinning his famous remixed worship beats. During the second hour, Peter Thiel will lead a fireside chat to discuss what he calls "political theology" - the overlap between theology and various other fields like civil society, history, economics, and morality.

It's absolutely wild that "remixed worship beats" is the least horrifying thing in that paragraph.

Previously, previously, previously, previously, previously, previously, previously.

Posted Mon Apr 15 01:25:11 2024 Tags:

Not all Palestinians are Muslims. Israeli soldiers came to arrest unarmed Christian Palestinian at home, at night, in the West Bank.

They are planning to hold her in prison indefinitely, with no official charges and therefore no trial. However, there is suspicion that she in prison for political organizing.

Posted Mon Apr 15 01:11:23 2024 Tags:

*Network of "ghost roads" paves the way for leveling Asia-Pacific rain forests.*

Posted Mon Apr 15 01:11:23 2024 Tags:

Iran launched 100 drones, or more, in attacks on Israel. This was a response to an Israeli attack on an Iranian consulate in Syria.

Israel and Iran have been, formally, at war for decades. Can anyone point me at info on how and when that state of war started?

Here is more background.

Posted Mon Apr 15 01:11:23 2024 Tags:

The UK proposes to use facial recognition systems on important streets, including mobile vans, to find people wanted for arrest. And not only for heinous crimes — even shoplifters would be sought this way.

Posted Mon Apr 15 01:11:23 2024 Tags:

In Braga, Portugal, April 17th, Richard Stallman will give a talk, Free Software and Freedom in a Digital Society.

Posted Mon Apr 15 00:30:45 2024 Tags:

It is early spring, and the US Midwest is already suffering from wildfires.

Posted Sun Apr 14 23:30:51 2024 Tags:

*Colombian Amazon deforestation surges as armed groups tighten grip.* The groups started as rebels fighting a repressive government, but now they use the forest as a hostage. Meanwhile, the erstwhile provincial rebel group made peace and disarmed, so it is no longer there to keep the others down.

Posted Sun Apr 14 07:05:20 2024 Tags:

*Belgium investigates alleged Russian payments to MEPs.*

*Belgian [prime minister] says Russia is trying to influence forthcoming elections to weaken European support for Ukraine.*

Posted Sun Apr 14 07:05:20 2024 Tags:

*Mexico calls on UN to expel Ecuador over embassy raid as tensions soar.*

To legitimize the practice of invading other countries' embassies would further destabilize what remains of the conventions and rules of international relations.

That may have helped arrest a crook this time. In London, 10 years ago, it would have enabled the UK to grab Julian Assange sooner. But overall, these specific effects will average out to zero; what will remain is less stability.

Posted Sun Apr 14 07:05:20 2024 Tags:

(satire) *God To Delete Several Million Humans Due To Inactivity.*

Posted Sun Apr 14 07:05:20 2024 Tags:

Embeddable Game Engine

Many years ago, when working at Xamarin, where we were building cross-platform libraries for mobile developers, we wanted to offer both 2D and 3D gaming capabilities for our users in the form of adding 2D or 3D content to their mobile applications.

For 2D, we contributed and developed assorted Cocos2D-inspired libraries.

For 3D, the situation was more complex. We funded a few over the years, and we contributed to others over the years, but nothing panned out (the history of this is worth a dedicated post).

Around 2013, we looked around, and there were two contenders at the time, one was an embeddable engine with many cute features but not great UI support called Urho, and the other one was a Godot, which had a great IDE, but did not support being embedded.

I reached out to Juan at the time to discuss whether Godot could be turned into such engine. While I tend to take copious notes of all my meetings, those notes sadly were gone as part of the Microsoft acquisition, but from what I can remember Juan told me, "Godot is not what you are looking for" in two dimensions, there were no immediate plans to turn it into an embeddable library, and it was not as advanced as Urho, so he recommended that I go with Urho.

We invested heavily in binding Urho and created UrhoSharp that would go into becoming a great 3D library for our C# users and worked not only on every desktop and mobile platform, but we did a ton of work to make it great for AR and VR headsets. Sadly, Microsoft's management left UrhoSharp to die.

Then, the maintainer of Urho stepped down, and Godot became one of the most popular open-source projects in the world.

Last year, @Faolan-Rad contributed a patch to Godot to turn it into a library that could be embedded into applications. I used this library to build SwiftGodotKit and have been very happy with it ever since - allowing people to embed Godot content into their application.

However, the patch had severe limitations; it could only ever run one Godot game as an embedded system and could not do much more. The folks at Smirk Software wanted to take this further. They wanted to host independent Godot scenes in their app and have more control over those so they could sprinkle Godot content at their heart's content on their mobile app.

They funded some initial work to do this and hired Gergely Kis's company to do this work.

Gergely demoed this work at GodotCon last year. I came back very excited from GodotCon and I decided to turn my prototype Godot on iPad into a complete product.

One of the features that I needed was the ability to embed chunks of Godot in discrete components in my iPad UI, so we worked with Gergely to productize and polish this patch for general consumption.

Now, there is a complete patch under review to allow people to embed arbitrary Godot scenes into their apps. For SwiftUI users, this means that you can embed a Godot scene into a View and display and control it at will.

Hopefully, the team will accept this change into Godot, and once this is done, I will update SwiftGodotKit to get these new capabilities to Swift users (bindings for other platforms and languages are left as an exercise to the reader).

It only took a decade after talking to Juan, but I am back firmly in Godot land.

Posted Sat Apr 13 22:55:59 2024 Tags:

Poor Taylor, though! Can you imagine having to spend that much time on an airplane? She suffers for our sins.

Posted Fri Apr 12 00:58:33 2024 Tags:

Let’s say that you’re the purveyor of some toxic foodstuff and want to keep selling more of it. To be fair, the foodstuff you’re selling isn’t always toxic: It’s fine in small quantities, and under some circumstances can be a lifesaver, but in large quantities it’s demonstrably bad for almost everyone. You being a sociopath view ruining the health of the entire society you’re a part of as less important than your sales profits and want to generate some kind of PR campaign to cover for the evils of your product. How do you go about doing it?

A standard practice of toxic people is to preemptively accuse someone else of doing exactly what it is that they’re doing to try to make it look like the other party is making an identical counter-claim out of retribution when they finally get busted. It can be truly comical how specific these accusations can be, to the point of giving away details of their own misdeeds which others haven’t even looked into yet. In our foodstuffs example, what would you want to demonize? You’d want to find some other foodstuff which is critically important to health but you could plausibly claim is bad in large quantities. On top of that, you want to demonize something which won’t fight back. Something which has magically gone from a bottleneck in the population of the human race to so cheap that there’s no industry of producers or lobbying group in charge of promoting it.

Thanks for reading Bram’s Thoughts! Subscribe for free to receive new posts and support my work.

You may by now have guessed that I’m talking about sugar and salt. Sugar is of course at the core of the obesity epidemic. Salt on the other hand has gone from something whose trade was a big part of the economy of all inland societies to essentially free thanks to improvements in transportation technology. While in the short run measuring increase in GDP or ‘value creation’ can be a good measure of how well off society is as a whole in some cases it can miss the big picture because it isn’t a direct measure of the ‘value’ of what’s being created, it’s a measure of the friction which is still left. If some new technology is so good that instead of the size of the market with the amount friction left going up proportionately it makes the amount of friction go to near zero then optically the economic measures make it look like society is worse off. This effect becomes overwhelming over the long run.

One of the most dramatic examples of this in history is decrease in costs of salt, which made it the ideal punching bag for the sugar industry. There is no Big Salt. That fancy salt you buy in the store is a luxury version whose costs are completely unnecessary. Even the cheap seemingly nearly free versions you get the cost mostly comes from putting in in the packaging and stocking it on store shelves. If you were to truly optimize the cost of salt then when a baby was born you’d buy them a lifetime supply of salt for $5 and they’d never worry about it, and that’s including the labor cost of transportation supply chain in a first world country. Salt isn’t quite the most dramatic example of a cost drop ever - if you value internet bandwidth usage at what telegrams used to cost you’ll get truly ridiculous numbers - but it’s up there.

And demonization of salt is exactly what happened. For decades official guidance from doctors, the government, and seemingly all forms of authority was that the big thing everybody should do to improve their health is to cut back on salt while sugar was ignored, or even outright promoted with processed desserts advertising ‘fat free’ as if being pure sugar was healthier. I’m not going to go into the details of whether excessive salt is actually bad for you, the point is it is not and never could be the scourge which sugar is and it was made the fall guy for that.

But then what do I know, I’m an unabashed shill for Big Probability.

Thanks for reading Bram’s Thoughts! Subscribe for free to receive new posts and support my work.

Posted Thu Apr 11 18:27:27 2024 Tags:
A Polish priest has been sentenced to 18 months in jail for sex and drug crimes after a man collapsed during an orgy at his home:

According to Polish media, the victim had taken too many erectile dysfunction pills. An ambulance was called but when paramedics arrived they were refused entry and were only able to administer aid after police arrived.

The priest, referred to as Tomasz Z, was sentenced for sexual offences, supplying drugs and failing to provide assistance to a person in danger of loss of life or serious bodily harm. He was also ordered to pay the victim £3,000 in damages and several thousand zlotys to a fund set up to help crime victims. [...]

Grzegorz Kaszak, the bishop of the diocese, stepped down but the Vatican gave no reason for his resignation. Tomasz Z was discharged from the clergy in 2023 after the media reports.

So apparently in Poland you can be sentenced to prison and still keep your name and photo out of the papers? Or maybe only if you're a priest. Good deal either way.

Previously, previously, previously, previously, previously, previously, previously.

Posted Wed Apr 10 18:25:28 2024 Tags:
Nazi hellsite does not understand regexps:

If a user typed in "Twitter.com," they would see "Twitter.com" as they typed it before hitting "Post." But, after submitting, the platform would show "X.com" in its place on the X for iOS app, without the user's permission, for everyone viewing the post.

And shortly after this revelation, it became clear that there was another big issue: X was changing anything ending in "Twitter.com" to "X.com."

So you register your phishing domain netflitwitter dot com, post a link to that, and the preview text makes it look like it's going to netflix dot com instead.

Cool, cool.

Previously, previously, previously, previously, previously, previously, previously, previously, previously, previously.

Posted Wed Apr 10 17:59:40 2024 Tags:
David Gerard:

Kickstarter is a crowdfunding platform. You put up a planned creative work, get pledges, and Kickstarter takes a percentage. This is pretty simple. There are very few ways to mess it up.

One way you can mess it up is to go into growth-at-any-cost mode and do stupid things for the sake of funding.

In December 2021, Kickstarter announced that it was pivoting to blockchain! Nobody had any idea what this meant -- including Kickstarter, who couldn't advance a single coherent reason, let alone a plan. Users revolted. [...]

Why did Kickstarter do something so stupid? It turns out that Andreessen Horowitz, through their a16z Crypto unit, promised to buy $100 million of early Kickstarter investors' shares in return for 25% of the company -- if Kickstarter would just say they were adopting "blockchain." [...]

Kickstarter was profitable before this. But they didn't have a path to cancer-like growth at all costs. So they went along with a16z's blockchain promotion.

Kickstarter had refused to recognize a union at the company in 2019 and illegally fired two of the union organizers. Kickstarter finally did recognize the union, but also had massive layoffs because so many creators had left the platform due to Kickstarter's efforts not to recognize the union. They preferred to destroy their profitable company rather than allow a union to gain the slightest toehold.

Previously, previously, previously, previously, previously, previously, previously, previously.

Posted Mon Apr 8 00:09:05 2024 Tags:

I previously explained how to merge a single line of code in support of supporting cherry picking and local undo. In there I suggested that pulling in ‘orphan’ changes without their dependencies, then letting them kick in when the dependencies get merged may be useful. On reflection I think this is a bad idea, or at least have more confidence in getting the same effect in other ways.

For cherry-picking my confusion has a lot to do with UX. For some reason I’ve always envisioned cherry-picking as saying ‘Make a patch of the changes from commit X to commit Y and apply them to this branch’, possibly because that’s sort of the way patch files work. Allowing orphan history would support that done verbatim, but it seems to have a problem with what happens if the dependencies get merged piecemeal, resulting in bizarre and likely erroneous behavior. Much better than specifying the changes to be pulled over as being between two commits is to specify them as line ranges from a single commit, with the complete history of those lines pulled in with them. This makes the behavior of merging in dependent commits clear: They’re ignored because they’re already included. There’s an interesting nuance around whether to include context lines and ghost lines which have been deleted immediately adjacent to the line range specified, but that’s a minor UX problem.

This is aggressively explicit rather than implicit cherry-picking. As with the other cases it seems like doing things implicitly is just plain a bad idea. Lines of code identities might not line up of a bunch of changes have been squashed into a single commit. Even if the lines of code do line up if someone makes a change then locally undoes it that shouldn’t cause merges with outside things to be any different than if the changes had never happened and assuming that similar looking changes are actually the same violates that principle. When you don’t have support for explicit cherry picking trying to make support for it implicitly may be the least bad option but when doing it the right way is an option there’s no need to try to support the fundamentally problematic bad way.

Next up is the more difficult case of local undo. I recently realized the scope of the undo needs to be specified by merging an undo of the undo into main or the feature branch so that the feature doesn’t get deleted when everything is merged together. I previously suggested this could be done by taking merging a literal undo of the undo into main with orphan history. This is a reasonable thought but has some problems. It requires some very explicit references to commit ids in the UX, and if the undo itself is done in a series of commits then the behavior will be erratic if they’re merged in one at a time. This is probably a case of ‘if you have a hammer every problem looks like a nail’: I’ve gotten far enough along with supporting stuff with the merge algorithm that there’s a temptation to add more features to it to support more, but orphan history is going a bit too far and is best avoided.

The improved approach is this one: After a local undo is done, cherry-pick the undo into main, but instead of merging it force the resulting value to leave main unchanged then commit that result. This has to be explicit cherry-picking as mentioned above, where the scope is limited by line ranges. This has all the features desired: Merge behavior with branches off main which are pulled in later will be unaffected, when the changes to the backed out branch are pulled in piecemeal they’ll simply be ignored, and there’s no need for orphan history. This is in some sense still the cherry-pick-but-ignore approach I suggested before, but it’s important to point out that the principle still applies with the improved approach to cherry picking. One potential problem is that if there are changes which weren’t in main and are supposed to stay but were backed out during the undo then they’ll be deleted in a merge, but in that case the feature branch was ahead of main and the undo of the undo should have been put into the feature branch, not main.

Eventually I’ll spend an off day on merging and actually start writing some code instead of finding more theory to work through. I’m still fretting about some of the issues around detecting and presenting conflicts. But that may be the last of the theory issues. I probably won’t write full code for the above features because implementing them as stated is trivial on top of the library I’ll write with the real problems being a UX one of specifying the line ranges. This is of course on top of the several other hobby projects I have which actually seem important.

Posted Sun Apr 7 23:43:00 2024 Tags:
I had understood in principle that printf is Turing complete, but I am still aghast at this interactive game of tic-tac-toe implemented with a single printf statement.

Computing the NOT of a single value is also easy:
printf("%1$255d%1$s%hhn", a, b)
will compute
*b = (strlen(a)+255)%256 = strlen(a)-1
and again, because strlen(x) is either 1 or 0 we have
*c = !b
From here we can compute any binary circuit.

Previously, previously, previously, previously, previously, previously, previously, previously, previously, previously.

Posted Fri Apr 5 18:40:21 2024 Tags:
It's more important for something to be quoted than for it to be true. That is the Wikipedia Way.

Wikipedia is the encyclopedic version of the old Zagat restaurant review books "where" "every" "word" "was" "in quotes" "because" "someone" "said" "it".

The canonical example of this is when the author of Station Eleven could not get her Wikipedia page to stop claiming she was married, any change being immediately reverted with [citation needed]. She finally got it fixed by imposing on a friend to get this factoid published in Slate, in A Totally Normal Interview With Author Emily St. John Mandel. An approach that is obviously scalable and readily available to everyone.

Now that's hilarious and stupid, obviously. (I'm sure someone right now is itching to pop in and tell me that Well Actually it was Right and Proper, but please don't: I don't care, go be wrong somewhere else.)

Maybe there is now a Wikipedia-inspired business opportunity for citation-laundering! Some entrepreneur should get on that.

But here's another example, a technical example, that has affected me in a completely boring, impersonal way that may resonate better with you nerds than something human and squishy like facts about people.

YouTube serves up videos in hundreds of different audio and video formats and codecs. They add new ones pretty regularly. They don't document them anywhere, some are obscure and weird, and when you want to download a video, you need to know which one to request, and which pairs are compatible with each other.

For many years, Wikipedia contained a table listing the known formats, which was helpful to me during the development of my youtubedown utility. The last useful version of this table existed there in 2016. Then someone "condensed" it (which is to say, "destroyed" it) for unclear motivations. In 2019, someone else tried to put even that condensed and useless table back, and even that edit was again reverted with the comment:

"All of the video formats were removed due to WP:OR ('original research') being the only way to obtain them".

So. Because these formats aren't documented in Slate or The New York Times, we are forbidden from believing our lying eyes and saying, "The sky is blue; source: objective reality".

Now, as it happens, both youtubedown and youtube-dl contain their own copies of this table. So perhaps an enterprising Wikipedia masochist could try to add that table back in, citing both of these projects as their source. But I suspect that there would be some pedantic rules against that, too.

Great job, Wikipedia. Continue to let your fetish for cosplaying the Chicago Manual of Style outstrip the utility of actual facts, while continuing to be the number one source of information on Catgirls in Popular Culture. ("This may never be able to satisfy particular standards for completeness. You can help by adding missing items with reliable sources.")

Previously, previously, previously, previously, previously, previously, previously, previously, previously.

Posted Fri Apr 5 17:59:14 2024 Tags:

Planet Debian upstream is hosted by Branchable.