Compare commits

...

2 Commits

Author SHA1 Message Date
Cametendo
8dfc70fde1 Push after two months, oops 2026-06-08 10:33:47 +02:00
Cametendo
75299c9236 commit.sh 2026-04-29 11:49:38 +02:00
39 changed files with 123993 additions and 35 deletions

BIN
Images/Gears.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
Images/Git-Icon-1788C.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
Images/Mai.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 KiB

BIN
Images/Mai2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

BIN
Images/Miku1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
Images/Profilbild_juerg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 495 KiB

BIN
Images/Strawhat.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 KiB

BIN
Images/Tux-svg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

BIN
Images/joyboy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

After

Width:  |  Height:  |  Size: 1.0 MiB

BIN
Images/pictureV2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

BIN
Images/waifu1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 KiB

View File

@@ -14,7 +14,5 @@
<body>
<script src="labyrinth.js"></script>
<a href="script_rectangles.html">Rectangles Script</a>
<a href="script_labyrinth.html">Labyrinth Script</a>
</body>
</html>

View File

@@ -1,8 +0,0 @@
html, body {
margin: 0;
padding: 0;
}
canvas {
display: block;
}

View File

@@ -13,8 +13,6 @@
</head>
<body>
<script src="rectangles.js"></script>
<a href="script_rectangles.html">Rectangles Script</a>
<a href="script_labyrinth.html">Labyrinth Script</a>
<script src="image-filter.js"></script>
</body>
</html>

View File

@@ -0,0 +1,18 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Sketch</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<script src="/libraries/p5.min.js"></script>
<script src="/libraries/p5.sound.min.js"></script>
</head>
<body>
<script src="image.js"></script>
</body>
</html>

View File

@@ -1,10 +1,57 @@
let img;
let img_Joyboy;
let img_Gears;
let img_Git;
let img_Mai;
let img_Mai2;
let img_Miku;
let img_Monitoring;
let img_Picture;
let img_Juerg;
let img_Strawhat;
let img_Tux;
let img_Waifu;
const imageArray = [];
let randomImageIndex = 0;
function mouseClicked() {
randomImageIndex = Math.random() * imageArray.length;
randomImageIndex = parseInt(randomImageIndex);
console.log(randomImageIndex);
clear();
const { img, width, height } = imageArray[randomImageIndex];
image(img, 0, 0, width, height);
}
function preload() {
img = loadImage("/Images/monitoring-miku.png");
img_Gears = loadImage("/Images/Gears.png");
img_Git = loadImage("/Images/Git-Icon-1788C.png");
img_Joyboy = loadImage("/Images/joyboy.png");
img_Mai = loadImage("/Images/Mai.png");
img_Mai2 = loadImage("/Images/Mai2.jpg");
img_Miku = loadImage("/Images/Miku1.jpg");
img_Monitoring = loadImage("/Images/monitoring-miku.png");
img_Picture = loadImage("/Images/pictureV2.jpg");
img_Juerg = loadImage("/Images/Profilbild_juerg.png");
img_Strawhat = loadImage("/Images/Strawhat.png");
img_Tux = loadImage("/Images/Tux-svg.png");
img_Waifu = loadImage("/Images/waifu1.png");
imageArray.push({ img: img_Gears, width: 800, height: 800 });
imageArray.push({ img: img_Joyboy, width: 681, height: 800 });
imageArray.push({ img: img_Git, width: 800, height: 800 });
imageArray.push({ img: img_Mai, width: 835, height: 800 });
imageArray.push({ img: img_Mai2, width: 800, height: 800 });
imageArray.push({ img: img_Miku, width: 800, height: 800 });
imageArray.push({ img: img_Monitoring, width: 800, height: 800 });
imageArray.push({ img: img_Picture, width: 800, height: 800 });
imageArray.push({ img: img_Juerg, width: 800, height: 800 });
imageArray.push({ img: img_Strawhat, width: 800, height: 800 });
imageArray.push({ img: img_Tux, width: 675, height: 800 });
imageArray.push({ img: img_Waifu, width: 1049, height: 800 });
}
function setup() {
createCanvas(720, 400);
image(img, 0, 0, 300, 300);
createCanvas(1400, 1400);
const { img, width, height } = imageArray[randomImageIndex];
image(img, 0, 0, width, height);
}

