Skip to content

Instantly share code, notes, and snippets.

View sebilasse's full-sized avatar

Sebastian Lasse sebilasse

View GitHub Profile

In advance

For decades, a wide variety of transportation orders were placed by telephone with local providers. Whether ordering a cab or food, courier trips or ridesharing - the contact, for example, to the often cooperative cab center, formed by local cab entrepreneurs, was established by phone call. For the past 10 years, national and global players have been pushing their way into passenger, food and courier transport services: Uber, Lieferando, Flix, BlablaCar - all with centralized IT structures, all profit-driven. By means of new decentralized, federated IT services, local providers of transport services can emancipate themselves from the expanding platform capitalists and establish their own powerful service brands. By using their own IT networks, cab, delivery and other types of transport can switch local customers from centralized to their own decentralized services.

Goal

An IT system with the following features is to be created for the cab industry as an example for many types of transp

@sebilasse
sebilasse / DE_districts.json
Created December 15, 2023 08:02
Taxiteam Ortsteile
This file has been truncated, but you can view the full file.
{
"Q1055": {
"id": "Q1055",
"kreisfrei": true,
"name": "Hamburg, Freie und Hansestadt",
"amt": "02000000",
"children": {
"Bezirk Altona": [
"Q1630",
@sebilasse
sebilasse / WMIdetails.ts
Last active June 8, 2023 11:42
VIN WMI details mit wikidata für Clemens
// source: wikidata.org - All structured data from the main, Property, Lexeme, and EntitySchema namespaces is available under CC0
// seeAlso: https://en.wikipedia.org/wiki/Vehicle_identification_number#List_of_common_WMI
const [t, vm, vg, vb] = [' Motor Company', 'Van/MPV ', 'Van/Cargo ', '“bus” '];
const [
A,a,AM,
B,b,BM,
C,c,cb,ch,CT,CV,
D,d,ds,dm,DU,
E,e,F,f,ft,fu,
G,Gd,g,ge,
@sebilasse
sebilasse / namesRegex.ts
Last active April 19, 2023 22:43
Detecting firstnames from [A-Z][a-z]* words and consecutive conjunctions or initials etc.
export const firstnameAsciiO = {
"A":"(A(a(|d(|a|i(|l|t(ya|hya))|o|u|el|h(i|aar)|ne)|f(|ke)|h(|an)|m(|a(|hd|ni)|er|ir(|a)|od|und)|n(|g|y|en|on|and|tje|chal|uoluwapo)|r(|a(|m|n|o|v|lyn)|e(|n)|i(|c|z|fa(|h))|n(|e|i|o(|u(d|t)))|o(|n|hi|630)|t(|i|hi|je)|fa|r(e(|n)|on)|sha|y(nn|ashree)|udhra)|t(|u|os|ami|i(fi|sh)|ekah)|g(e|t|am|je|na|ot)|j(a|ibai)|k(e|ku|a(sh|rshit)|r(ati|iti))|l(t(|je|ien)|aa|je|ok(|a)|i(ya(|h)|aha)|zen|d(ert|ri(k|es))|barta)|p(o|po|eli)|s(a(|m|da)|e|h(u|a(q|y)|i(q|r|ma|sh)|na|eesh)|i(a|m|ya)|m(a(|h)|und)|ne|on|t(a|ha|eek)|ulv)|vo|b(ed|avanan)|i(na|lyah)|qib|y(a(h|r)|ush(|i)|oung)|zam|charya)|b(|a(|h(|e(r|bou))|i(|dullah|cbcbknn)|n(|g|i(|kumar|ndranath)|da)|s(|s|t(|enia)|een|gholi|kiron|cantus|ijiang)|y(|e|omi|uwe)|z(|a(|r)|i|u)|as|d(a(|i)|e|ir|on|ula)|ji|l(i|gamash)|r(a|is|hild|rots)|c(ar|ca)|kar|tai|gail|bacar)|d(|a(|l(|a(|ziz)|la(|h|n)|b(aset|seet)|qadir)|raxus|shtart)|h(|iel)|i(|l(|da|lah(|i))|n(|asir)|a(s|ziz)|el|s(ho|lan|a(lam|mad)|sares)|r(a(sh(|i(d|t))|h(im|man))|isaq)|fatah|gadir|ha(
import { Reflect } from "https://deno.land/x/reflect_metadata@v0.1.12/mod.ts";
import { crypto } from "https://deno.land/std@0.182.0/crypto/mod.ts";
import * as log from "https://deno.land/std@0.182.0/log/mod.ts";
import defaultContext, { transportInsecure } from "/protocol/default.ts";
import prefixes from "/redaktor/known/prefixes.ts";
import equalsPrimitives from "objectIsEqualPrimitivesShallow";
import normal from "objectNormal";
import jsonld from "jsonld";
import { toArray } from "to";
@sebilasse
sebilasse / InReplyToPolicy.md
Last active July 17, 2022 12:38
Who can reply (discuss) in ActivityPub
--- --- ---
see https://github.com/w3c/activitypub/issues/319

“ With that said: Sure, why not have something like:

a vocabulary item that is a property on Objects (same domain as as:inReplyTo) that is like "replyPreferences": "http://your-vocabulary.com/replyPreferences/NONE". There could even be specific pre-baked policy URLs somewhere for "don't reply to me" or "don't reply with curse words" or "don't reply with images" or "don't reply with r-rated images"
language that says clients
SHOULD inform potential repliers about these preferences
MAY prevent replying if the replyPreferences indicate preferring no replies.
language that says that servers
@sebilasse
sebilasse / ActivityPubInReplyToredaktor.md
Last active June 14, 2022 18:43
Summing up ideas from initial discussion about reply policy

see w3c/activitypub#319 comment by @gobengo


“ With that said: Sure, why not have something like: a vocabulary item that is a property on Objects (same domain as as:inReplyTo) that is like "replyPreferences": "http://your-vocabulary.com/replyPreferences/NONE". There could even be specific pre-baked policy URLs somewhere for "don't reply to me" or "don't reply with curse words" or "don't reply with images" or "don't reply with r-rated images" language that says clients SHOULD inform potential repliers about these preferences MAY prevent replying if the replyPreferences indicate preferring no replies.

@sebilasse
sebilasse / ActivityPubC2Sredaktor.md
Last active January 31, 2023 23:35
Summing up ideas from initial AS vocab discussion and for ActivityPub C2S

Let us DISCUSS this proposal and the inReplyToPolicy proposal and make C2S a better place.

redaktor C2S

ActivityHandler


@sebilasse
sebilasse / VocabDiagramExample.md
Created April 7, 2022 10:45
redaktor architecture excerpt / example

graph TD

A[sioc:System] -->|hasMember| B(sioc:Usergroup<br>redaktor:Instance)
C[sioc:UserAccount] -->|hasMember| E{as:Actor}
B --> |hasMember| C
D((sioc:Role)) -->|hasScope| B
E -->|hasFunction| D
D --> |hasFunction| F[redaktor:PublicAppendable]
D --> |hasFunction| I

E -->|hasMember| F

@sebilasse
sebilasse / imgproxy.js
Last active November 8, 2022 07:55
Image Proxy for ActivityPub
// see NOTE https://github.com/Rob--W/cors-anywhere/issues/254#issuecomment-659037020
const corsAnywhere = require('cors-anywhere');
const express = require('express');
const apicache = require('apicache');
const sharp = require('sharp');
const path = require('path');
const expressHttpProxy = require('express-http-proxy');
// const xmpParser = import('./exifr/src/');
const exifr = require('exifr');