Search
1000 results for “adde”
-
#eBooks - Aesops Fables - #Aesop
https://kensbookinfo.blogspot.com/p/page-1-project-gutenberg_12.html?##120#eBooks - Census of Population and Housing, 1990, -
https://kensbookinfo.blogspot.com/p/page-8-project-gutenberg.html#122#eBooks - The Bible, King James Version, Complete - #Various
https://kensbookinfo.blogspot.com/p/page-39-project-gutenberg.html#95#eBooks 2019-2022 - Stonehenge, a Temple Restor'd to the British Druids, by William Stukeley -
https://kensbookinfo.blogspot.com/p/ebooks-addendum-2019-2022.html#61632#eBooks 2019-2022 - When They Were Girls, by Rebecca Deming Moore -
https://kensbookinfo.blogspot.com/p/ebooks-addendum-2019-2022.html#61633 -
-
-
-
-
Why does N3 have greater inherent potential than Prolog for the open web?
Because N3 is not just a rule language. It can express facts, rules, quoted graphs, scoped reasoning, and source-aware logic in the same model.
We added a new Appendix C on exactly that:
https://eyereasoner.github.io/eyeling/HANDBOOK#appendix-c--n3-beyond-prolog-logic-that-survives-the-open-web -
Why does N3 have greater inherent potential than Prolog for the open web?
Because N3 is not just a rule language. It can express facts, rules, quoted graphs, scoped reasoning, and source-aware logic in the same model.
We added a new Appendix C on exactly that:
https://eyereasoner.github.io/eyeling/HANDBOOK#appendix-c--n3-beyond-prolog-logic-that-survives-the-open-web -
Why does N3 have greater inherent potential than Prolog for the open web?
Because N3 is not just a rule language. It can express facts, rules, quoted graphs, scoped reasoning, and source-aware logic in the same model.
We added a new Appendix C on exactly that:
https://eyereasoner.github.io/eyeling/HANDBOOK#appendix-c--n3-beyond-prolog-logic-that-survives-the-open-web -
Why does N3 have greater inherent potential than Prolog for the open web?
Because N3 is not just a rule language. It can express facts, rules, quoted graphs, scoped reasoning, and source-aware logic in the same model.
We added a new Appendix C on exactly that:
https://eyereasoner.github.io/eyeling/HANDBOOK#appendix-c--n3-beyond-prolog-logic-that-survives-the-open-web -
Why does N3 have greater inherent potential than Prolog for the open web?
Because N3 is not just a rule language. It can express facts, rules, quoted graphs, scoped reasoning, and source-aware logic in the same model.
We added a new Appendix C on exactly that:
https://eyereasoner.github.io/eyeling/HANDBOOK#appendix-c--n3-beyond-prolog-logic-that-survives-the-open-web -
CW: As an administrator of several Matrix servers, every now and then I have to decommission one. You can't just power the server down, throw it away and be done with it, so let me show you how it's done.
As an administrator of several Matrix servers, every now and then I have to decommission one.
You can't just power the server down, throw it away and be done with it (really, you can't!). You'll have to remove all users first, and give those removals some time to propagate over the Matrix universe. After that, you can power the server down and junk it.
A handful of users can be removed manually with, for example, Synapse-Admin. But today I have a server with several thousands of users... I've had problems with Carpal Tunnel Syndrome before, so there's no way I'm going to spend several hours moving my mouse the same directions over and over again for hours.
Prepare
I use the Matrix API and curl (thanks for that, @daniel:// stenberg://) to do this the easy way. Well, some of you may scratch your heads when I call this the easy way... 😏
All the commands I show here, are run on the Matrix server itself. You can run them anywhere, but then you'll have to replace "localhost" for the URL of your server, of course.
First of all, you'll need an access token for an account with admin rights. If you happen to have a session open, you can simply copy it from there. If you don't, here's how to get one.curl -s -X POST http://localhost:8008/_matrix/client/r0/login \
-H "Content-Type: application/json" \
-d '{ \
"type": "m.login.password", \
"user": "@administrator:EXAMPLE.COM" , \
"password": "SECRET ADMIN PASSWORD" \
}' | \
jq '.access_token'
This will give you a string like "syt_YWRtaW5pc3RyYXRvcg_dQCZlHWPsGluyHLYyhnH_2aI2ln", provided you used the right username, password and URL. I'll use "xxxx" for better visibility.
Check the number of users
Let's verify our access by checking how many users we're talking about.curl -s -X GET http://localhost:8008/_synapse/admin/v2/users?limit=1000000&deactivated=true \
-H "Authorization: Bearer xxxx" | \
jq '.users[] | .name' | \
wc -l
The limit of 1 million is sort of necessary: you can't say "every user", but if you don't provide a limit, you'll only get the first 100.
Now that you know how many users there are in your database, let's remove them all.
Remove all users
You may be thinking, "if I remove all users, I also remove my admin account, which could complicate things". Good thinking, I ran into that exact problem, because I did my previous user removals with Synapse-Admin (you know, selecting a handful users, clicking "remove", waiting... rince and repeat) and that wouldn't remove my admin account.
But when you use the API directly, you abandon the guard rails and you can actually hurt yourself. I was lucky enough to find that there was still one other admin account after I had removed mine, so I hijacked that one to finished the job. If yours is (was!) the only active admin account, you have a problem...
With this code we list all users MINUS OUR ADMIN ACCOUNT and pass them to the next command, that actually deletes them:curl -s -X GET http://localhost:8008/_synapse/admin/v2/limit=1000000 \
-H "Authorization: Bearer xxxx" | \
jq '.users[] | .name' | \
sed '/@administrator:EXAMPLE.COM/d' | \
xargs -I % \
curl -s -X POST -H "Authorization: Bearer xxxx" \
-H "Content-Type: application/json" \
-d '{ "erase": true }' \
http://localhost:8008/_synapse/admin/v1/deactivate/% | \
tee removal.log | \
wc -l
This will take a looong time, and that's why I have the command write its output to "removal.log", so you can check what's happening.
Every successful removal prints this result:{"id_server_unbind_result":"success"}
So once no new entries like that are being added to the log file, you're done and should be left with only your admin account(s).
Give it a few days for the rest of the Matrix universe to pick these removals up, say a week, and then you can junk your server.
#Matrix #curl #API -
CW: As an administrator of several Matrix servers, every now and then I have to decommission one. You can't just power the server down, throw it away and be done with it, so let me show you how it's done.
As an administrator of several Matrix servers, every now and then I have to decommission one.
You can't just power the server down, throw it away and be done with it (really, you can't!). You'll have to remove all users first, and give those removals some time to propagate over the Matrix universe. After that, you can power the server down and junk it.
A handful of users can be removed manually with, for example, Synapse-Admin. But today I have a server with several thousands of users... I've had problems with Carpal Tunnel Syndrome before, so there's no way I'm going to spend several hours moving my mouse the same directions over and over again for hours.
Prepare
I use the Matrix API and curl (thanks for that, @daniel:// stenberg://) to do this the easy way. Well, some of you may scratch your heads when I call this the easy way... 😏
All the commands I show here, are run on the Matrix server itself. You can run them anywhere, but then you'll have to replace "localhost" for the URL of your server, of course.
First of all, you'll need an access token for an account with admin rights. If you happen to have a session open, you can simply copy it from there. If you don't, here's how to get one.curl -s -X POST http://localhost:8008/_matrix/client/r0/login \
-H "Content-Type: application/json" \
-d '{ \
"type": "m.login.password", \
"user": "@administrator:EXAMPLE.COM" , \
"password": "SECRET ADMIN PASSWORD" \
}' | \
jq '.access_token'
This will give you a string like "syt_YWRtaW5pc3RyYXRvcg_dQCZlHWPsGluyHLYyhnH_2aI2ln", provided you used the right username, password and URL. I'll use "xxxx" for better visibility.
Check the number of users
Let's verify our access by checking how many users we're talking about.curl -s -X GET http://localhost:8008/_synapse/admin/v2/users?limit=1000000&deactivated=true \
-H "Authorization: Bearer xxxx" | \
jq '.users[] | .name' | \
wc -l
The limit of 1 million is sort of necessary: you can't say "every user", but if you don't provide a limit, you'll only get the first 100.
Now that you know how many users there are in your database, let's remove them all.
Remove all users
You may be thinking, "if I remove all users, I also remove my admin account, which could complicate things". Good thinking, I ran into that exact problem, because I did my previous user removals with Synapse-Admin (you know, selecting a handful users, clicking "remove", waiting... rince and repeat) and that wouldn't remove my admin account.
But when you use the API directly, you abandon the guard rails and you can actually hurt yourself. I was lucky enough to find that there was still one other admin account after I had removed mine, so I hijacked that one to finished the job. If yours is (was!) the only active admin account, you have a problem...
With this code we list all users MINUS OUR ADMIN ACCOUNT and pass them to the next command, that actually deletes them:curl -s -X GET http://localhost:8008/_synapse/admin/v2/limit=1000000 \
-H "Authorization: Bearer xxxx" | \
jq '.users[] | .name' | \
sed '/@administrator:EXAMPLE.COM/d' | \
xargs -I % \
curl -s -X POST -H "Authorization: Bearer xxxx" \
-H "Content-Type: application/json" \
-d '{ "erase": true }' \
http://localhost:8008/_synapse/admin/v1/deactivate/% | \
tee removal.log | \
wc -l
This will take a looong time, and that's why I have the command write its output to "removal.log", so you can check what's happening.
Every successful removal prints this result:{"id_server_unbind_result":"success"}
So once no new entries like that are being added to the log file, you're done and should be left with only your admin account(s).
Give it a few days for the rest of the Matrix universe to pick these removals up, say a week, and then you can junk your server.
#Matrix #curl #API -
CW: As an administrator of several Matrix servers, every now and then I have to decommission one. You can't just power the server down, throw it away and be done with it, so let me show you how it's done.
As an administrator of several Matrix servers, every now and then I have to decommission one.
You can't just power the server down, throw it away and be done with it (really, you can't!). You'll have to remove all users first, and give those removals some time to propagate over the Matrix universe. After that, you can power the server down and junk it.
A handful of users can be removed manually with, for example, Synapse-Admin. But today I have a server with several thousands of users... I've had problems with Carpal Tunnel Syndrome before, so there's no way I'm going to spend several hours moving my mouse the same directions over and over again for hours.
Prepare
I use the Matrix API and curl (thanks for that, @daniel:// stenberg://) to do this the easy way. Well, some of you may scratch your heads when I call this the easy way... 😏
All the commands I show here, are run on the Matrix server itself. You can run them anywhere, but then you'll have to replace "localhost" for the URL of your server, of course.
First of all, you'll need an access token for an account with admin rights. If you happen to have a session open, you can simply copy it from there. If you don't, here's how to get one.curl -s -X POST http://localhost:8008/_matrix/client/r0/login \
-H "Content-Type: application/json" \
-d '{ \
"type": "m.login.password", \
"user": "@administrator:EXAMPLE.COM" , \
"password": "SECRET ADMIN PASSWORD" \
}' | \
jq '.access_token'
This will give you a string like "syt_YWRtaW5pc3RyYXRvcg_dQCZlHWPsGluyHLYyhnH_2aI2ln", provided you used the right username, password and URL. I'll use "xxxx" for better visibility.
Check the number of users
Let's verify our access by checking how many users we're talking about.curl -s -X GET http://localhost:8008/_synapse/admin/v2/users?limit=1000000&deactivated=true \
-H "Authorization: Bearer xxxx" | \
jq '.users[] | .name' | \
wc -l
The limit of 1 million is sort of necessary: you can't say "every user", but if you don't provide a limit, you'll only get the first 100.
Now that you know how many users there are in your database, let's remove them all.
Remove all users
You may be thinking, "if I remove all users, I also remove my admin account, which could complicate things". Good thinking, I ran into that exact problem, because I did my previous user removals with Synapse-Admin (you know, selecting a handful users, clicking "remove", waiting... rince and repeat) and that wouldn't remove my admin account.
But when you use the API directly, you abandon the guard rails and you can actually hurt yourself. I was lucky enough to find that there was still one other admin account after I had removed mine, so I hijacked that one to finished the job. If yours is (was!) the only active admin account, you have a problem...
With this code we list all users MINUS OUR ADMIN ACCOUNT and pass them to the next command, that actually deletes them:curl -s -X GET http://localhost:8008/_synapse/admin/v2/limit=1000000 \
-H "Authorization: Bearer xxxx" | \
jq '.users[] | .name' | \
sed '/@administrator:EXAMPLE.COM/d' | \
xargs -I % \
curl -s -X POST -H "Authorization: Bearer xxxx" \
-H "Content-Type: application/json" \
-d '{ "erase": true }' \
http://localhost:8008/_synapse/admin/v1/deactivate/% | \
tee removal.log | \
wc -l
This will take a looong time, and that's why I have the command write its output to "removal.log", so you can check what's happening.
Every successful removal prints this result:{"id_server_unbind_result":"success"}
So once no new entries like that are being added to the log file, you're done and should be left with only your admin account(s).
Give it a few days for the rest of the Matrix universe to pick these removals up, say a week, and then you can junk your server.
#Matrix #curl #API -
CW: As an administrator of several Matrix servers, every now and then I have to decommission one. You can't just power the server down, throw it away and be done with it, so let me show you how it's done.
As an administrator of several Matrix servers, every now and then I have to decommission one.
You can't just power the server down, throw it away and be done with it (really, you can't!). You'll have to remove all users first, and give those removals some time to propagate over the Matrix universe. After that, you can power the server down and junk it.
A handful of users can be removed manually with, for example, Synapse-Admin. But today I have a server with several thousands of users... I've had problems with Carpal Tunnel Syndrome before, so there's no way I'm going to spend several hours moving my mouse the same directions over and over again for hours.
Prepare
I use the Matrix API and curl (thanks for that, @daniel:// stenberg://) to do this the easy way. Well, some of you may scratch your heads when I call this the easy way... 😏
All the commands I show here, are run on the Matrix server itself. You can run them anywhere, but then you'll have to replace "localhost" for the URL of your server, of course.
First of all, you'll need an access token for an account with admin rights. If you happen to have a session open, you can simply copy it from there. If you don't, here's how to get one.curl -s -X POST http://localhost:8008/_matrix/client/r0/login \
-H "Content-Type: application/json" \
-d '{ \
"type": "m.login.password", \
"user": "@administrator:EXAMPLE.COM" , \
"password": "SECRET ADMIN PASSWORD" \
}' | \
jq '.access_token'
This will give you a string like "syt_YWRtaW5pc3RyYXRvcg_dQCZlHWPsGluyHLYyhnH_2aI2ln", provided you used the right username, password and URL. I'll use "xxxx" for better visibility.
Check the number of users
Let's verify our access by checking how many users we're talking about.curl -s -X GET http://localhost:8008/_synapse/admin/v2/users?limit=1000000&deactivated=true \
-H "Authorization: Bearer xxxx" | \
jq '.users[] | .name' | \
wc -l
The limit of 1 million is sort of necessary: you can't say "every user", but if you don't provide a limit, you'll only get the first 100.
Now that you know how many users there are in your database, let's remove them all.
Remove all users
You may be thinking, "if I remove all users, I also remove my admin account, which could complicate things". Good thinking, I ran into that exact problem, because I did my previous user removals with Synapse-Admin (you know, selecting a handful users, clicking "remove", waiting... rince and repeat) and that wouldn't remove my admin account.
But when you use the API directly, you abandon the guard rails and you can actually hurt yourself. I was lucky enough to find that there was still one other admin account after I had removed mine, so I hijacked that one to finished the job. If yours is (was!) the only active admin account, you have a problem...
With this code we list all users MINUS OUR ADMIN ACCOUNT and pass them to the next command, that actually deletes them:curl -s -X GET http://localhost:8008/_synapse/admin/v2/limit=1000000 \
-H "Authorization: Bearer xxxx" | \
jq '.users[] | .name' | \
sed '/@administrator:EXAMPLE.COM/d' | \
xargs -I % \
curl -s -X POST -H "Authorization: Bearer xxxx" \
-H "Content-Type: application/json" \
-d '{ "erase": true }' \
http://localhost:8008/_synapse/admin/v1/deactivate/% | \
tee removal.log | \
wc -l
This will take a looong time, and that's why I have the command write its output to "removal.log", so you can check what's happening.
Every successful removal prints this result:{"id_server_unbind_result":"success"}
So once no new entries like that are being added to the log file, you're done and should be left with only your admin account(s).
Give it a few days for the rest of the Matrix universe to pick these removals up, say a week, and then you can junk your server.
#Matrix #curl #API -
CW: As an administrator of several Matrix servers, every now and then I have to decommission one. You can't just power the server down, throw it away and be done with it, so let me show you how it's done.
As an administrator of several Matrix servers, every now and then I have to decommission one.
You can't just power the server down, throw it away and be done with it (really, you can't!). You'll have to remove all users first, and give those removals some time to propagate over the Matrix universe. After that, you can power the server down and junk it.
A handful of users can be removed manually with, for example, Synapse-Admin. But today I have a server with several thousands of users... I've had problems with Carpal Tunnel Syndrome before, so there's no way I'm going to spend several hours moving my mouse the same directions over and over again for hours.
Prepare
I use the Matrix API and curl (thanks for that, @daniel:// stenberg://) to do this the easy way. Well, some of you may scratch your heads when I call this the easy way... 😏
All the commands I show here, are run on the Matrix server itself. You can run them anywhere, but then you'll have to replace "localhost" for the URL of your server, of course.
First of all, you'll need an access token for an account with admin rights. If you happen to have a session open, you can simply copy it from there. If you don't, here's how to get one.curl -s -X POST http://localhost:8008/_matrix/client/r0/login \
-H "Content-Type: application/json" \
-d '{ \
"type": "m.login.password", \
"user": "@administrator:EXAMPLE.COM" , \
"password": "SECRET ADMIN PASSWORD" \
}' \
| jq '.access_token'
This will give you a string like "syt_YWRtaW5pc3RyYXRvcg_dQCZlHWPsGluyHLYyhnH_2aI2ln", provided you used the right username, password and URL. I'll use "xxxx" for better visibility.
Check the number of users
Let's verify our access by checking how many users we're talking about.curl -s -X GET http://localhost:8008/_synapse/admin/v2/users?limit=1000000&deactivated=true \
-H "Authorization: Bearer xxxx" \
| jq '.users[] | .name' \
| wc -l
The limit of 1 million is sort of necessary: you can't say "every user", but if you don't provide a limit, you'll only get the first 100.
Now that you know how many users there are in your database, let's remove them all.
Remove all users
You may be thinking, "if I remove all users, I also remove my admin account, which could complicate things". Good thinking, but no: Matrix won't remove your admin account. This means you'll have to manually leave all rooms you've joined with that account. The same goes for all other admin accounts. THIS IS IMPORTANT!
We'll now remove all users, by first listing them all and passing the output of that command to the next, which does the actual removing.curl -s -X GET http://localhost:8008/_synapse/admin/v2/limit=1000000 \
-H "Authorization: Bearer xxxx" \
| jq '.users[] | .name' \
| xargs -I % \
curl -s -X POST -H "Authorization: Bearer xxxx" \
-H "Content-Type: application/json" \
-d '{ "erase": true }' \
http://localhost:8008/_synapse/admin/v1/deactivate/% \
| tee removal.log \
| wc -l
This will take a looong time, and that's why I have the command write its output to "removal.log", so you can check what's happening.
Every successful removal prints this result:{"id_server_unbind_result":"success"}
So once no new entries like that are being added to the log file, you're done and should be left with only your admin account(s).
Give it a few days for the rest of the Matrix universe to pick these removals up, say a week, and then you can junk your server.
#Matrix #curl #API -
We've added a new report type to the resource map: Neighbor In Need! If you have any unmet needs during this freeze - water, eggs, milk, anything - list it here so your neighbors can help. We also have warming sites and helpful neighbors listed.
-
We've added a new report type to the resource map: Neighbor In Need! If you have any unmet needs during this freeze - water, eggs, milk, anything - list it here so your neighbors can help. We also have warming sites and helpful neighbors listed.
-
We've added a new report type to the resource map: Neighbor In Need! If you have any unmet needs during this freeze - water, eggs, milk, anything - list it here so your neighbors can help. We also have warming sites and helpful neighbors listed.
-
We've added a new report type to the resource map: Neighbor In Need! If you have any unmet needs during this freeze - water, eggs, milk, anything - list it here so your neighbors can help. We also have warming sites and helpful neighbors listed.
-
We've added a new report type to the resource map: Neighbor In Need! If you have any unmet needs during this freeze - water, eggs, milk, anything - list it here so your neighbors can help. We also have warming sites and helpful neighbors listed.
-
I added some Voltage Regulator stuff, and after trying to source components last night, some more transistor equivalents to Electronics Reference.
It’s an app that should be of particular use by #retrocomputer enthusiasts.
Please try the beta and lemme know.
-
https://www.europesays.com/it/453491/ Ausilio: “Inter competitiva, media pensavano altro. Bastoni? Chiamino noi” #addetti #AddettiLavori #allenatore #atalanta #ausilio #bastoni #calciatori #Calcio #chivu #cl #club #consigli #credo #dare #direttore #DirettoreSportivo #DirettoreSportivoInter #disposizione #far #Football #giovani #giuste #importante #Inter #InterParlato #IT #Italia #Italy #lavori #livello #media #mercato #penso #percorso #progetto #qualità #sicuro #Soccer #Sport #Sports
-
I'm a big fan of all the extra greenery they've added to #CanaryWharf over the last year. It's all looking fab in the sunshine today. These trees they added to the new(ish) boardwalk are just lovely.
-
I'm a big fan of all the extra greenery they've added to #CanaryWharf over the last year. It's all looking fab in the sunshine today. These trees they added to the new(ish) boardwalk are just lovely.
-
I'm a big fan of all the extra greenery they've added to #CanaryWharf over the last year. It's all looking fab in the sunshine today. These trees they added to the new(ish) boardwalk are just lovely.
-
I'm a big fan of all the extra greenery they've added to #CanaryWharf over the last year. It's all looking fab in the sunshine today. These trees they added to the new(ish) boardwalk are just lovely.
-
I'm a big fan of all the extra greenery they've added to #CanaryWharf over the last year. It's all looking fab in the sunshine today. These trees they added to the new(ish) boardwalk are just lovely.
-
✨ ☁️ And as final part of the afternoon at the #ECHOES annual meeting in Poznan today - a side-by-side discussion of how the European Data Space (for Cultural Heritage) relates to the Culture Cloud (and the hashtag#ECHOES project) by #Europeana Director Harry Verwayen and #ECHOES Coordinator Xavier Rodier.
🤝 In a nutshell, the Data Space is a more permanent space for cultural data access & reuse (it's public infrastructure) and the Cloud is a processing workspace for digital collaboration and the advancement of science & research. Crucially - the added value for all stakeholders involved - comes at the space of intersection - when the two initiatives can work in synergy as spaces for knowledge building and exchange. The slide images really paint a clear picture... in theory looks great, putting it in practice will be the hard work ahead of all teams involved over the next 5 years.
📜 A joint statement signed by both initiatives (on stage) should be officially published very soon, too!
#CulturalHeritage #CulturalData #CultureHeritageCloud #ECCCH #ECHOLOT
-
✨ ☁️ And as final part of the afternoon at the #ECHOES annual meeting in Poznan today - a side-by-side discussion of how the European Data Space (for Cultural Heritage) relates to the Culture Cloud (and the hashtag#ECHOES project) by #Europeana Director Harry Verwayen and #ECHOES Coordinator Xavier Rodier.
🤝 In a nutshell, the Data Space is a more permanent space for cultural data access & reuse (it's public infrastructure) and the Cloud is a processing workspace for digital collaboration and the advancement of science & research. Crucially - the added value for all stakeholders involved - comes at the space of intersection - when the two initiatives can work in synergy as spaces for knowledge building and exchange. The slide images really paint a clear picture... in theory looks great, putting it in practice will be the hard work ahead of all teams involved over the next 5 years.
📜 A joint statement signed by both initiatives (on stage) should be officially published very soon, too!
#CulturalHeritage #CulturalData #CultureHeritageCloud #ECCCH #ECHOLOT
-
✨ ☁️ And as final part of the afternoon at the #ECHOES annual meeting in Poznan today - a side-by-side discussion of how the European Data Space (for Cultural Heritage) relates to the Culture Cloud (and the hashtag#ECHOES project) by #Europeana Director Harry Verwayen and #ECHOES Coordinator Xavier Rodier.
🤝 In a nutshell, the Data Space is a more permanent space for cultural data access & reuse (it's public infrastructure) and the Cloud is a processing workspace for digital collaboration and the advancement of science & research. Crucially - the added value for all stakeholders involved - comes at the space of intersection - when the two initiatives can work in synergy as spaces for knowledge building and exchange. The slide images really paint a clear picture... in theory looks great, putting it in practice will be the hard work ahead of all teams involved over the next 5 years.
📜 A joint statement signed by both initiatives (on stage) should be officially published very soon, too!
#CulturalHeritage #CulturalData #CultureHeritageCloud #ECCCH #ECHOLOT