View File

@@ -0,0 +1,18 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Sketch</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<script src="/libraries/p5.min.js"></script>
<script src="/libraries/p5.sound.min.js"></script>
</head>
<body>
<script src="transformations.js"></script>
</body>
</html>

View File

@@ -1,13 +1,13 @@
function setup() {
createCanvas(800, 800);
background(200);
fill(150, 0, 0);
rect(0, 0, 60, 150);
createCanvas(800, 800);
background(200);
fill(150, 0, 0);
rect(0, 0, 60, 150);
translate(200, 120);
rotate(0.5);
scale(1.5);
translate(200, 120);
rotate(0.5);
scale(1.5);
fill(0, 150, 0);
rect(0, 0, 60, 150);
}
fill(0, 150, 0);
rect(0, 0, 60, 150);
}

View File

@@ -8,11 +8,11 @@
<link rel="stylesheet" type="text/css" href="style.css" />
<script src="libraries/p5.min.js"></script>
<script src="libraries/p5.sound.min.js"></script>
<script src="/libraries/p5.min.js"></script>
<script src="/libraries/p5.sound.min.js"></script>
</head>
<body>
<script src="sketch.js"></script>
<script src="./interactive-shapes.js"></script>
</body>
</html>

View File

@@ -47,7 +47,6 @@ function draw() {
}
// Connect to the first poing again
// or use endShape(CLOSE); but result is different
curveVertex(x[0] + centerX, y[0] + centerY);
// end controlPoint

View File

@@ -8,8 +8,8 @@
<link rel="stylesheet" type="text/css" href="style.css" />
<script src="libraries/p5.min.js"></script>
<script src="libraries/p5.sound.min.js"></script>
<script src="/libraries/p5.min.js"></script>
<script src="/libraries/p5.sound.min.js"></script>
</head>
<body>

View File

@@ -0,0 +1,2 @@
Whatever this is doing in creative coding lol
- Came, 08.06.2026

248
Week-4/Alle_Lyrics.txt Normal file
View File

