Show newer

Prolog, SWI 

I am quite willing to use the SWI-Prolog shell as the UI. Just wondering why the default printing of solutions isn't pager-like (more than 1 solution at a time), and a table with variable values in columns.

Every time I upgrade my system I look at the list of packages and wonder whether I could uninstall some of them. I look at their description and try to uninstall them. That lists all the things that will get uninstalled alongside it and so the process repeats, lots of exploring of packages, and then, eventually, they're gone.
And when I reboot, it's my time to cry, maybe… at least that's what I fear. Going to reboot right now to get past that feeling of dread.

“We give power to what we give attention to. And we can choose.”

@radiojammor Yeah, something that informed the piece but didn’t make it in is developmental economist Amartya Sen’s famous observation that famine doesn’t occur in a functioning democracy—the many famines in many regions over centuries of British control were anthropogenic.

My weekend project was to build a Mastodon bot, and I'm pumped to say it's now live:

@BookchinBot is a simple bot that posts quotes from philosopher and social theorist, Murray Bookchin.

I came across Bookchin's work during my PhD, and found it both important and relevant to the issues we're dealing with today.

So, if you're a nerd about theory like I am, this bot might be for you.

#socialtheory #politicaltheory #philosophy #ecology #socialecology

I said this before on the bird site but it really is true; I distinctly remember reading Ayn Rand as a teenager and thinking “this is some real bullshit she is trying to pull here”. As pulp it is fine, but this is not a serious philosophy for serious people.

I’m still pissed at Elon for two things:

1) making me learn how to spell Mastodon
2) that he didn’t buy and ruin LinkedIn instead

#FreudianTypoOfTheWeek

Ecomimics (adj.): The social science of blindly copying economic policy from another country.

The new #LFE site looks great! With a cornucopia of learning and reference material.
lfe.io/
#Erlang #Lisp

@choanmusic

As it turned out, reverting to distro #orgmode was a simple matter of deleting the site-list/org and restarting, and magically #orgroam is working again, so that's a plus. Lilypond will just need to wait.

I spent years coding in #Prolog, so my general solution to problematic things is "revert back to before your last decision, and make a different one" 🤣

Regarding #email, screw the old #filesystem-centric non #transactional approach btw.

Both #mbox and #maildir suck.

Program crashed while you were modifying a mail? Who knows what the on-disk file looks like now. You had it git-versioned? Good. If all goes well and git or the computer itself doesn't crash while updating things, that might be enough.

Even key-value #databases like #BerkelyDB do it better, and they did so before #SQLite even existed.

So why can't I have tools using DBs?

This is such a simple and useful SQLite hack.

Get the best out of #git and #sqlite by having your database versioned in a human-readable format:

```
# Create a local git repo and a db file
$ git init
$ sqlite3 ./test.db
sqlite> create table test(id int primary key, value text);
$ git add test.db

# Set the diff format for *.db files
git config diff.sqlite3.binary true
git config diff.sqlite3.textconv "echo .dump | sqlite3"
echo '*.db diff=sqlite3' >> .gitattributes

# Do some stuff with the db
$ sqlite3 ./test.db
sqlite> insert into test values(1, 'a');
sqlite> insert into test values(2, 'b');
sqlite> insert into test values(3, 'c');
sqlite> update test set text = 'aaa' where id = 1;
sqlite> delete from test where id = 3;

# Check the diff
$ git diff
diff --git a/test.db b/test.db
index 9d6e6db..c9a7a08 100644
--- a/test.db
+++ b/test.db
@@ -1,4 +1,6 @@
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE test(id int primary key, text text);
+INSERT INTO test VALUES(1,'aaa');
+INSERT INTO test VALUES(2,'b');
COMMIT;
```

garrit.xyz/posts/2023-11-01-tr

TIL that in #Erlang, _ can be used in type specifications and has the same meaning as term() or any(). I love this kind of discovery because it makes total sense and is consistent with pattern matching. Erlang is one of these rare sane languages.

@nixCraft I go a call yesterday asking for help on a system I had deployed on a TV operator 11 years ago. It was a hardware glitch. Unfortunately they rebooted the operating system: 3588 days of uptime. The software in question had been restarted in 2015.

Mostly #erlang and some C.

@Natanox @juliobiason @borisanthony It's still not great.

More for reasons that ergonomically-speaking, it's the Perl of web development.

What’s sad is realising you live in a world where every exaggerated analogy you used to make a point is actually happening:

Having Google in schools is like having McDonalds in nutrition class. (I find out that McDonalds does, in fact, sponsor nutrition classes in US schools.)

Having a surveillance capitalist sponsor a conference on free and open source/human rights is like having an oil company sponsor a climate conference. (Forget sponsoring, turns out head of #Cop28 runs an oil firm.)

🤬

Which is why I favour the GPL for licensing. It's not perfect, but it does enable us to keep the code free forever.

Show thread
Show older
CleverLibre Social

CleverLibre Social is an inclusive social instance for open discussion, learning, and community.
All cultures welcome.
Hate speech and harassment strictly forbidden.