Friday, December 8, 2023

Religion, the cause of and solution to all of life's problems.

This is about the present demolition of Gaza by Israel in response to the atrocities of 7 Oct 2023, but lets be real, this is about me, having thoughts, and most of my thoughts come with some Bible in them, so there will be some bible stories.

'Indigineity' is often claimed by Israelis and Palestinians as a source of basic rights to the land.  In my context, Australia, indigeneity claims come with evidence of very long-term societies adapted to survive the peculiar rigors of places, and, I think, a kind of sovereignty deriving from long-term heritage - "you can be here and do your thing now, but we'll see who's still here and how they're living in a thousand years."  While Jews and Palestinians have very old connections to their land, something that I, a white guy descended mainly from British losers (mainly Scots) who retreated from their homelands, got coopted by / wormed their way to power in the British Empire project, and settled in Brisbane and Far North Queensland and who now lives in Melbourne probably don't understand, I don't think indigineity is the right category.

Although archaeologists are (as I understand it) not able to verify much about the famous origin story of Israel (slavery in Egypt, Exodus etc) there's a bit in the bible that is interesting and relevant:  God told Abraham who lived in Ur of the Chaldeans to go to a new land and live there, so he did.  But when he got there he found it was inhabited, and his household (which was fairly large) and livestock became unpopular; when he dug new wells, the locals filled them in. Abraham was not unable to put together a war band (see battle of the 4 kings) but he didn't - he moved, trying to find lands where he could live. When his nephew Lot needed space, he let him have the pick of it. In the story, Abraham's family prospers until the time of Jacob's children and the story of Joseph in Egypt.

Another big Abraham theme is hospitality - Abraham welcomes three visitors who, it turns out, are Angels, and one of them the Angel of the Lord (Christians usually understand this as a special appearance of Jesus.)  They bring hope of a son, and from his descent, a future for all the nations on earth.  When these visitors suggest they will stay in Sodom, Abraham begs them not to, and when they do and find it inhospitable, they destroy it.  The law of Israel includes a lot of protections for 'sojourners' - people of other nations who have had reason to live in Israel, often refugees from war or famine, political exiles and so on.  Israel is to remember that was them (and will be them again, it turns out).

The third big theme that I think is relevent is exile.  Joseph becomes a pathway for the family into wealthy and sophisticated Egypt where the story says they became numerous and successful until the Egyptian's feared them and enslaved them, leading up to the Exodus narrative.  Then for a long time with lots of ups and downs, they live in the Land, until they are thoroughly conquered by the Babylonians, which liked to reorganize their conquered peoples to limit their power, so the Jews got redistributed into the cities of the Empire, especially Babylon. This is complicated and by the end the Empire is the Medo-Persian empire.  (I read the book of Lamentations recently and the experience of the Gaza is not new, this has all happened before.)  But in the time of the exile, the message of Jeremiah is:

Jer 29:7  "But seek the welfare of the city where I have sent you into exile, and pray to the Lord on its behalf, for in its welfare you will find your welfare."

The thing that few leaders in the history of Israel/Palestine (or anywhere in the world, really) have been able to do is get out of tribalism, to make peace and to make the flourishing of other people a priority. When Yitzak Rabin tried, an Israeli settler shot him.  In the Israel/Palestine conflict, I think it's been especially acute because of the religious aspect - both sides have a power resource in the 'Imaginary' that make just walking away hit harder than any material losses. The monotheisms will do that, but so will Buddhism and Hinduism if the politics demand it. 

At the same time, as totalising systems they can be used to destroy universalism, common humanity.  The incredible cruelty of people in moral conflicts develops when normal defeats are not experienced because of the power of the ideology.  John Searle argues Germany might have been back at Nazism without the psychic intensity of the 'strategic' (targeting civilians) bombing and being overrun (with all the attendant violence) by soldiers.  Hegel says 'man is recognition', describing the way my identity is bound up in how others see me which is bound up in how I see them; if I know the lens I'm being observed through has a lot of reservations about me, its deeply unnatural not to defensively modify my perception of that perceiver.

Christianity became a religion for the dispossessed and demoralized in need of new life is grounded in a reality that when God came to Earth he got killed rather than lead an army of redemptive violence, and created the hope that we might all get something better than justice.

Everyone on Earth could have done more for the Palestinians.  Everyone on Earth could have done more for Israel.  We all deserve (to varying degrees) to lose our land to newcomers, to have to exercise hospitality. If we don't make room we're left with nothing to do but to tow the boats back out to sea to sink, build prisons from which no one will be release, promote our most treacherous sociopaths to be our government until we meet a bigger bunch of psychos and learn that could be us.  That could definitely be us.

Monday, August 28, 2023

A modest proposal for decentralised CI/CD

 I am living 'oh that a man's reach should exceed his grasp' and I'd like to log my 'heaven', but just for Python web applications and documentation.

I've used cookiecutter-django to begin a practice project and to avoid the main problem I was going to solve, I've been thinking about how best to track the project, without using Jira or web services from elsewhere.  I acknowledge the lesson of 'xkcd's "there are thirteen competing standards, we should have one to unify them -> there are fourteen competing standards" but I decline it.  

I've been trying to get a CI/CD setup going and the amount of special tooling that I don't normally use seems crazy.  Here is an alternate concept that creates a lot of work but keeps all of it as far left as possible - the developers repositories.  This is at least partly inspired by this talk from Simon Willison.

Idea 1.   Test reports are output to a tracked folder and can be identified with the git commit snapshot they ran on.  They are always added to the repository (e.g. by pre-commit) whenever a threshold is met, e.g. at least when merging to the default branch.

The idea would be to smooth all merging to downstream repositories. If a repository has new commits, it is ahead, and if its tests are all passing its worth trialling a merge. If the merge candidate passes all tests, the new state can be committed; if the merge should be aborted. This will work in a lot of settings, but there are some risks* too.

Idea 2.   Issue tracking, changelogs, release notes bugs, wikis and other things are just documentation and can live in a subfolder of your documentation. Using the 'sphinx' documentation system, you already build the documentation for the project along with the project - the idea is to extend that with files for issues that are composed in the repo.

Some cool things you could probably implement with a little code in conf.py (which, given the state of the world, probably means 'someone somewhere is doing this and wondering why they can't get more github stars'):

- show from git log the commits, merges, open branches with links from summaries into more detail (e.g. -p to get patch summaries)

- show the current lists of issues, bugs, etc, using the toctree or other directives.

- show test results for each commit

If you want to be legends, you can further reorganize that into a single table integrate the branch names and the issues.

Idea 3.  Use playwright's ability to produce animated gifs of the latest look in the documentation; that will look killer.  Update these at pre-commit.


*risks: in a large project you will probably have some special resources that are not perfectly replicated in your development environment. For example, your production database will have a certain schema and you will need to update that schema in order to use the updated code. While its easy to to revert the code, and its possible to reverse the schema migrations, the migrations may have destroyed data that then also needs to be recovered. Other setup, like certificates or connections could be destroyed. Although leaving folders for local settings or migrations untracked seems like it would help, things like data migrations need to know their place in the migration history graph.  A git merge strategy setting will still allow additional migration files to be merged into the folders.  Unless you're postgres or sqlite, you don't have enough test coverage to be perfectly confident that what worked 'there' will work 'here.'