@@ -0,0 +1,248 @@
My mem'ries so good and awful, it seems they gave me a grudge
But I have left bitterness and resentment behind me
And it is all thanks to him
Look, it's the clowns who think they know
How crushing loneliness can be
You know nothing 'til you come with me
And run wild! Release your rage
Let the winds of wrath blow them away
Not gonna live in compliance-iance-iance
I'm not playin' the victim, no more
Time to go rage, let's punish them all
For their love, I'm done trying to trust
Not gonna live in compliance-iance-iance
Gonna play with fire, backlit
By the flames
(Na-na-na-na-na-na-na-na)
(Na-na-na-na-na-na-na-na)
(Na-na-na-na-na-na-na-na)
By the end, everything turned to red
It was brutal yet so beautiful
A kind of red, pulls you in
And won't let you look away
Make you feel a bit feverish
Scarlet crimson lit up from behind
So bright, it'll make you go blind
Hypnotizing every eye
That sees its red aura blazing
Held captive by the allure
My heart got tangled up bad and now it's frayed
No matter how much I've learned
I understand but my anger's here to stay
The words rush out
Let's run wild! Release your rage
Let the winds of wrath blow them away
Not gonna live in compliance-iance-iance
I'm not playin' the victim, no more
Time to go rage, let's punish them all
For their love, I'm done trying to trust
Not gonna live in compliance-iance-iance
Gonna play with fire, backlit
By the flames
Though my anger exhausts me and I fall apart
My actions may cost me but
I can't let go of the past I refuse to move on
I know if you would listen, you would understand
It's time to enter into my bad
Dreamland you made for me and suffer like I have
So let's run wild! Release your rage
Let the winds of wrath blow them away
Not gonna live in compliance-iance-iance
I'm not playin' the victim, no more
Time to go rage, let's punish them
For their love, I'm done trying to trust
Not gonna live in compliance-iance-iance
Gonna play with fire, backlit
By the flames
(Na-na-na-na-na-na-na-na)
(Na-na-na-na-na-na-na-na)
(Na-na-na-na-na-na-na-na)We can choose the way of our future
Try a brand new path, we can change the world
We can change the world
Say goodbye to everyone who stands against us
No one has the power to stop a change that comes through music
No, you can't stop magic
Close your eyes and you can see the future before you
Every note I sing is bringin' you closer to your purpose
Once you're there, don't let go
You wanna play a real game, unfurl the chain
Melody strung out like we'rе walkin' on a tight rope
Don't wanna cry, don't wanna try, wanna forget
Just let mе live inside a dreamland, I wanna be free!
And let a brand new era dawn
I know that we can create a new world!
We can choose the way of our future
Try a brand new path, we can change the world
We can change the world
This boundless music brings transformation
Messages in song reach even further
This dream will come true, "I believe in you"
Ooh
Say goodbye to everything that's weighing you down
Transcend beyond reality to colorful worlds of music
We need to keep on rising
Close your eyes and take my hand, we're runnin' together
We don't have to live like this, I know we can all do better
I sing for liberation
You wanna play a real game, unfurl the chain
Melody lighting up the path to new horizons
Don't wanna cry, don't wanna try, wanna forget
Just let me live inside a dreamland, I wanna be free!
And let a brand new era dawn
I know that we can create a new world!
We can choose the way of our future
Try a brand new path, we can change the world
We can change the world
This boundless music brings transformation
Messages in song
Reach even further, reach even further
A new genesis
Ooh
A new genesisNa-na, na-na-na
Ready for my show
Okay, one man show
Listen, listen
Na-na, na-na-na
Ready for my show
Go crazy
Let's shake it off (Giga) (TeddyLoid)
Ha! Ya-ya-ya-ya-ya, show time
Behold the summit's grand arrival, come over now
Complete the night, alright, hell yeah, yeah, yeah, yeah
Getting pumped up, it's super easy, brah, brah, brah! Pow
It's beyond words, ain't nobody stop (Ha, ha)
Oh, the realm shines in stunning splendor
Attention! Let's make some noise
Soon, comes an impressive debut, expressing purpose with a voice of impact
The empty shrine has long been eradicated
Ay, cherry blossoms madly bloom, behold the grand arrival
I don't mean to show off, no, no
It's automatic, natural instincts overflow
On top of a ironic guillotine, have a blast, gracefully
Da-rat-a-tat-a, warning!
Na-na, na-na-na
Ready for my show
Hooray, rejoice in the spirit of delight
Shout it out, shout it out
Na-na, na-na-na
Ready for my show
Elegantly soaring, let emotions guide
Shout it out, shout it out (Ooh)
(Hey, uh) Eat it up
(Hey, ha) Rat-tat-tat-tat-tat (Pull up)
(Hey uh, wa-wa-wa)
Full bloom, all at once with full force, jump around
Look at me now
Passionately intense specification
Almost like a heart pounding fiercely through the skin (Exotic vox)
Eeny-meeny-miny-moe the view of the sunrise upon a presence
Set free the elusive feeling that's been playing hide and seek
(Adios rationality)
Becoming reckless (Ay, ay, ay)
Jabarabadabi a dual-faced deception
The ambitious one, got the juice it makes me jealous
Don't play tricks, don't loose your temper
Before reaching karma, let me wander and sway
Jabarabadabi a dual-faced deception
The ambitious one, got the juice it makes me jealous
Don't play tricks, don't loose your temper
Colorful butterfly (No escape)
You see, I can't stop anymore
Bounded by the noisy heartbeat
Daybreak painted with impulsive hues
Maddening basstones piercing through the lungs
Na-na, na-na-na
Ready for my show
Exceptional danger, boundless energy fills the air
Na-na, na-na-na
Ready for my show
It's all or nothing, ahh
Na-na, na-na-na
Ready for my show
Hooray, rejoice in the spirit of delight
Shout it out, shout it out
Na-na, na-na-na
Ready for my show
To bring applause, stay
Forget everything, shout it out
Ay, woah-oh-oh-oh
Right and left, all together, rat-a-tat-a-tat (Pull up)
With all your might, altogether (Clap, clap, clap)
Whatever it may be, let's chant together
Shout it out, shout it outᚨᚺ ᛉᚨᚾ ᛏᚨᚲ ᚷᚨᚺ ᛉᚨᚾ ᛏᚨᛏ ᛏᚨᛏ ᛒᚱᚨᚲ
ᚷᚨᚺ ᛉᚨᚾ ᛏᚨᚲ ᚷᚨᚺ ᛉᚨᚾ ᛏᚨᛏ ᛏᚨᛏ ᛒᚱᚨᚲ
Wandering heart, clouds above
Rain begins to fall down
My bitter tears flowing out, they never dry up
I let the words of a curse be my deliverance
ᛗᛁᛖ ᚾᛖᚷ ᛟᚾ
ᚾᚨᚺ ᛈᚺᚨᛋ ᛏᛖᛉᛉᛖ ᛚᚨᚺ
These ancient words like a hymn of reclamation
Not even death will escape them
How to center these troubled thoughts? I pray
Can the future bring calm to the sea? I beg
It's time for salvation to finally come
I feel this rage, and I'm feelin' it strong
This weeping and wailing has gone far too long
Nothing left but to yеll! Yeah! Yeah!
I know you feel it too so keep on singin' this song
Even whеn they abuse us, we'll keep singin' along
We'll start another big bang when we all sing as one
United, we're fightin', bring 'em down with our song of ruin
ᛗᛁᛖ ᚾᛖᚷ ᛟᚾ
ᚾᚨᚺ ᛈᚺᚨᛋ ᛏᛖᛉᛉᛖ ᛚᚨᚺ
We will rejoice when we get the freedom promised
The freedom so many die for
When there's nowhere to run we must find hope
Left forgotten within the light, there it glows
Keep making this music 'til you breath your last
We dream but never lose sight of the past
Illuminate hope and forget all the rest
Nothing left but to yell, yeah, yeah
It's time for salvation to finally come
I feel this rage, and I'm feelin' it strong
This weeping and wailing has gone far too long
Nothing left but to yell! Yeah! Yeah!
I know you feel it too so keep on singin' this song
Even when they abuse us, we'll keep singin' along
We'll start another big bang when we all sing as one
United, we're fightin', bring 'em down with our song of ruin
ᚷᚨᚺ ᛉᚨᚾ ᛏᚨᚲ ᚷᚨᚺ ᛉᚨᚾ ᛏᚨᛏ ᛏᚨᛏ ᛒᚱᚨᚲ
ᚷᚨᚺ ᛉᚨᚾ ᛏᚨᚲ ᚷᚨᚺ ᛉᚨᚾ ᛏᚨᛏ ᛏᚨᛏ ᛒᚱᚨᚲ

