Compare commits

..

17 commits

Author SHA1 Message Date
ea055b97fb add 30-36
Some checks failed
test / test (push) Has been cancelled
2025-09-26 23:10:00 +10:00
graphiteisaac
8295974ed6 formatting 2025-07-29 20:04:04 +10:00
graphiteisaac
b110da980d add a heap of posts 2025-07-29 20:00:42 +10:00
graphiteisaac
5d6e5bce19 add provision 2025-07-29 19:52:01 +10:00
graphiteisaac
3a272c223c add cycles and some cruft 2025-07-29 19:49:42 +10:00
graphiteisaac
73981cf627 fix unclimbable title 2025-06-10 22:11:27 +10:00
graphiteisaac
6e9581fc7b fix formatting issue on security 2025-06-10 22:04:48 +10:00
graphiteisaac
5a531e4d9c correct echos post 2025-06-10 21:56:30 +10:00
graphiteisaac
71ac2852b1 add echoes 2025-06-10 21:55:15 +10:00
graphiteisaac
02259898d5 woops, fix and add posts 2025-06-05 10:24:26 +10:00
graphiteisaac
564796b299 add week 20 2025-06-05 10:21:18 +10:00
graphiteisaac
d372300575 update to latest gleam package versions and add several weeks lol 2025-05-27 13:09:47 +10:00
graphiteisaac
d073b9305d add secret gardens post 2025-04-08 22:22:49 +10:00
graphiteisaac
3d221841c3 fix post, woops 2025-03-31 18:10:26 +11:00
graphiteisaac
67cbe4685d envelopment 2025-03-31 18:09:02 +11:00
graphiteisaac
5e23f2b3a3 woops 2025-03-24 22:00:16 +11:00
graphiteisaac
67730a48d4 add delight 2025-03-24 21:56:12 +11:00
38 changed files with 993 additions and 65 deletions

BIN
bun.lockb

Binary file not shown.

View file

@ -14,15 +14,16 @@ target = "javascript"
# https://gleam.run/writing-gleam/gleam-toml/. # https://gleam.run/writing-gleam/gleam-toml/.
[dependencies] [dependencies]
gleam_stdlib = ">= 0.34.0 and < 2.0.0" gleam_stdlib = ">= 0.60.0 and < 2.0.0"
jot = ">= 2.0.0 and < 3.0.0" jot = ">= 5.0.0 and < 6.0.0"
simplifile = ">= 2.2.0 and < 3.0.0" simplifile = ">= 2.2.0 and < 3.0.0"
lustre = ">= 4.6.3 and < 5.0.0" lustre = ">= 5.1.0 and < 6.0.0"
birl = ">= 1.8.0 and < 2.0.0" birl = ">= 1.8.0 and < 2.0.0"
argv = ">= 1.0.2 and < 2.0.0" argv = ">= 1.0.2 and < 2.0.0"
glen = ">= 2.2.1 and < 3.0.0" # glen = ">= 2.2.1 and < 3.0.0"
gleam_javascript = ">= 0.13.0 and < 1.0.0" gleam_javascript = ">= 1.0.0 and < 2.0.0"
glen_node = ">= 0.0.2 and < 1.0.0" gleam_time = ">= 1.2.0 and < 2.0.0"
# glen_node = ">= 0.0.2 and < 1.0.0"
[dev-dependencies] [dev-dependencies]
gleeunit = ">= 1.0.0 and < 2.0.0" gleeunit = ">= 1.0.0 and < 2.0.0"

View file

