Compare commits
10 commits
714e5b17c8
...
12200aa62c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
12200aa62c | ||
|
|
f52267850e | ||
|
|
ce0e2f8b76 | ||
|
|
2777e9ce91 | ||
|
|
0ff2342db6 | ||
|
|
227a191608 | ||
|
|
5dfad0cf26 | ||
|
|
1c41164b4c | ||
|
|
fc78c917a7 | ||
|
|
3c8933c315 |
13 changed files with 122 additions and 90 deletions
22
.obsidian/graph.json
vendored
Normal file
22
.obsidian/graph.json
vendored
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"collapse-filter": true,
|
||||||
|
"search": "",
|
||||||
|
"showTags": false,
|
||||||
|
"showAttachments": false,
|
||||||
|
"hideUnresolved": false,
|
||||||
|
"showOrphans": true,
|
||||||
|
"collapse-color-groups": true,
|
||||||
|
"colorGroups": [],
|
||||||
|
"collapse-display": true,
|
||||||
|
"showArrow": false,
|
||||||
|
"textFadeMultiplier": 0,
|
||||||
|
"nodeSizeMultiplier": 1,
|
||||||
|
"lineSizeMultiplier": 1,
|
||||||
|
"collapse-forces": true,
|
||||||
|
"centerStrength": 0.518713248970312,
|
||||||
|
"repelStrength": 10,
|
||||||
|
"linkStrength": 1,
|
||||||
|
"linkDistance": 250,
|
||||||
|
"scale": 1,
|
||||||
|
"close": false
|
||||||
|
}
|
||||||
25
.obsidian/workspace.json
vendored
25
.obsidian/workspace.json
vendored
|
|
@ -4,21 +4,17 @@
|
||||||
"type": "split",
|
"type": "split",
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "5bced732a7d8e497",
|
"id": "8148ed1567a00a9a",
|
||||||
"type": "tabs",
|
"type": "tabs",
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "26f2d4238c095833",
|
"id": "7021d1e5666178d1",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "markdown",
|
"type": "empty",
|
||||||
"state": {
|
"state": {},
|
||||||
"file": "blog/DDD.md",
|
|
||||||
"mode": "source",
|
|
||||||
"source": false
|
|
||||||
},
|
|
||||||
"icon": "lucide-file",
|
"icon": "lucide-file",
|
||||||
"title": "DDD"
|
"title": "New tab"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
@ -165,12 +161,19 @@
|
||||||
"command-palette:Open command palette": false
|
"command-palette:Open command palette": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"active": "26f2d4238c095833",
|
"active": "7021d1e5666178d1",
|
||||||
"lastOpenFiles": [
|
"lastOpenFiles": [
|
||||||
|
"tabellen.md",
|
||||||
|
"crud-lang/src/Untitled.md",
|
||||||
|
"crud-lang/README.md.md",
|
||||||
|
"crud-lang/src",
|
||||||
|
"Untitled.md",
|
||||||
|
"crud-lang",
|
||||||
|
"blog/DDD.md",
|
||||||
|
"Untitled.canvas",
|
||||||
"blog/uniek.md",
|
"blog/uniek.md",
|
||||||
"blog/senior.md",
|
"blog/senior.md",
|
||||||
"blog/hergebruik.md",
|
"blog/hergebruik.md",
|
||||||
"blog/DDD.md",
|
|
||||||
"blog"
|
"blog"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
78
Can/can.md
78
Can/can.md
|
|
@ -1,78 +0,0 @@
|
||||||
**can**
|
|
||||||
|
|
||||||
I am a member of a secret society. It has its own gospel in the form of a still evolving story, it is not yet written,
|
|
||||||
that starts with Grandmother Czuckay exclaiming that she would not set foot upon MS Wilhelm Gustloff, since one can not walk on water,
|
|
||||||
it has no boards. As the official history explains the ship was sunk by the Russians on january 30th 1945. And so they took the train to hannover
|
|
||||||
where young Holger Schüring, that's his Dutch name, would grow up and found his love of music.
|
|
||||||
|
|
||||||
He is of the same generation as the fictional composer Hermann Simon in Edgar Reitz' Heimat. Born out of the shadow of WWII, thoroughly educated on
|
|
||||||
Bachisch counterpoints, too smart for his teachers, discovering new ways in experimental music
|
|
||||||
|
|
||||||
--
|
|
||||||
|
|
||||||
Irmin Schmidt en Stockhausen
|
|
||||||
|
|
||||||
Stockhausen was godlike. He challenged Irmin when he said: Tomorrow we will dedicate three hours to questions. But I only accep intelligent questions.
|
|
||||||
Next day, Irmin asked him: Do you think you will get really intelligent questions posed about the work if you act so that everybody thinks,
|
|
||||||
'I won't ask him, it's not intelligent enough'?
|
|
||||||
Stockhausen was the last of the gods, traditional composers, writing on paper, divorced from the performance of music.
|
|
||||||
Irmin's answer was: The intellectual God is Dead. Who are you on that mountain, higher that all of us? Just get down and be normal like any of us.
|
|
||||||
So is that my secret society's gospel? No, it's not about that per sé, but we will not stand for any authority.
|
|
||||||
|
|
||||||
--
|
|
||||||
Günter Grass - Danziger Trilogie: Die Blechtrommel. Katz und Maus. Hundejahre
|
|
||||||
Holger lived in the same street (?)
|
|
||||||
|
|
||||||
On the question of his nationality, Holger once said: "That I am German is a falsification. That I am Polish is a falsification. That means that
|
|
||||||
my whole person is a falsification. This happened because my grandfather told the nazis that we must be Aryan. And he made a kind of family tree. And his family tree was just born from fantasy, with no basis behind it. It looked nice..."
|
|
||||||
|
|
||||||
--
|
|
||||||
|
|
||||||
The nice thing about LCD Soundsystem is that it's not about boys drunk on testosterone going out on a Friday night. It rather hints at the hangover
|
|
||||||
next day. Or the one in the years after. The whole project was described by James Murphy as an attempt to make something out of his life after reading Infinite Jest by David Foster Wallace and feeling inadequate for not having achieved anything yet. Just spent years wasting time in resentment,
|
|
||||||
too scared to do anything meaningful. His name dropping is awesome:
|
|
||||||
```
|
|
||||||
But I was there
|
|
||||||
I was there in 1968.
|
|
||||||
I was there at the first Can show
|
|
||||||
in Cologne.
|
|
||||||
...
|
|
||||||
I was there in 1974 at the first
|
|
||||||
Suicide practices in a loft in New
|
|
||||||
York City.
|
|
||||||
...
|
|
||||||
I was there when Captain
|
|
||||||
Beefheart started up his first band.
|
|
||||||
...
|
|
||||||
This Heat, Pere Ubu, Outsiders,
|
|
||||||
Nation of Ulysses, Mars, The
|
|
||||||
Trojans, The Black Dice, Todd
|
|
||||||
Terry, The Germs, Section25,
|
|
||||||
Althea and Donna, Sexual
|
|
||||||
Harrassment, a-ha, Pere Ubu,
|
|
||||||
Dorothy Ashby, PIL, the fania All-
|
|
||||||
Stars, the Bar-Kays, the Human
|
|
||||||
League, the Normal, Lou Reed,
|
|
||||||
Scott Walker, Monks, Niagra,
|
|
||||||
Joy Division, Lower48, the
|
|
||||||
Association, Sun Ra,
|
|
||||||
Scientists, Royal Trux, 10cc,
|
|
||||||
Eric B. and Rakim, Index, Basic
|
|
||||||
Channel, Soulsonic Force ("just
|
|
||||||
hit me!"), Juan Atkins, David
|
|
||||||
Axelrod, Electric Prunes, Gil!
|
|
||||||
Scott! Heron!, the Slits, Faust,
|
|
||||||
Mantronix, Pharaoh Sanders and
|
|
||||||
the Fire Engines, the Swans, the
|
|
||||||
Soft Cell, the Sonics, the Sonics,
|
|
||||||
the Sonics, the Sonics.
|
|
||||||
```
|
|
||||||
Who is that 'Niagra'? Should that be 'Niagara', a French outfit from the eighties? I admit I did not know them, but they sound a lot like Les
|
|
||||||
Rita Mitsouko, who I still like better ;) I found them by accident in the library where at the time they lent out LP's, that I would then routinely copy to cassette.
|
|
||||||
|
|
||||||
Someone great
|
|
||||||
Degene die er niet meer is had ook we leven dat ze in de trein zat tegenover willekeurige medereizigers of alleen in een supermarktpad
|
|
||||||
|
|
||||||
Porque morir e natural
|
|
||||||
Omdat sterven natuurlijk is ben ik niet bang voor de dood
|
|
||||||
Flamenco
|
|
||||||
4
Ideas.md
4
Ideas.md
|
|
@ -11,4 +11,6 @@ Rust image lib ffi Java 22
|
||||||
- Nr of usage locations in project
|
- Nr of usage locations in project
|
||||||
- Removal score based on above
|
- Removal score based on above
|
||||||
- retrieve Java version from bytecode
|
- retrieve Java version from bytecode
|
||||||
- Nr of transitive dependencies
|
- Nr of transitive dependencies
|
||||||
|
- Version lag of transitive dependencies (behind latest)
|
||||||
|
- Vulns (like checkmarx ) get from nist?
|
||||||
1
Untitled.canvas
Normal file
1
Untitled.canvas
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{}
|
||||||
0
Untitled.md
Normal file
0
Untitled.md
Normal file
|
|
@ -1,11 +1,13 @@
|
||||||
|
|
||||||
**de belofte**
|
**de belofte**
|
||||||
|
|
||||||
'If programmers are not interested in the domain, they only learn what the application should do, but not the principles behind it. Useful software can be built that way, but the project will never arrive at a point where powerful new features unfold as corollaries to older features'
|
'If programmers are not interested in the domain, they only learn what the application should do, but not the principles behind it. Useful software can be built that way, but the project will never arrive at a point where powerful new features unfold as corollaries to older features'
|
||||||
|
|
||||||
Roept van alles bij me op, zoals, ben ik wel geïnteresseerd in het domein? Heb ik het altijd fout gedaan? Is dit waarom mijn leven zo moeilijk is en gaat alles straks vanzelf als ik maar betere domein modellen bedenk?
|
Roept van alles bij me op, zoals, ben ik wel geïnteresseerd in het domein? Heb ik het altijd fout gedaan? Is dit waarom mijn leven zo moeilijk is en gaat alles straks vanzelf als ik maar betere domein modellen bedenk?
|
||||||
Die twijfels zijn de omgekeerde medaille van de belofte die het boek doet: 'Hé joh, als je wat beter je best doet, wordt alles mooi en gaan de moeilijke dingen vanzelf'.
|
Die twijfels zijn de omgekeerde medaille van de belofte die het boek doet: 'Hé joh, als je wat beter je best doet, wordt alles mooi en gaan de moeilijke dingen vanzelf'.
|
||||||
|
|
||||||
**de taal metafoor**
|
**de taal metafoor**
|
||||||
|
|
||||||
Evans beschrijft hoe hij Spaanse les had: het was verboden Engels te praten. Daardoor leerde hij het beter.
|
Evans beschrijft hoe hij Spaanse les had: het was verboden Engels te praten. Daardoor leerde hij het beter.
|
||||||
Is dit hoe hij op het idee van 'ubiquitous language is gekomen'. Developers dwingen de taal van de business te gebruiken in plaats van technisch jargon?
|
Is dit hoe hij op het idee van 'ubiquitous language is gekomen'. Developers dwingen de taal van de business te gebruiken in plaats van technisch jargon?
|
||||||
|
|
||||||
|
|
|
||||||
46
crud-lang/README.md
Normal file
46
crud-lang/README.md
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
# crud-lang
|
||||||
|
|
||||||
|
_This is now in first-draft phase. Meaning, I just had the idea and I am jotting down very preliminary design decisions._
|
||||||
|
|
||||||
|
- an experimental language for CRUD applications (backend only though)
|
||||||
|
- Enterprise as a first-class citizen
|
||||||
|
- urls are made up directories and filenames
|
||||||
|
- a controller sourcefile is a file with the .ctl extension
|
||||||
|
- likewise
|
||||||
|
- .svc services
|
||||||
|
- .cl service clients (that call other services)
|
||||||
|
- .dao database access code (not objects)
|
||||||
|
- .qc queueconsumers
|
||||||
|
- .qp queueproducers
|
||||||
|
- .utl utilities
|
||||||
|
- there is a strict calling hierarchy. A service can not call a controller. It can only go 'down'.
|
||||||
|
- Services can not call other services, because that is the recipe for spaghetti. Refactor your logic, abstract and put lower level code in utilities.
|
||||||
|
- Utilities are allowed to call other utilities. OMG, spaghetti after all! TBD
|
||||||
|
|
||||||
|
- It is an interpreter written in rust. OMG!
|
||||||
|
- And it has everything I like in other languages
|
||||||
|
- strictly typed
|
||||||
|
- [] is a list
|
||||||
|
- {} is a map
|
||||||
|
- no objects, no inheritance
|
||||||
|
- structs and duck typing
|
||||||
|
- everything is an expression
|
||||||
|
- nice iterators.
|
||||||
|
- First class functions? Maybe...
|
||||||
|
|
||||||
|
**types**
|
||||||
|
|
||||||
|
- u32, i32
|
||||||
|
- u64, i64
|
||||||
|
- f32, f64,
|
||||||
|
- string, bool, char
|
||||||
|
- struct enum
|
||||||
|
|
||||||
|
**question**
|
||||||
|
|
||||||
|
- how to model headers
|
||||||
|
- middleware, implement later
|
||||||
|
|
||||||
|
**the example: **
|
||||||
|
|
||||||
|
- a very simple api that listens to GET /api/customers{:id} and returns a customer from the database
|
||||||
7
crud-lang/src/api/customers.ctl
Normal file
7
crud-lang/src/api/customers.ctl
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
GET /(id: u32) -> Json<Customer>:
|
||||||
|
service.get(id)
|
||||||
|
|
||||||
|
struct Customer:
|
||||||
|
id: u32,
|
||||||
|
first_name: string,
|
||||||
|
last_name: string
|
||||||
2
crud-lang/src/api/customers.dao
Normal file
2
crud-lang/src/api/customers.dao
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
get(id: u32) -> Customer:
|
||||||
|
@sql(select id, first_name, last_name from customers where id = :id)
|
||||||
4
crud-lang/src/api/customers.model
Normal file
4
crud-lang/src/api/customers.model
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
Customer:
|
||||||
|
id: u32,
|
||||||
|
first_name: string,
|
||||||
|
last_name: string,
|
||||||
2
crud-lang/src/api/customers.svc
Normal file
2
crud-lang/src/api/customers.svc
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
get(id: u32) -> Customer:
|
||||||
|
dao.get(id)
|
||||||
19
tabellen.md
Normal file
19
tabellen.md
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
Ik ben niet de eerste die dit zegt, maar het is nog geen gemeengoed.
|
||||||
|
Als je een tabel definieert, neem dan altijd de volgende kolommen op (in volgorde van urgentie):
|
||||||
|
1. created_at timestamp
|
||||||
|
2. created_by varchar
|
||||||
|
3. deleted_at timestamp null
|
||||||
|
4. deleted_by varchar null
|
||||||
|
5. updated_at timestamp null
|
||||||
|
6. updated_by varchar null
|
||||||
|
|
||||||
|
#3 en #4 zijn niet alleen _nullable_, maar ook _optional_. Dat wil zeggen, je kunt het record ook fysiek verwijderen. Maar mijn advies zou zijn:
|
||||||
|
1. maak een functionele delete logisch (deleted_at/by vullen als een gebruiker iets verwijdert (een functioneel event))
|
||||||
|
2. maak een fysieke delete na bijvoorbeeld 2 jaar. Om aan juridische eisen te voldoen, of om verloren diskspace terug te krijgen. Of om zeker te weten dat de data niet gestolen kan worden. Of om tegen wie dan ook (toezichthouders, de politie) vol te kunnen houden dat je de data niet hebt.
|
||||||
|
|
||||||
|
Geloof me, op een dag zul je er voordeel van hebben.
|
||||||
|
|
||||||
|
PS.
|
||||||
|
#5 zou je zelfs nog kunnen gebruiken als _optimistic locking number_ hoewel een incrementele _integer_ waarde minstens net zo goed is. De overeenkomst is dat beide altijd oplopen. Bij een tijdgebaseerde waarde komen er allerlei vragen bij, zoals wat de precisie is, hoeveel nodes je hebt en of alle klokken gesynchroniseerd zijn.
|
||||||
|
|
||||||
|
PS2. Bij de (gerenommeerde) bank waar ik ooit werkte was het 'toezichthouder'-argument één van de redenen voor een fysieke delete.
|
||||||
Loading…
Add table
Reference in a new issue