View File

@@ -0,0 +1,85 @@
Desert you
Ooh-ooh-ooh-ooh
Hurt you
We're no strangers to love
You know the rules and so do I
A full commitment's what I'm thinkin' of
You wouldn't get this from any other guy
I just wanna tell you how I'm feeling
Gotta make you understand
Never gonna give you up
Never gonna let you down
Never gonna run around
And desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie
And hurt you
We've known each other for so long
Your heart's been aching, but you're too shy to say it
Inside, we both know what's been goin' on
We know the game, and we're gonna play it
And if you ask me how I'm feeling
Don't tell me you're too blind to see
Never gonna give you up
Never gonna let you down
Never gonna run around
And desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie
And hurt you
Never gonna give you up
Never gonna let you down
Never gonna run around
And desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie
And hurt you
Ooh (Give you up)
Ooh-ooh (Give you up)
(Ooh-ooh)
Never gonna give, never gonna give (Give you up)
(Ooh-ooh)
Never gonna give, never gonna give (Give you up)
We've known each other for so long
Your heart's been aching, but you're too shy to say it
Inside, we both know what's been goin' on
We know the game, and we're gonna play it
I just wanna tell you how I'm feeling
Gotta make you understand
Never gonna give you up
Never gonna let you down
Never gonna run around
And desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie
And hurt you
Never gonna give you up
Never gonna let you down
Never gonna run around
And desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie
And hurt you
Never gonna give you up
Never gonna let you down
Never gonna run around
And desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie
And hurt you