@ -4,36 +4,31 @@
packages = [ packages = [
{ name = "argv", version = "1.0.2", build_tools = ["gleam"], requirements = [], otp_app = "argv", source = "hex", outer_checksum = "BA1FF0929525DEBA1CE67256E5ADF77A7CDDFE729E3E3F57A5BDCAA031DED09D" }, { name = "argv", version = "1.0.2", build_tools = ["gleam"], requirements = [], otp_app = "argv", source = "hex", outer_checksum = "BA1FF0929525DEBA1CE67256E5ADF77A7CDDFE729E3E3F57A5BDCAA031DED09D" },
{ name = "birl", version = "1.8.0", build_tools = ["gleam"], requirements = ["gleam_regexp", "gleam_stdlib", "ranger"], otp_app = "birl", source = "hex", outer_checksum = "2AC7BA26F998E3DFADDB657148BD5DDFE966958AD4D6D6957DD0D22E5B56C400" }, { name = "birl", version = "1.8.0", build_tools = ["gleam"], requirements = ["gleam_regexp", "gleam_stdlib", "ranger"], otp_app = "birl", source = "hex", outer_checksum = "2AC7BA26F998E3DFADDB657148BD5DDFE966958AD4D6D6957DD0D22E5B56C400" },
{ name = "conversation", version = "1.4.3", build_tools = ["gleam"], requirements = ["gleam_http", "gleam_javascript", "gleam_stdlib"], otp_app = "conversation", source = "hex", outer_checksum = "908B46F60444442785A495197D482558AD8B849C3714A38FAA1940358CC8CCCD" }, { name = "filepath", version = "1.1.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "filepath", source = "hex", outer_checksum = "B06A9AF0BF10E51401D64B98E4B627F1D2E48C154967DA7AF4D0914780A6D40A" },
{ name = "filepath", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "filepath", source = "hex", outer_checksum = "67A6D15FB39EEB69DD31F8C145BB5A421790581BD6AA14B33D64D5A55DBD6587" }, { name = "gleam_erlang", version = "0.34.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_erlang", source = "hex", outer_checksum = "0C38F2A128BAA0CEF17C3000BD2097EB80634E239CE31A86400C4416A5D0FDCC" },
{ name = "gleam_community_ansi", version = "1.4.2", build_tools = ["gleam"], requirements = ["gleam_community_colour", "gleam_regexp", "gleam_stdlib"], otp_app = "gleam_community_ansi", source = "hex", outer_checksum = "479DEDC748D08B310C9FEB9C4CBEC46B95C874F7F4F2844304D6D20CA78A8BB5" }, { name = "gleam_javascript", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_javascript", source = "hex", outer_checksum = "EF6C77A506F026C6FB37941889477CD5E4234FCD4337FF0E9384E297CB8F97EB" },
{ name = "gleam_community_colour", version = "1.4.1", build_tools = ["gleam"], requirements = ["gleam_json", "gleam_stdlib"], otp_app = "gleam_community_colour", source = "hex", outer_checksum = "386CB9B01B33371538672EEA8A6375A0A0ADEF41F17C86DDCB81C92AD00DA610" }, { name = "gleam_json", version = "3.0.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_json", source = "hex", outer_checksum = "5BA154440B22D9800955B1AB854282FA37B97F30F409D76B0824D0A60C934188" },
{ name = "gleam_erlang", version = "0.33.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_erlang", source = "hex", outer_checksum = "A1D26B80F01901B59AABEE3475DD4C18D27D58FA5C897D922FCB9B099749C064" }, { name = "gleam_otp", version = "0.16.1", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_stdlib"], otp_app = "gleam_otp", source = "hex", outer_checksum = "50DA1539FC8E8FA09924EB36A67A2BBB0AD6B27BCDED5A7EF627057CF69D035E" },
{ name = "gleam_http", version = "3.7.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_http", source = "hex", outer_checksum = "8A70D2F70BB7CFEB5DF048A2183FFBA91AF6D4CF5798504841744A16999E33D2" }, { name = "gleam_regexp", version = "1.1.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_regexp", source = "hex", outer_checksum = "9C215C6CA84A5B35BB934A9B61A9A306EC743153BE2B0425A0D032E477B062A9" },
{ name = "gleam_javascript", version = "0.13.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_javascript", source = "hex", outer_checksum = "F98328FCF573DA6F3A35D7F6CB3F9FF19FD5224CCBA9151FCBEAA0B983AF2F58" }, { name = "gleam_stdlib", version = "0.60.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "621D600BB134BC239CB2537630899817B1A42E60A1D46C5E9F3FAE39F88C800B" },
{ name = "gleam_json", version = "2.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_json", source = "hex", outer_checksum = "C55C5C2B318533A8072D221C5E06E5A75711C129E420DD1CE463342106012E5D" }, { name = "gleam_time", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_time", source = "hex", outer_checksum = "D71F1AFF7FEB534FF55E5DC58E534E9201BA75A444619788A2E4DEA4EBD87D16" },
{ name = "gleam_otp", version = "0.16.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_stdlib"], otp_app = "gleam_otp", source = "hex", outer_checksum = "FA0EB761339749B4E82D63016C6A18C4E6662DA05BAB6F1346F9AF2E679E301A" },
{ name = "gleam_regexp", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_regexp", source = "hex", outer_checksum = "A3655FDD288571E90EE9C4009B719FEF59FA16AFCDF3952A76A125AF23CF1592" },
{ name = "gleam_stdlib", version = "0.52.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "50703862DF26453B277688FFCDBE9DD4AC45B3BD9742C0B370DB62BC1629A07D" },
{ name = "gleam_yielder", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_yielder", source = "hex", outer_checksum = "8E4E4ECFA7982859F430C57F549200C7749823C106759F4A19A78AEA6687717A" }, { name = "gleam_yielder", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_yielder", source = "hex", outer_checksum = "8E4E4ECFA7982859F430C57F549200C7749823C106759F4A19A78AEA6687717A" },
{ name = "gleeunit", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "F7A7228925D3EE7D0813C922E062BFD6D7E9310F0BEE585D3A42F3307E3CFD13" }, { name = "gleeunit", version = "1.3.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "A7DD6C07B7DA49A6E28796058AA89E651D233B357D5607006D70619CD89DAAAB" },
{ name = "glen", version = "2.2.1", build_tools = ["gleam"], requirements = ["conversation", "filepath", "gleam_community_ansi", "gleam_http", "gleam_javascript", "gleam_stdlib", "marceau"], otp_app = "glen", source = "hex", outer_checksum = "836E324CD4604E19C04469156F3CAD71A5E26619582D2257DC6CD7B8D97D174E" }, { name = "houdini", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "houdini", source = "hex", outer_checksum = "5BA517E5179F132F0471CB314F27FE210A10407387DA1EA4F6FD084F74469FC2" },
{ name = "glen_node", version = "0.0.2", build_tools = ["gleam"], requirements = ["gleam_javascript", "glen"], otp_app = "glen_node", source = "hex", outer_checksum = "D2157D1E38B0963945E55F99E8C3F95FDA494DD1D3DF8DBF3A3744C4E501EA80" }, { name = "jot", version = "5.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib", "houdini", "splitter"], otp_app = "jot", source = "hex", outer_checksum = "2C1B30CC00B0D79F904028F48229C0BB354F3C1BC05EE99D4F3D423E223D85BF" },
{ name = "jot", version = "2.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "jot", source = "hex", outer_checksum = "81E61DA896901BFC0522DCFB14C661B6C70F0664C01D8B461F5F9B1A9E965FD4" }, { name = "lustre", version = "5.1.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_json", "gleam_otp", "gleam_stdlib", "houdini"], otp_app = "lustre", source = "hex", outer_checksum = "A0ADD4D936A49EE2CEBB8070F39058009122F0321D4B5445843D56E54875ECD8" },
{ name = "lustre", version = "4.6.3", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_json", "gleam_otp", "gleam_stdlib"], otp_app = "lustre", source = "hex", outer_checksum = "BDF833368F6C8F152F948D5B6A79866E9881CB80CB66C0685B3327E7DCBFB12F" },
{ name = "marceau", version = "1.3.0", build_tools = ["gleam"], requirements = [], otp_app = "marceau", source = "hex", outer_checksum = "2D1C27504BEF45005F5DFB18591F8610FB4BFA91744878210BDC464412EC44E9" },
{ name = "ranger", version = "1.4.0", build_tools = ["gleam"], requirements = ["gleam_stdlib", "gleam_yielder"], otp_app = "ranger", source = "hex", outer_checksum = "C8988E8F8CDBD3E7F4D8F2E663EF76490390899C2B2885A6432E942495B3E854" }, { name = "ranger", version = "1.4.0", build_tools = ["gleam"], requirements = ["gleam_stdlib", "gleam_yielder"], otp_app = "ranger", source = "hex", outer_checksum = "C8988E8F8CDBD3E7F4D8F2E663EF76490390899C2B2885A6432E942495B3E854" },
{ name = "simplifile", version = "2.2.0", build_tools = ["gleam"], requirements = ["filepath", "gleam_stdlib"], otp_app = "simplifile", source = "hex", outer_checksum = "0DFABEF7DC7A9E2FF4BB27B108034E60C81BEBFCB7AB816B9E7E18ED4503ACD8" }, { name = "simplifile", version = "2.2.1", build_tools = ["gleam"], requirements = ["filepath", "gleam_stdlib"], otp_app = "simplifile", source = "hex", outer_checksum = "C88E0EE2D509F6D86EB55161D631657675AA7684DAB83822F7E59EB93D9A60E3" },
{ name = "splitter", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "splitter", source = "hex", outer_checksum = "128FC521EE33B0012E3E64D5B55168586BC1B9C8D7B0D0CA223B68B0D770A547" },
] ]
[requirements] [requirements]
argv = { version = ">= 1.0.2 and < 2.0.0" } argv = { version = ">= 1.0.2 and < 2.0.0" }
birl = { version = ">= 1.8.0 and < 2.0.0" } birl = { version = ">= 1.8.0 and < 2.0.0" }
gleam_javascript = { version = ">= 0.13.0 and < 1.0.0" } gleam_javascript = { version = ">= 1.0.0 and < 2.0.0" }
gleam_stdlib = { version = ">= 0.34.0 and < 2.0.0" } gleam_stdlib = { version = ">= 0.60.0 and < 2.0.0" }
gleam_time = { version = ">= 1.2.0 and < 2.0.0" }
gleeunit = { version = ">= 1.0.0 and < 2.0.0" } gleeunit = { version = ">= 1.0.0 and < 2.0.0" }
glen = { version = ">= 2.2.1 and < 3.0.0" } jot = { version = ">= 5.0.0 and < 6.0.0" }
glen_node = { version = ">= 0.0.2 and < 1.0.0" } lustre = { version = ">= 5.1.0 and < 6.0.0" }
jot = { version = ">= 2.0.0 and < 3.0.0" }
lustre = { version = ">= 4.6.3 and < 5.0.0" }
simplifile = { version = ">= 2.2.0 and < 3.0.0" } simplifile = { version = ">= 2.2.0 and < 3.0.0" }

View file

@ -1,21 +1,22 @@
{ {
"name": "promptbox", "name": "promptbox",
"type": "module", "type": "module",
"version": "1.0.0", "version": "1.1.0",
"description": "[![Package Version](https://img.shields.io/hexpm/v/promptbox)](https://hex.pm/packages/promptbox) [![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/promptbox/)", "description": "",
"main": "index.js", "main": "index.js",
"directories": { "directories": {
"test": "test" "test": "test"
}, },
"scripts": { "scripts": {
"build": "gleam run build", "build": "gleam run build",
"dev": "vite",
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },
"keywords": [], "keywords": [],
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"devDependencies": { "devDependencies": {
"@chouqueth/gleam": "^1.7.0" "@chouqueth/gleam": "^1.9.0"
}, },
"dependencies": { "dependencies": {
"@tailwindcss/postcss": "^4.0.1", "@tailwindcss/postcss": "^4.0.1",

View file

@ -0,0 +1,39 @@
---
title: The End of Forever
week: 30
date: 2025-07-30
---
forever is my life,\
and each day it ends\
a new me tomorrow,\
how will we blend?
identity shattered,\
split between worlds\
yesterday's me,\
gone inward, curled
days keep coming,\
I'll never feel steady\
in spite of all this,\
here I am, ready
+++
I stare eyes out into the void\
ever expanding\
Consuming a life enjoyed\
ever disbanding
Everything now erodes away\
the brain stops thinking\
All that has past lost from today\
memory shrinking
Grasping for energy long gone\
using more than gained\
Life discharged by my every yawn\
increasingly drained
Errant hopes of being recast\
avoiding never\
Left to a breath that will be last\
ending forever

34
priv/posts/31-the-fury.md Normal file
View file

@ -0,0 +1,34 @@
---
title: The Fury
week: 31
date: 2025-08-06
---
the fury lives within me\
deep and on the surface\
tired hateful spite\
I'll live my life with purpose
each day I climb this mountain\
avoid my past with glee\
I sometimes dream of when they die\
the day I will be free
what they've done I shouldn't say\
though not my shame to hold\
some tell me just let it go\
but no, I'll never fold
+++
there in your wake i fan the flame\
desperate for it's destruction\
spurred by fear of a creeping freeze\
whelming down with force worrisome
flame i've stoked to an inferno\
raging forward in such rampage\
reigniting fires of the past\
scratching open the old scarring
now left a scorched and broken earth\
harrowed and ready for healing\
with ache from all that is damaged\
longing ever at what's now lost

View file

@ -0,0 +1,30 @@
---
title: The Cover's Blown
week: 32
date: 2025-08-13
---
I hide in sight,\
my truth concealed\
all bark no bite,\
my hurt unhealed
they poke sleeping bear,\
resistance is vain\
this world won't be fair,\
I try to explain
I let too much out,\
my cover is blown\
whine just to pout, \
I wish I was grown
+++
Our guise of ignorance has now fallen\
All shadows of doubt illuminated\
With years of your bombs disintegration\
Your pretence of defence crumbles away\
Yet still they say it's all far too complex\
Empathy held from kids too far away\
The victims that you expect to submit\
To accept all they've lost and not resist\
Lest rubble be made of their latest homes\
Left to cower under tarpaulin domes

View file

@ -0,0 +1,31 @@
---
title: Unconventional Deception
week: 33
date: 2025-08-20
---
like a moth to a flame,\
but the flame's just a light,\
deceived by this place,\
most days and some nights
It's not how they tell you,
'beware of the others',\
no, it's different in my life,\
and we'll never recover
a 'no' means a 'yes',\
or a 'maybe' means 'later',\
the message unclear,\
I'm confusion's translator
+++
Unconventional Deception:
A fib made as a placeholder\
Given to create a delay\
For when I'm a little bolder\
And it's the truth that I can say
Meant as such to create no harm\
Yet it has prioritised I\
Left as social mines to disarm\
Risk with every moralised lie

View file

@ -0,0 +1,29 @@
---
title: Recompense
week: 34
date: 2025-08-27
---
you can never pay back\
all the harm that you did\
can't even keep track\
of our zeroing bids
you don't deserve our fortitude\
nor secrecy, concealed\
for me this life has been tabooed\
but I will never yield
+++
A gift I wish I could give you\
Though none could possibly suffice\
Something lost I cant just renew\
Now left forever unaddressed
Discomfort grows as time slips by\
With stabs of guilt from every vice\
A call from which I must not shy\
To get this feeling off my chest
A shame this is what makes me cave\
And finally accept the price\
With hope for your resentments waive\
A sorry I'll try make precise

View file

@ -0,0 +1,22 @@
---
title: Collection
week: 35
date: 2025-09-04
---
collections, my predilections\
some things I'd never dream
childhood joy, as brooch or toy\
they make me really beam
the littlest pets, a plastic vet\
I beg to save them all
tiny trinkets, arts and crafts\
just can't avoid their call
+++
Another stick I stuck deep in my sack\
With a lick of luck in sure to not lack\
More I'll pick and pluck till I fill my pack\
Now a brick to buck lest it break my back\
Till this shtick I shuck when back in my shack

View file

@ -0,0 +1,29 @@
---
title: The Things Left Unsaid
week: 36
date: 2025-09-11
---
I don't like to think about\
the things I left unsaid\
thoughts run rough and tumble,\
cogitate all through my head
most often I say too much,\
those times I can forget\
however, when I bite my tongue,\
it builds my biggest debt
I always think I'll let it out,\
but then the moment comes\
I sit and sigh and roll my eyes,\
to this spell I have succumbed
+++
I'm lost for insufficient words\
Paralysed into inaction \
There stuck until the feeling curds\
A fight where I gain no traction
The telling of things left unsaid\
Placed on actions that betray me\
Such what I tell is lies instead\
All through which certainly they see

34
priv/posts/blinding.md Normal file
View file

@ -0,0 +1,34 @@
---
title: Blinding
week: 25
date: 2025-06-25
---
death is blinding\
it hurts each time\
in brand new ways\
that much I'm finding
it eats away at worldly trust\
here at once\
and not the next\
in what world is this just?
no one chooses their mortal end\
we must go on\
this fear prevails\
a lifelong friend
my nights and days pocked with confusion\
irrevocable, a life all done\
reflect, think back\
dream of illusion
+++
I feel my descent, caused by an unknown\
At least I hope, in dread of my suspect\
A most tragic fall, of what was once grown\
Allowed to crush others in its neglect
I can't help but notice the darkened sky\
I got myself here, and built my own binds\
So I'm left stuck, to watch the time pass by\
Praying for dawn, of such contrast it blinds

37
priv/posts/cycles.md Normal file
View file

@ -0,0 +1,37 @@
---
title: Cycles
week: 23
date: 2025-06-11
---
a well deserved break,\
then becomes holiday\
prepare to go back,\
did we ever get away?
it's a new group to learn,\
a space to decorate\
we all settle in,\
here to face the same fate
they grow and they learn,\
progress feels steady\
reports come and go,\
they'll never feel ready
a long sluggish term,\
the weeks never end\
events, celebrations,\
exhaustion, a new friend
the end is in sight,\
fear and joy seep in\
shut down our brains,\
till the new year's begin
+++
It turns a circle round\
To spin a web of lies\
A trick known by those wise
It's hand shown not as dealt\
A fibs betrayal felt\
Signed with delayed sound

31
priv/posts/delight.md Normal file
View file

@ -0,0 +1,31 @@
---
title: Delight
week: 11
date: 2024-03-18
---
awash with the sky\
away way up high\
take a seat down in comfort's sigh
out here with the sand\
I reach out my hand\
to our personal wonderland
deep breath of fresh air\
adorn nature's wear\
much delight always here to share
+++
The sound of your voice my mind cant deploy\
But how quick my resolve it would destroy\
And strip my brash veneer to leave me coy\
Disarmed by your song, a sound of joy
The touch of your lips I cant reminisce\
Only how I felt to receive your kiss\
That would send me into a lust abyss\
Anchored so tender by your touch of bliss
The colour of your eyes I cant recite\
I only recall how they would ignite\
Amazing feelings so superbly bright\
With I assume, the colour of delight

39
priv/posts/echoes.md Normal file
View file

@ -0,0 +1,39 @@
---
title: Echoes
week: 22
date: 2025-06-04
---
the sounds are coming back\
they're out on a spree\
my thoughts bounce and stack\
while walls restrain me
I turn, spin around\
look out over vast\
my mind wanders freely\
untied from my past
some day I'll need to go\
you'll see it on my face\
as all reflects back \
in that dreary dismal place
while walls restrain me\
my thoughts bounce and stack\
they're out on a spree\
the sounds are coming back
+++
You can still hear the echoes drum\
Their warning cries now muffled so\
Mistaken as a marching song\
Now spuring movement from the dead
A few with malice start a hum\
That leads a chant the people grow\
Now caught in drowning sing along\
They will forget those cries of dread
Recall the cries and echo some\
So they take heed and join the show\
Preserve the warnings, sound the gong\
Lest they become our own instead

44
priv/posts/envelopment.md Normal file
View file

@ -0,0 +1,44 @@
---
title: Envelopment
week: 12
date: 2024-03-25
---
my blankets of comfort,\
me of home and of world\
made sense once before,\
now all come unfurled
at home, I was me,\
proud, strong and hiding\
awaiting being found,\
scared, time was biding
in the world untrue,\
they don't all need to know\
how much can I keep in,\
at identity's plateau?
all fades away one day,\
who am I, in truth?\
wrapped up in this parcel,\
the bane of tender youth
+++
Skin turned callus\
Shocking how very thin\
Protecting what within\
Safe from malice
Callus turned scab\
I say it's just a cloak\
An eggs shell to my yolk\
rough as stone slab
Scab turned to scar\
Am I changed, or left raw\
What verdict should I draw\
Thoughts so bizarre
Scar turned putrid\
Left so unattended\
No longer defended\
Efforts mooted

39
priv/posts/flight.md Normal file
View file

@ -0,0 +1,39 @@
---
title: Flight
week: 14
date: 2025-04-08
---
precisely folded, in a pack,\
strapped on tight to adventurer's back:\
this daredevil I serve,\
as we fall, twist, and swerve
I'm gripped by her brain,\
always up in this plane:\
in my strength she can trust,\
leaning back, a strong gust
we fall, free and wild,\
lucidity like a child:\
my time coming soon,\
together, we're attuned
all at once, familiar tug,\
I spread out, a broad rug:\
the wind beneath my sails,\
slowed, the view details
down lower we float,\
no longer remote:\
we land safe on the shore,\
fold and reset me once more
+++
I leap with hand on withers as my guide\
To hoist myself atop his scaly back\
I find my place there saddled forward loin\
Now braced with hand on pommel stapped to crest
With small squeeze I sign for a swift rise\
A bold rush to great hight by wings beat\
I'm struck by the sharp bite of cold wind\
And weights ease that lifts me in deep dive

34
priv/posts/isolation.md Normal file
View file

@ -0,0 +1,34 @@
---
title: Isolation
week: 29
date: 2025-07-23
---
a walk each day, at five or eight\
through tender lanes between\
pea green blades, a path well-trodden\
black cat scales fence
faces covered, concealed with doubt\
passers by blur shadows longer\
their time is biding, stuck inside\
on lope through hour that's stopped
a seat by concrete tower\
cars rush by, to jump\
the evening breeze betrays us all\
till tomorrow, by myself
+++
Realising I've been remiss\
I feel the wind's change on my skin\
Now I'm ready to leave from this\
Yet here I wait in isolation
I can see my last out alight\
A shining new path to begin\
But this knowledge is only blight\
As here I rot in isolation
It's time to face the cold hard truth\
The problem must be from within\
A sad cherry on squandered youth\
So here I'll die in isolation

35
priv/posts/navigation.md Normal file
View file

@ -0,0 +1,35 @@
---
title: Navigation
week: 27
date: 2025-07-09
---
we have these ancient ways within,\
ocean currents and stars that spin\
at dizzying heights they guide us far,\
from mountain's peak to sandy bar
we navigate our world with hope,\
without exploring we lose our scope\
the planet shrinks and boundaries tighten,\
our fear of other will surely heighten
go out to your place, make peace,\
opportunities will never cease\
new experiences every day,\
life grows its brilliance along the way
+++
It's an art of minutiae\
Reliant on fiducia
My conviction of winds prevail\
Carried fourth by persistent gale\
With trust that this compass points true\
Keeping to headings we pursue
My belief the stars won't blink out\
As constellations mark our route\
With respect to the mappers chart\
And Information there impart
Many small leaps of faith contrive\
To keep my reckoning alive

29
priv/posts/oblivion.md Normal file
View file

@ -0,0 +1,29 @@
---
title: Oblivion
week: 26
date: 2025-07-02
---
I read your poems after school one day\
the feelings and fear never fell away\
a secret care to keep you near\
give private love, perpetual cheer
I can see you're doing better now\
you share your life and love aloud\
I am so glad you did not bend\
my dear and sweet and precious friend
+++
My wager offered to the deep\
Summoning beasts of it's abyss\
Here I patiently wait to reap\
Escape into oblivion
Answers go far and few between\
Stealing away that once held bliss\
The consequence of man's machine\
Innocence of oblivion
To avoid disobedience\
Now I can only reminisce\
nevermore to experience\
My handshake with oblivion

23
priv/posts/obsession.md Normal file
View file

@ -0,0 +1,23 @@
---
title: Obsession
week: 17
date: 2025-04-29
---
the rolling thought of\
everything, that keeps me up at\
night, led by errant\
realities, that are not so\
real, deranged --\
obsessive, wondering as to my\
fate, which others don't\
consider, it could all end\
tomorrow, I will feel\
better
+++
An itch that just doesn't fade\
Even if scratch is made\
Till my skin is frayed
I ignored, though it stayed\
Even when thoughts strayed\
My obsession unswayed

39
priv/posts/paranoia.md Normal file
View file

@ -0,0 +1,39 @@
---
title: Paranoia
week: 10
date: 2024-03-09
---
afraid of the winter,\
its perpetual cold and dark\
the fear pricks like a splinter,\
my difference is stark
scared of this season,\
its relentless beating chill\
in my mind it will squeeze in,\
forced to die on dismal hill
panicked, time is ticking,\
days more sad and short than ever\
amongst realities I am picking,\
escape this one, my endeavour
+++
An action taken, only thought on brief\
With arrogance as if a foolish chief\
Who sees the world as being but his fief\
How could this lead to anything but grief
Now what, It's done and cant be unwritten\
This fallout's not something I can handle\
I could run, find somewhere to stay hidden\
Till none care to remember this scandal
But how could they just forget and move on\
Knowing no retribution has been dealt\
To satisfy the warrant of their rage\
They'll surely come for me until it's wrought
So It's clear, must stay out of sight\
To avoid what's coming\
No matter how much it's deserved\
No matter what it takes

40
priv/posts/provision.md Normal file
View file

@ -0,0 +1,40 @@
---
title: Provision
week: 24
date: 2025-06-18
---
shelves stocked and bland\
prepared for all unplanned\
the end draws near\
founding small fear\
who knows what we can withstand
+++
Our voyage now draws out\
Yet our captain wont about\
Growing the crew's doubt\
As the supplies run ever thin
So we'll drink down the blood wine\
and we'll feast on flesh malign\
That we pretend is just swine\
Per sailors creed, provisions therein
We've run out the ships biscuit\
It's been weeks since that brisket\
Too hungry to resist it\
We resort to our own kin
So we'll drink down the blood wine\
and we'll feast on flesh malign\
That we pretend is just swine\
Per sailors creed, provisions therein
What was our daily pint of beer\
Has dropped to a pot so shear\
Towards John we now start to sneer\
Cause he finished off the gin
So we'll drink down the blood wine\
and we'll feast on flesh malign\
That we pretend is just swine\
Per sailors creed, provisions therein

View file

@ -0,0 +1,22 @@
---
title: Secret Garden
week: 13
date: 2025-04-01
---
The landscape was filled with hidings aplenty. Even though strange happenings often occurred here, curious people came in droves each summer. Lush greens and vibrant purples blanketed rich earth. Trees hushed solemnly. What if they found out what was drawing them all in?\
"This place is incredible," I heard my next victims exclaim. After their footsteps stilled, I lurched out and grabbed them, two unexpecting lovers. Leaves crunched under heavy foot as I dragged them back to my home. The garden around us laughed wickedly, another story to savour.
+++
Crawling though thriving shrubbery\
Giddy with anticipation\
The gate to a world of wonder\
Dewy from precipitation
Calming feelings that wash the senses\
The tickle of cool morning breeze\
Along sun rays that tender skin\
For prickle from heaped deadfall leaves
My destination brings comfort\
Sitting with my knees to my chest\
Within a small void of the bush\
Getting a moment of sweet rest

View file

@ -8,7 +8,7 @@ comfort on all sides\
out there are monsters,\ out there are monsters,\
beneath I must hide beneath I must hide
when darkness creeps in,\ when darkness creeps in,\
security squandered\ security squandered\
towards evil and horror,\ towards evil and horror,\
my mind has wandered my mind has wandered

38
priv/posts/souvenir.md Normal file
View file

@ -0,0 +1,38 @@
---
title: Souvenir
week: 18
date: 2025-05-06
---
purple elephant cup,\
rock from the office\
alien planet magnet,\
crystals, here before us
amongst my life,\
I find these things,\
wherever I dare go\
when I'm in strife,\
their memory clings,\
not really just for show
leftover lego pieces,\
skirt from Vanuatu\
worked-on wooden box,\
trinkets, I bought two
deep and hidden,\
they hide away,\
pretend to disappear\
history unwritten,\
hard to convey,\
a lifelong souvenir
+++
A plush ape of joy immature\
Tropical lamps to help endure\
Twisted glass of latent allure\
And golden flakes that's so unsure
All these items held souvenir\
For memories kept ever dear\
Recalling times no longer here\
So the feelings can persevere

51
priv/posts/susceptible.md Normal file
View file

@ -0,0 +1,51 @@
---
title: Susceptible
week: 16
date: 2025-04-22
---
you are not immune,\
your blind spots will prevail -\
the evil's out to get us,\
hook, thorn, lie and trail
'I'm not the problem,' you say with pride,\
to anyone who listens -\
but while you turn your back to them,\
they're pulling out munitions
'I don't think there's an issue,'\
you declare without a search -\
it's easy to miss the war\
from up there on that perch
'these people just complain too much,'\
you moan and whinge and spout -\
how lucky you are to live a life\
with little to grumble about
'supports are good, I guess,\
but some people are just bludging,'\
when all this push comes to shove,\
it's you that we'll be judging
look within, think for yourself,\
you've been far too susceptible\
in ignorance you may feel bliss,\
but disregard proves unacceptable
+++
Dressed up nice, but why I'm unsure\
To mourn a man I met not knew\
Yet I'll attend and act mature\
And show grief even if untrue
Sitting worried how it appears\
Given the lack of woe I've shown\
I see her there, eyes full of tears\
Such I feel welling in my own\
In this I discover new fears\
Of a world where I'm not alone
An effect which I was aware\
Yet for myself was skeptical\
In this bizarre awkward affair\
I've found myself susceptible

20
priv/posts/the-knife.md Normal file
View file

@ -0,0 +1,20 @@
---
title: The Knife
week: 28
date: 2025-07-16
---
a tool for many uses\
a blade that seldom muses\
the edge dramatic\
feeling deep, somatic\
and from you, the blood, it oozes
+++
It cuts so deep into my flesh\
A spot left raw by bruise unknown\
Weakened right the way down to bone\
Throughout time as though damage fresh
Something you had meant to be kind\
But my knee-jerk is to despise\
So I put up a foolish guise\
And instinctively stab out blind

View file

@ -82,7 +82,8 @@ Yet still I strive this feat
Hydra of error found\ Hydra of error found\
A web of fixes wound\ A web of fixes wound\
Too much going on here\ Too much going on here\
Function become unclear\ Function become unclear
Inertia left uncapped\ Inertia left uncapped\
Cycle of ego trapped\ Cycle of ego trapped\
Effort I must sustain\ Effort I must sustain\

23
priv/posts/unclimbable.md Normal file
View file

@ -0,0 +1,23 @@
---
title: Unclimbable
week: 20
date: 2025-05-20
---
I found this big old hill\
Up it I cannot climb\
Instead here I'll use my quill\
Maybe I can make a rhyme
At the base here I am stuck\
No writing on my page\
My silly thoughts all run amok\
Lost in another age
+++
Grasping vines slick with dew\
The thorns gripping like glue\
Limbs catching a tangle\
Grant a moments dangle\
Hold options reducing\
Making easy choosing\
Task thought infeasible\
So found achievable

View file

@ -0,0 +1,29 @@
---
title: Under Cover of Darkness
week: 21
date: 2025-05-27
---
slinking by the side-lines\
creeping round the crook\
the cat goes where it pleases\
when you see it with that look
prowling in its prison\
tiptoe through trapdoor\
when the cat here wants to play\
playing must mean war
+++
I now recollect, with increased alarm\
My brazen path, a trail of treacheries\
It spurs the urge to run, retire the harm\
Left hidden in forgotten memories
I now recount, unease clawing my skin\
My careless words, said quick and uncontrolled\
It holds the tongue silent, cloaking the sin\
Left shrouded in tales of a past untold
I now confront, in fear of the dictums\
The damage I have done, unknown in breadth\
I'll keep myself alone, far from victims\
Till forever buried by death's escape

39
priv/posts/violence.md Normal file
View file

@ -0,0 +1,39 @@
---
title: Violence
week: 15
date: 2025-04-15
---
I don't want to write about violence\
it's much too hard to think about\
all the pain and hurt we give each other\
concealed with hate and doubt
a raging river, the endless stream\
we all fall in sometimes\
perpetrator, victim too\
complex connection paradigms
it's normal here, will always be\
at least that's how it seems\
so many find this status quo\
is something of their dreams
mild mannered monsters\
hiding in plain sight\
they lie in wait, unknowing\
they'll set your life alight
+++
An act so vile\
Not done to one\
But rather left\
To quell an it
The triumph felt\
May quench the fear\
Of notions found\
On premise false
But if allowed\
To declass one\
The wound that's dealt\
Will shackle all

34
priv/posts/voyage.md Normal file
View file

@ -0,0 +1,34 @@
---
title: Voyage
week: 19
date: 2025-05-13
---
humongous high beam waves\
crashing with a roar\
lashing on our hull\
beneath the cabin floor
across the sea we travel\
destinations not so near\
this voyage gently carried\
by unrelenting fear
land on the horizon\
speaks out to us with hope\
peered at from afar\
with brass and glass turned scope
the ending's now in sight\
as we wash up by the dock\
bashed and bruised and battered\
our sea-torn home-bound flock
+++
Sails filled with billows, spurring our bows breach\
The morns brisk wind brings waves of frigid spray\
Maintaining course, sail trimmed for a beam reach.\
Our only trace a wake in quick decay
At nights fall surrounded by glistening\
The starry reflections on moving seas\
But ye beware of late night listening\
The sirens song turns sweet the bitter breeze

View file

@ -1,4 +1,4 @@
import birl import gleam/time/calendar
import lustre import lustre
import lustre/element/html import lustre/element/html
import promptbox/parser import promptbox/parser
@ -29,7 +29,7 @@ fn view(_model) {
slug: "ebben-flow", slug: "ebben-flow",
title: "ebben flow", title: "ebben flow",
week: 1, week: 1,
date: birl.now(), date: calendar.Date(1970, calendar.January, 1),
post_p: "No", post_p: "No",
post_j: "OK", post_j: "OK",
), ),

View file

@ -1,9 +1,9 @@
import birl
import gleam/dict import gleam/dict
import gleam/int import gleam/int
import gleam/list import gleam/list
import gleam/result import gleam/result
import gleam/string import gleam/string
import gleam/time/calendar
import jot import jot
pub type Post { pub type Post {
@ -11,7 +11,7 @@ pub type Post {
slug: String, slug: String,
title: String, title: String,
week: Int, week: Int,
date: birl.Time, date: calendar.Date,
post_p: String, post_p: String,
post_j: String, post_j: String,
) )
@ -19,6 +19,7 @@ pub type Post {
pub fn parse_post(slug: String, content: String) -> Post { pub fn parse_post(slug: String, content: String) -> Post {
let assert [_, frontmatter, posts] = string.split(content, "---\n") let assert [_, frontmatter, posts] = string.split(content, "---\n")
let frontmatter = let frontmatter =
frontmatter frontmatter
|> string.split("\n") |> string.split("\n")
@ -27,7 +28,8 @@ pub fn parse_post(slug: String, content: String) -> Post {
False -> Error(Nil) False -> Error(Nil)
True -> { True -> {
let assert [key, value] = let assert [key, value] =
string.split(entry, ":") |> list.map(string.trim) string.split(entry, ":")
|> list.map(string.trim)
Ok(#(key, value)) Ok(#(key, value))
} }
@ -49,9 +51,25 @@ pub fn parse_post(slug: String, content: String) -> Post {
|> result.try(int.parse) |> result.try(int.parse)
|> result.unwrap(-1), |> result.unwrap(-1),
date: dict.get(frontmatter, "date") date: dict.get(frontmatter, "date")
|> result.try(birl.parse) |> result.try(parse_date)
|> result.unwrap(birl.now()), |> result.unwrap(calendar.Date(1970, calendar.January, 1)),
post_p:, post_p:,
post_j:, post_j:,
) )
} }
fn parse_date(time_str: String) -> Result(calendar.Date, Nil) {
case
time_str
|> string.split("-")
|> list.filter_map(int.parse)
{
[year, month, date]
if year > 2000 && month > 0 && month < 13 && date > 0 && date < 31
-> {
let assert Ok(month) = calendar.month_from_int(month)
Ok(calendar.Date(year, month, date))
}
_ -> Error(Nil)
}
}

View file

@ -1,6 +1,7 @@
import gleam/int import gleam/int
import gleam/list import gleam/list
import lustre/attribute.{attribute, class} import lustre/attribute.{attribute, class}
import lustre/element
import lustre/element/html import lustre/element/html
import promptbox/parser import promptbox/parser
@ -30,20 +31,24 @@ pub fn home(posts: List(parser.Post)) {
} }
pub fn individual(post: parser.Post) { pub fn individual(post: parser.Post) {
html.div([class("container px-4 mx-auto")], [prompt_element(post)]) html.div([class("container px-4 mx-auto")], [prompt_element(post)])
} }
fn prompt_element(post: parser.Post) { fn prompt_element(post: parser.Post) {
html.article([class("post py-8"), attribute.id(post.slug)], [ html.article([class("post py-8"), attribute.id(post.slug)], [
html.h2([class("prompt_title text-center text-4xl font-bold italic mb-1")], [html.text(post.title)]), html.h2([class("prompt_title text-center text-4xl font-bold italic mb-1")], [
html.h5([class("prompt_week text-center italic text-slate-700 mb-5")], [html.text("Week " <> int.to_string(post.week))]), html.a([attribute.href("/prompts/" <> post.slug)], [html.text(post.title)]),
]),
html.h5([class("prompt_week text-center italic text-slate-700 mb-5")], [
html.text("Week " <> int.to_string(post.week)),
]),
html.div([class("flex flex-col")], [ html.div([class("flex flex-col")], [
html.article([class("prose text-left")], [ html.article([class("prose text-left")], [
html.div([attribute("dangerous-unescaped-html", post.post_p)], []), element.unsafe_raw_html("", "div", [], post.post_p),
html.cite([class("text-slate-800")], [html.text("~ P")]), html.cite([class("text-slate-800")], [html.text("~ P")]),
]), ]),
html.article([class("prose text-right self-end")], [ html.article([class("prose text-right self-end")], [
html.div([attribute("dangerous-unescaped-html", post.post_j)], []), element.unsafe_raw_html("", "div", [], post.post_j),
html.cite([class("text-slate-800")], [html.text("~ J")]), html.cite([class("text-slate-800")], [html.text("~ J")]),
]), ]),
]), ]),

View file

@ -1,6 +1,4 @@
import birl import gleam/time/calendar
import gleam/io
import gleam/result
import gleeunit import gleeunit
import gleeunit/should import gleeunit/should
import lustre/element import lustre/element
@ -13,21 +11,24 @@ pub fn main() {
gleeunit.main() gleeunit.main()
} }
// gleeunit test functions end in `_test` pub fn parse_basic_post_test() {
pub fn hello_world_test() { "---
let post = title: a title
simplifile.read("./priv/posts/ebb_and_flow.md") week: 1
|> result.unwrap("") date: 2025-01-01
|> parser.parse_post("ebb_and_flow") ---
|> io.debug Post content 1
+++
io.debug(birl.to_date_string(post.date)) Post content 2"
|> parser.parse_post("a-title", _)
files.read_all_posts() |> should.equal(parser.Post(
|> io.debug slug: "a-title",
title: "a title",
1 week: 1,
|> should.equal(1) date: calendar.Date(2025, calendar.January, 1),
post_p: "<p>Post content 1</p>\n",
post_j: "<p>Post content 2</p>\n",
))
} }
pub fn generate_test() { pub fn generate_test() {

12
vite.config.ts Normal file
View file

@ -0,0 +1,12 @@
import { defineConfig } from "vite";
import gleam from "vite-gleam";
import tailwindcss from "@tailwindcss/vite";
export async function run_vite_server() {}
export default defineConfig({
server: {
port: 1337,
},
plugins: [gleam(), tailwindcss()],
});