fossil
--I have never used it. I was clarifying a point that appeared to have been missed.
A fairly prominent
scala
software developer, Alexandru Nedelcu, about why he finally decided to leave twitter.> I’m a software developer. I don’t know what Twitter’s future is, it might be a bright one, but the problem for me is that Twitter is no longer the place where I can go to learn about programming. Or to find my peers. Twitter is no longer the place you go to talk of your passions, fruitful discussions being few and far between. Twitter is no longer fun, but rather it’s where you go to get your daily fix of unhinged political drama, and then worry that the world is going to shit.
A fairly prominent
scala
software developer, Alexandru Nedelcu, about why he finally decided to leave twitter.> I’m a software developer. I don’t know what Twitter’s future is, it might be a bright one, but the problem for me is that Twitter is no longer the place where I can go to learn about programming. Or to find my peers. Twitter is no longer the place you go to talk of your passions, fruitful discussions being few and far between. Twitter is no longer fun, but rather it’s where you go to get your daily fix of unhinged political drama, and then worry that the world is going to shit.
Bleak. I guess having the guy who thinks we should migrate to Mars running the show over there makes Earth sound less pleasant than it is. Among other problems!
fossil
has built into it an issue tracker and forum capabilities. git
does not. Third parties make these additional tools, which much improve the experience of using git
, and one popular one, GitHub, has been purchased by Microsoft. That sucks.It's silly to wave off such issues just because alternatives exist .Yes, there are alternatives, but it's a giant pain in the ass to have to uproot all your stuff from one tool and switch it to another. Almost surely, in the case of GitHub and now Gitea, you will lose information and people that way. You almost surely won't be able to transfer all the issues, discussions, wikis, etc. wholesale from one of those tools to an alternative. Even if you can, you probably won't be able to convince every single contributor to switch over to the new tool. None of that may matter for small or new hobby projects, but it's an enormous problem for larger, or older, or more well-established projects.
If you've ever been involved in or run a large software project you know what I'm talking about.
I was involved in an endeavor to switch ~20 developers from SVN to
git
in a company I worked once, and that process took *years* to complete. We lost information from virtually every project, and we gave up on a few projects because they would not convert easily and were too old to put that much energy into. Yes, the change happened eventually and was on the whole the results were great, but it was a big project spanning years to simply switch tools.~
git
. But I have to admit, the fact that the fossil
executable is only around 4 Mbyes and contains the source control stuff, issue tracker, forum, chat room, user management, and ability to serve remote developers makes it pretty attractive. You need separate tools or plugins for that stuff with git
and Microsoft bought one of them and another (Gitea) looks to be going down that road too.
git
. But I have to admit, the fact that the fossil
executable is only around 4 Mbyes and contains the source control stuff, issue tracker, forum, chat room, user management, and ability to serve remote developers makes it pretty attractive. You need separate tools or plugins for that stuff with git
anf Microsoft bought one of them and another (Gitea) looks to be going down that road too.
git
anytime soon.
- If the system generates something, the user should be able to have a "local" directory of "patches" of the thing that they can apply to whatever comes out of the generator.
What I have in mind as a motivating example is a code generator where you write some code or configuration in one language and it spits out code in another language. Almost always, you want to customize the output a little bit. But the problem that always arises then is that the code generator will obliterate your changes the next time it is run, so if you ever have to modify the code or configuration that feeds into the generator, you can expect your changes to be undone. However, if you could have local patches that are safe from the generator, you can re-apply those patches to the newly-generated code. Naturally the patches might not work on the modified code, depending on your originating change. But a lot of times they will, or they will work with minor edits.
I think this pattern is useful much more generally, though, and might help with the problems that typically arise when using a generator that doesn't quite generate everything you might want it to or the way you want it to.
n
{
\t"subject": "acct:bob@example.com",
\t"aliases": [
\t\t"https://www.example.com/~bob/"
\t],
\t"properties": {
\t\t"http://example.com/ns/role": "employee"
\t},
\t"links": [{
\t\t\t"rel": "http://webfinger.example/rel/profile-page",
\t\t\t"href": "https://www.example.com/~bob/"
\t\t},
\t\t{
\t\t\t"rel": "http://webfinger.example/rel/businesscard",
\t\t\t"href": "https://www.example.com/~bob/bob.vcf"
\t\t}
\t]
}
and then the comparison with how mastodon uses webfinger,
n
{
"subject": "acct:Mastodon@mastodon.social",
"aliases": [
"https://mastodon.social/@Mastodon",
"https://mastodon.social/users/Mastodon"
],
"links": [
{
"rel": "http://webfinger.net/rel/profile-page",
"type": "text/html",
"href": "https://mastodon.social/@Mastodon"
},
{
"rel": "self",
"type": "application/activity+json",
"href": "https://mastodon.social/users/Mastodon"
},
{
"rel": "http://ostatus.org/schema/1.0/subscribe",
"template": "https://mastodon.social/authorize_interaction?uri={uri}"
}
]
}
suggests to me you want to leave the
subject
/acct
bit as is (don't add prefixes) and put extra information you care to include in the links
section, where you're free to define the rel
URIs however you see fit. The notion here is that webfinger is offering a mapping from an account name to additional information about that account, so if anything you'd use a "subject": "acct:SALTY ACCOUNT_REPRESENTATION"
line in the JSON to achieve what you're saying if you don't want to do that via links
.
n
{
\t"subject": "acct:bob@example.com",
\t"aliases": [
\t\t"https://www.example.com/~bob/"
\t],
\t"properties": {
\t\t"http://example.com/ns/role": "employee"
\t},
\t"links": [{
\t\t\t"rel": "http://webfinger.example/rel/profile-page",
\t\t\t"href": "https://www.example.com/~bob/"
\t\t},
\t\t{
\t\t\t"rel": "http://webfinger.example/rel/businesscard",
\t\t\t"href": "https://www.example.com/~bob/bob.vcf"
\t\t}
\t]
}
and then the comparison with how mastodon uses webfinger,
n
{
"subject": "acct:Mastodon@mastodon.social",
"aliases": [
"https://mastodon.social/@Mastodon",
"https://mastodon.social/users/Mastodon"
],
"links": [
{
"rel": "http://webfinger.net/rel/profile-page",
"type": "text/html",
"href": "https://mastodon.social/@Mastodon"
},
{
"rel": "self",
"type": "application/activity+json",
"href": "https://mastodon.social/users/Mastodon"
},
{
"rel": "http://ostatus.org/schema/1.0/subscribe",
"template": "https://mastodon.social/authorize_interaction?uri={uri}"
}
]
}
suggests to me you want to leave the
subject
/acct
bit as is (don't add prefixes) and put extra information you care to include in the links
section, where you're free to define the rel
URIs however you see fit. The notion here is that webfinger is offering a mapping from an account name to additional information about that account, so if anything you'd use a "subject": "acct:SALTY ACCOUNT_REPRESENTATION"
line in the JSON to achieve what you're saying if you don't want to do that via links
.

I saw this on a page about how to discourage bots without annoying people.
yarn
have captcha on register? That'd probably do the trick in my case.

I have a pool with 7 disks arranged in 3 mirrors for content plus one for logs, following this person's advice. One of the disks in one of the mirrors started throwing errors yesterday night, apparently. It made a real mess because I sync backups to that array at midnight, I have a media server with music and movies running off it, I have an app that automatically takes snapshots and prunes old snapshots that runs regularly, etc etc etc. All that stuff was in various states of hung/failed/conflicted/angry because the array was much slower than usual. ZFS is great for remaining functional even in degraded state, but it can get slowwwwww.
I went through the procedure here as usual, except it looks like I forgot to stop a process that was using the array and it vomited all sorts of checksum errors and then I/O was suspended. This is what always stresses me out about this process, I forget something and for a brief moment I feel like I've fucked up the whole array.
Anyway, it's resilvering now and
zpool status
reports the blessed errors: No known data errors
so I thinkkkk I'm OK.
I have a pool with 7 disks arranged in 3 mirrors for content plus one for logs, following this person's advice. One of the disks in one of the mirrors started throwing errors yesterday night, apparently. It made a real mess because I sync backups to that array at midnight, I have a media server with music and movies running off it, I have an app that automatically takes snapshots and prunes old snapshots that runs regularly, etc etc etc. All that stuff was in various states of hung/failed/conflicted/angry because the array was much slower than usual. ZFS is great for remaining functional even in a degraded state, but it can get slowwwwww.
I went through the procedure here as usual, except it looks like I forgot to stop a process that was using the array and it vomited all sorts of checksum errors and then I/O was suspended. This is what always stresses me out about this process, I forget something and for a brief moment I feel like I've fucked up the whole array.
Anyway, it's resilvering now and
zpool status
reports the blessed errors: No known data errors
so I thinkkkk I'm OK.
I'm saying this after decades of reading language descriptions that start with a huge blob of formal grammar in BNF or some other CFG format, then exposition about what the blob means, and then only much much later, some full examples often without the details of how the examples would be parsed by the grammar that was just introduced.
Sure, given enough practice you can learn to read this, sort of. But it's a gigantic and needless pain in the ass, for no real gain. So of course what you (I?) learn to do after you've read a few of these is to skip past all the grammar stuff and look for the examples, which you then try to parse in your head while consulting the grammar stuff whenever you're confused.
It'd be much more straightforward to present a bunch of examples first, in such a way that you can see quickly and easily how each component of the example would be parsed. Have the full grammar and description in an appendix that's easy to consult if needed. I'm pretty sure both beginners and experts would benefit from this way of writing such things.
I'm saying this after decades of reading language descriptions that start with a huge blob of formal grammar in BNF or some other CFG format, then exposition about what the blob means, and then only much much later, some full examples often without examples of how the examples would be parsed by the grammar that was just introduced.
Sure, given enough practice you can learn to read this, sort of. But it's a gigantic and needless pain in the ass, for no real gain. So of course what you (I?) learn to do after you've read a few of these is to skip past all the grammar stuff and look for the examples, which you then try to parse in your head while consulting the grammar stuff whenever you're confused.
It'd be much more straightforward to present a bunch of examples first, in such a way that you can see quickly and easily how each component of the example would be parsed. Have the full grammar and description in an appendix that's easy to consult if needed. I'm pretty sure both beginners and experts would benefit from this way of writing such things.
yarn
at DecebtSocial?> DecentSocial is an online unconference for the builders of the decentralized social web (e.g. ActivityPub, Mastodon, Goblin, Scuttlebutt, P2Panda, Earthstar).
> When: Feb 11th (UTC)
Unison is such a nice language and runtime in my opinion (if you're into statically-typed functional languages, anyway). The codebase manager with content-addressable code is a cool innovation. This seems like one of those languages that, once mature, would be very hard to give up once you got used to using it. I should give a disclaimer that I met and worked a bit with one of the creators of Unison in graduate school many years ago.
The Unison Cloud platform, which lets you run code on a managed cloud with nearly zero configuration and very little fanfare in the code itself, is in public beta. The link above has the details and a video about it. Worth a look if you're into that sort of thing.
Unison is such a nice language and runtime in my opinion (if you're into pure functional languages in the ML family, anyway). The codebase manager with content-addressable code is a cool innovation. This seems like one of those languages that, once mature, would be very hard to give up once you got used to using it. I should give a disclaimer that I met and worked a bit with one of the creators of Unison in graduate school many years ago.
The Unison Cloud platform, which lets you run code on a managed cloud with nearly zero configuration and very little fanfare in the code itself, is in public beta. The link above has the details and a video about it. Worth a look if you're into that sort of thing.
Also, I read their community guidelines and liked what they said.
Also also, they pay human beings to moderate the content, which is very good. 👍
I have no idea how much I'll use it. Only time will tell. But it seemed worth checking out.
But that means we're currently without childcare for tomorrow. Again. The world (US?) has devolved so much that realistically you need two layers of backup nowadays to reach the same level of assurance you used to get with one layer. This is the third time in a year that we've been in this position where our primary caregiver couldn't make it, then the backup caregiver fell through and we needed to find *another* caregiver.
There's a lot of truth to the saying that it takes a village to raise a child.
You're basically manually creating a hospitable ecosystem for fish on an accelerated timeline.
I like to think of software development like this, because complex software--or more precisely, the complex purposes/functions the software serves--is a fairly delicate beastie that requires a carefully-constructed development system in which to flourish. It's very easy to screw this up, and software "dies" when you do. It can take many months or even years to cultivate such a system. "Management" is often the enemy of this process, with its artificially-forced deadlines and inattention to the realities of a healthy software process.
You're basically manually creating a hospitable ecosystem for fish on an accelerated timeline.
I like to think of software development like this, because complex software--or more precisely, the complex purposes/functions the software serves--is a fairly delicate beastie that requires a carefully-constructed development system in which to flourish. It's very easy to screw this up, and software "dies" when you do. It can take many months or even years to cultivate such a system. "Management" is often the enemy of this process, with its artificially-forced deadlines and inattention to the realities of a healthy software process.
Technology use, and having one's life overrun by it, is an extremely privileged state of being.
gajim
XMPP app on my desktop, but after the last update to v1.6.0 it stopped launching (segfault!). In the process of trying to debug it with the help of some people in the
gajim
XMPP app on my desktop, but after the last update to v1.6.0 it stopped launching (segfault!). In the process of trying to debug it with the help of some people in the gajim
support channel, I discovered that gajim
runs just fine if I launch it within gdb
(the debugger), but not if I launch it as usual.A bona fide Heisenbug! I haven't run across one of these in years!
kdeconnect
to monitor texts on my computer, which is where I am sitting most of the time.If someone I know wants to talk on the phone, we arrange by text, email, Slack, whatever works, pick a time, and then one of us calls the other. I have them in my address book so I see their name when the call comes in. I am expecting their call, so I actually locate my phone and keep it nearby.
If there is something "wrong" with me because of that, so be it. I'd rather be wrong than deal with so much wasted time and aggravation every day!
kdeconnect
to monitor texts on my computer, which is where I am sitting most of the time.If someone I know wants to talk on the phone, we arrange by text, email, Slack, whatever works, pick a time, and then one of us calls the other. I have them in my address book so I see their name when the call comes in. I am expecting their call, so I actually locate my phone and keep it nearby.
If there is something "wrong" with me because of that, so be it. I'd rather be wrong than deal with so much wasted time and aggravation every day!
scala
stream processing libraries of note. 🙈
If you don't do this, you're stuck with what powerful people want of you, thinking and feeling little else from what they direct you to think and feel. Pessimistic, only able to see a future that someone else is constructing and that only suits them and their own goals, not yours (and god help you if what they're constructing actively wants to eliminate you and people like you). Optimistic only to the extent that you might get a little of what trickles down.
I heard a quote once that said "we are just the shit that rich people grow their money in" and I think there's truth to it, but only if we accept that condition and do nothing against it. There is power in the raw assertion of "no", simply refusing to accept whatever is being told to you is "just how it is". You may not have the physical power or resources to change the conditions you're in--very few of us do--but you have power over your own mind and thoughts, and you do not need to acquiesce and accept. That's a choice you make for yourself.
On that score, it is clearly and plainly wrong to experiment on psychologically distressed people who are seeking help, unless they are fully aware that that's what's happening and agree to it.
🤦♂️
You sound very fatalistic.
If I got to poderator settings and refresh cache, will that force my pod to start respecting the
refresh
he has set? I recently restarted my pod after an upgrade (yesterday I think). Wouldn't that have reset the cache?
If I got to poderator settings and refresh cache, will that force my pod to start respecting the
refresh
he has set? I recently restarted my pod after an upgrade (yesterday I think). Wouldn't that have reset the cache?