29
Week-4/benutzerliste.txt Normal file
View File

@@ -0,0 +1,29 @@
BENUTZERLISTE
1. PRIMÄRE NUTZER (Main Target Group)
- Alltags-Organisierer
Nutzen die App täglich oder fast täglich, brauchen schnelle Erfassung und verlässliche Erinnerungen.
- Strukturierte Listen-Nutzer
Arbeiten gern mit einfachen Listen und Kategorien, möchten Übersicht ohne Komplexität.
- Deadline-/Reminder-Nutzer
Nutzen die App vor allem für „Erinnere mich rechtzeitig“, weniger für grosse Strukturen.
2. SEKUNDÄRE NUTZER (gelegentliche Nutzer)
- Gelegenheits-Planer
Öffnen die App nur ein paar Mal pro Woche, nutzen Basisfunktionen.
- Kalender-Fokus-Nutzer
Denken zeitbasiert, nutzen die App als Ergänzung zum Kalender.
- Projekt-orientierte Nutzer
Nutzen die App temporär für grössere Schul-/Arbeitsprojekte.
3. SONSTIGE (nicht Hauptzielgruppe, aber real vorhanden)
- Interessierte Test-Nutzer
Installieren → testen → eventuell behalten.
- Minimalisten
Nutzen selten ToDos, brauchen aber manchmal schnelle Erinnerungen oder kurze Notizen.
4. NICHT-NUTZER
- Bewusste Nicht-Nutzer
Organisieren alles im Kopf oder auf Papier, wollen keine App.
- Technische Pflichtrollen
Devs, Support, Admins gehören nicht zur echten Produktzielgruppe.

18
Week-4/l-system.html Normal file
View File

@@ -0,0 +1,18 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Sketch</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<script src="/libraries/p5.min.js"></script>
<script src="/libraries/p5.sound.min.js"></script>
</head>
<body>
<script src="l-system.js"></script>
</body>
</html>

68
Week-4/l-system.js Normal file
View File

@@ -0,0 +1,68 @@
let angle;
let axiom = "F";
let sentence = axiom;
let len = 100;
let rules = [];
rules[0] = {
a: "F",
b: "FF-[-F-F-F]+[+F+F+F]FF*[*F/F/F]/[/F*F*F]FF*[*F/F/F]/[/F*F*F]FF-[-F-F-F]+[+F+F+F]FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",
// c: "FF*[*F/F/F]/[/F*F*F]",
};
function generate() {
len *= 0.5;
let nextSentence = "";
for (let i = 0; i < sentence.length; i++) {
let current = sentence.charAt(i);
let found = false;
for (let j = 0; j < rules.length; j++) {
if (current == rules[j].a) {
found = true;
nextSentence += rules[j].b;
break;
}
}
if (!found) {
nextSentence += current;
}
}
sentence = nextSentence;
// createP(sentence);
turtle();
}
function turtle() {
background(51);
resetMatrix();
translate(width / 2, height);
stroke(255, 100);
for (let i = 0; i < sentence.length; i++) {
let current = sentence.charAt(i);
if (current == "F") {
line(0, 0, 0, -len);
translate(0, -len);
} else if (current == "+") {
rotate(angle);
} else if (current == "-") {
rotate(-angle);
} else if (current == "*") {
rotate(angle * 2);
} else if (current == "/") {
rotate(angle / 2);
} else if (current == "[") {
push();
} else if (current == "]") {
pop();
}
}
}
function setup() {
createCanvas(400, 400);
angle = radians(10);
background(51);
createP(axiom);
turtle();
let button = createButton("generate");
button.mousePressed(generate);
}

18
Week-4/markov-chain.html Normal file
View File

@@ -0,0 +1,18 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Sketch</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<script src="/libraries/p5.min.js"></script>
<script src="/libraries/p5.sound.min.js"></script>
</head>
<body>
<script src="markov-chain.js"></script>
</body>
</html>

52
Week-4/markov-chain.js Normal file
View File

@@ -0,0 +1,52 @@
let myData;
function preload() {
myData = loadStrings("onepiece.txt");
}
function setup() {
createCanvas(400, 300);
background(220);
const myDataSplit = myData.flatMap((str) => str.split(/\s+/)).filter(Boolean);
let map = new Map();
for (let i = 0; i < myDataSplit.length - 1; i++) {
let currentWord = myDataSplit[i];
let nextWord = myDataSplit[i + 1];
if (!map.has(currentWord)) {
map.set(currentWord, []);
}
map.get(currentWord).push(nextWord);
}
let phraseArray = [];
let currentWord = myDataSplit[Math.floor(Math.random() * myDataSplit.length)];
phraseArray.push(currentWord);
for (let i = 0; i < 150; i++) {
let possibilities = map.get(currentWord);
if (!possibilities || possibilities.length === 0) {
break;
}
let nextWord =
possibilities[Math.floor(Math.random() * possibilities.length)];
phraseArray.push(nextWord);
currentWord = nextWord;
}
let phrase = phraseArray.join(" ");
textAlign(LEFT, TOP);
textFont("Courier New");
textSize(12);
text(phrase, 20, 40, 360, 200);
text("- Someone unnamed", 20, 260);
}

36
Week-4/markovtest.js Normal file
View File

@@ -0,0 +1,36 @@
// An array of lines from a text file
let lines;
// The Markov Generator object
let markov;
// An output element
let output;
// Preload some seed data
function preload() {
lines = loadStrings("shakespere.txt");
}
function setup() {
// Join everything together in one long string
// Keep carriage returns so these will show up in the markov generator
let text = lines.join("\n");
// N-gram length and maximum length
markov = new MarkovGenerator(8, 400);
markov.feed(text);
//console.log(markov);
// Make the button
let button = createButton("generate");
button.mousePressed(generate);
noCanvas();
}
function generate() {
// Generate some text
let result = markov.generate();
// Put in HTML line breaks wherever there was a carriage return
result = result.replace("\n", "<br/><br/>");
createP(result);
}

1395
Week-4/onepiece.txt Normal file

File diff suppressed because it is too large Load Diff

121753
Week-4/shakespeare.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,109 @@
The Last Cartographer
There are no more blank spaces on the map. That's what they told Mirela when she was hired, and it turned out to be almost entirely false.
She had taken the job at the Institute for Geographical Memory because the salary was decent and the building had good light. The Institute was a strange place — part archive, part museum, part bureaucratic maze. Its hallways were lined with framed maps from every century, and the air smelled permanently of old paper and pencil graphite, as if cartography itself had a scent.
Her title was Cartographic Analyst, which mostly meant she sat in front of a computer comparing satellite data to historical records, looking for discrepancies. The work was tedious in the best way: quiet, precise, and occasionally surprising. You could spend an entire morning matching road names from a 1947 survey to current street layouts and find nothing. Then in the afternoon, some small thing — a misaligned river bend, a neighborhood that didn't exist in any official record — would make the whole day worth it.
The blank spaces, it turned out, were everywhere. They were just very small.
Mirela discovered the first one in October. She was cross-referencing land parcel data in the eastern part of the city, a dense residential district that had been rezoned twice in twenty years, when she noticed a lot with no assigned ID number. Not an error — just absence. The surrounding parcels had their numbers, their owners, their tax histories. This one had nothing. No name, no classification, not even the notation of "undeveloped land" that the city used as a catch-all for anything it hadn't gotten around to processing yet.
She flagged it, wrote up a note, and moved on. Standard procedure.
The note came back three days later with a stamp that read: REVIEWED — NO ACTION REQUIRED.
That should have been the end of it. Mirela was not by nature a person who pushed against official conclusions. She recycled, she paid her bills on time, she returned library books before the due date. She was, she had always assumed, a person who trusted systems to work the way they were supposed to.
But she had looked at that parcel. She had seen the gap in the data. And the gap had a shape — roughly rectangular, about forty meters by sixty, sitting between a hardware store and a row of townhouses she'd driven past a hundred times. It was not nothing. It was a very specific, very deliberate kind of nothing.
She printed the map coordinates on a piece of paper, folded it into her jacket pocket, and took the long way home.
---
The lot was real.
That sounds obvious, but it wasn't. Data gaps could mean a lot of things: corrupted files, bureaucratic lag, a property that had changed hands so many times that its records had fragmented across three different municipal databases and never been reconciled. Mirela had seen all of that before. Usually the physical reality matched the record: empty lot, chain-link fence, maybe a mattress someone had dumped.
This lot had a gate. Not a chain-link fence — an actual wrought-iron gate, painted black, attached to a stone wall that was maybe a meter and a half high. The wall ran along the side of the hardware store and the back of the townhouses. There were no signs. No posted hours, no warnings, no indications of ownership.
Through the bars of the gate she could see a garden.
It was not a neglected garden, full of weeds and collapsed structure. It was maintained — visibly, actively, recently maintained. There were raised beds with winter vegetables, a gravel path that curved toward the center of the lot, a small wooden bench, and several large clay pots with bare-branched shrubs that had been cut back for the season. In the far corner there was a tool shed, and through its small window she could see the orange handle of a watering can.
Someone came here. Someone grew things here. Someone had, at some point, decided that this forty-meter-by-sixty-meter rectangle of earth in the middle of a dense city grid would not have a parcel number, would not appear in municipal records, would not show up in any database that a cartographic analyst at the Institute for Geographical Memory might be asked to review.
Mirela stood at the gate for a long time, her breath making small clouds in the October air. Then she walked home and made dinner and thought about it until she fell asleep.
---
She went back four more times before she talked to anyone.
The second time, she brought a notepad and sketched the dimensions of the wall as best she could, pacing along the outside edge. The third time, she arrived early in the morning and waited, watching, for almost an hour, and saw no one. The fourth time, it was raining, and she stood under an umbrella and felt slightly absurd but didn't leave. The fifth time, the gate was open.
Not open as in unlocked. Open as in swung wide, propped with a brick, with clear evidence that whoever used this garden was currently using it. There was a wheelbarrow parked halfway along the gravel path, loaded with soil. A pair of gardening gloves sat on top.
Mirela stood in the open gateway and called out, "Hello?"
A woman emerged from behind the tool shed. She was in her sixties, wearing a canvas jacket and practical boots, with gray hair cut short and a face that was well-weathered in a way that suggested outdoor work rather than hard living. She did not look surprised to see Mirela. She looked, if anything, faintly resigned.
"You're from the Institute," the woman said.
Mirela blinked. "How did you know?"
"You came four times before you came in." The woman pulled off her gardening gloves. "That's an Institute approach. You document before you engage. Very methodical."
"I'm sorry — I wasn't trying to be strange about it."
"No, it's fine." The woman gestured at the bench. "Sit down if you want. I'll make tea. I usually have tea around this time."
Her name was Sofija. She had been maintaining the garden for eleven years. Before her, her mother had kept it for thirty years, and before that, someone else, and before that, someone else again. She didn't know how far back it went. The documents — and there were documents, a battered ledger kept in a waterproof box in the shed — went back to 1961, but the wall itself was older than that.
"It's not on any map," Mirela said, wrapping both hands around her tea mug.
"No," Sofija agreed.
"How?"
Sofija looked at her with an expression that was patient and just slightly amused. "You work at the Institute. You know how maps work. Someone has to make the decision to put something on them."
"But someone also has to make the decision not to."
"Yes." Sofija looked out at the garden, at the raised beds, at the bare-branched shrubs. "That's the harder thing to do, actually. It's much easier to put things on maps than to keep them off. Things want to be recorded. Data accumulates. You have to be very deliberate about absence."
Mirela thought about the stamp on her note. REVIEWED — NO ACTION REQUIRED. Someone at the Institute knew. Someone had always known, and had made the decision, generation after generation of bureaucratic review, to keep making the stamp.
"Why?" she asked.
Sofija was quiet for a moment, watching a sparrow land on the edge of one of the raised beds, peck at something, and fly away.
"There used to be more of them," she said finally. "Gardens like this. Places that weren't on any record. Not hidden, exactly — just unregistered. Unmapped. The city grew up around them and most of them got absorbed eventually, got assigned parcel numbers and sold and built over. This one is the last one I know of." She paused. "Maybe there are others I don't know about."
"What happens to it? When—" Mirela hesitated. "When you can't take care of it anymore."
"I'll find someone," Sofija said simply. "Someone who understands what it is. Someone who won't ask to have it registered." She looked at Mirela steadily. "What are you going to do?"
Mirela thought about the note she had written. About the stamp. About the job she had taken because the salary was decent and the building had good light, and about all the maps on all the walls in all the hallways, every blank space eventually filled in by someone with a pencil and a need to make things legible.
"Nothing," she said.
Sofija nodded, as if this was the answer she had expected, or the answer she had hoped for, or both.
"Drink your tea," she said. "It'll get cold."
---
That winter Mirela learned which vegetables grew well in raised beds in partial shade. She learned how to prune shrubs for winter dormancy, how to amend clay-heavy soil with grit, when to water and when not to. She learned to read the sky the way that gardeners do, with attention to the quality of light rather than its presence or absence.
She never wrote up a second report. She never mentioned the garden to anyone at the Institute. Sometimes, reviewing data, she would come across something that looked like another absence — a gap in the records, a lot with no number, a space that didn't officially exist — and she would make a note on a piece of paper and put it in her jacket pocket and take the long way home.
Some of them were just data errors. Most of them were just data errors.
But not all of them.
The world, it turned out, was full of blank spaces. You just had to know how to look for them, and then you had to know what to do when you found them: which was, most of the time, nothing at all. Just stand there. Just see it. Just let it be a thing that exists outside of any record, tended by someone who understands that not everything that matters needs to be on the map.
That is its own kind of cartography, Mirela thought. The careful mapping of what not to map.
She thought it was probably the most important kind.

View File

@@ -3,7 +3,71 @@
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<link rel="stylesheet" href="style.css" />
<title>Creative Coding Website</title>
</head>
<body></body>
<body>
<h1>Rectangles... Just rectangles</h1>
<div>
<iframe
src="/Week-1/rectangles.html"
style="height: 800px"
scrolling="no"
></iframe>
</div>
<h1>Images</h1>
<h3>styles (non-interactive):</h3>
<div>
<iframe src="/Week-2/Pictures/styles.html" style="height: 170px"></iframe>
</div>
<h3>basic image</h3>
<div>
<iframe
src="/Week-2/Pictures/image.html"
style="height: 815px"
scrolling="no"
></iframe>
</div>
<h3>Image Filter</h3>
<div>
<iframe
src="/Week-2/Pictures/image-filter.html"
style="height: 620px"
></iframe>
</div>
<h3>transformations (non-interactive)</h3>
<p>build entirely using p5.js math</p>
<div>
<iframe
src="/Week-2/Pictures/transformations.html"
style="height: 800px"
scrolling="no"
></iframe>
</div>
<h1>Shapes</h1>
<h3>interacive Shapes</h3>
<div>
<iframe
src="/Week-2/Shapes/interactive-shapes.html"
style="height: 1400px"
scrolling="no"
></iframe>
</div>
<h3>Bouncing DVD-type shape</h3>
<div>
<iframe
src="/Week-2/Shapes/moving-shapes.html"
style="height: 800px"
scrolling="no"
></iframe>
</div>
<h1>L-system</h1>
<div>
<iframe src="/Week-4/l-system.html" style="height: 600px"></iframe>
</div>
<h1>Markov Chain</h1>
<div>
<iframe src="/Week-4/markov-chain.html" style="height: 600px"></iframe>
</div>
</body>
</html>

11
website/style.css Normal file
View File

@@ -0,0 +1,11 @@
/* Reset body margins and prevent double scrollbars */
body {
margin: 0;
padding: 0;
}
iframe {
width: 100%;
height: 1400px;
border: none;
}