💻 My corner on the internet kacaii.dev/
lustre evergarden wisp-place gleam atproto
1

Configure Feed

Select the types of activity you want to include in your feed.

blog/page/home: shuffle showcases list

kacaii.dev (Jul 22, 2026, 11:23 AM -0300) 7577f3f7 20ffd1de

+11 -10
+1 -1
dev/blog_dev.gleam
··· 22 22 } 23 23 24 24 fn fetch_showcase_icons() -> Nil { 25 - use showcase <- list.each(home.showcases) 25 + use showcase <- list.each(home.all_showcases) 26 26 let assert Ok(did) = did.parse(showcase.did) 27 27 28 28 use bits <- promise.try_await(fetch_bluesky_profile_picture(did))
+10 -9
src/blog/page/home.gleam
··· 18 18 } 19 19 20 20 pub type Model { 21 - Model 21 + Model(showcases: List(Showcase)) 22 22 } 23 23 24 24 pub fn init() -> #(Model, effect.Effect(Message)) { 25 - #(Model, effect.none()) 25 + let showcases = list.shuffle(all_showcases) 26 + #(Model(showcases:), effect.none()) 26 27 } 27 28 28 29 pub fn update( 29 - _model: Model, 30 + model: Model, 30 31 _message: Message, 31 32 ) -> #(Model, effect.Effect(Message)) { 32 - #(Model, effect.none()) 33 + #(model, effect.none()) 33 34 } 34 35 35 36 pub fn view( 36 - _model: Model, 37 + model: Model, 37 38 atproto: atproto.AtProto, 38 39 ) -> element.Element(Message) { 39 40 let html = [ 40 41 html.h1([], [html.text("home")]), 41 42 view_profile_card(atproto), 42 43 view_introduction(atproto), 43 - view_showcases(), 44 + view_showcases(model), 44 45 ] 45 46 46 47 element.fragment(html) ··· 173 174 ) 174 175 } 175 176 176 - fn view_showcases() -> element.Element(Message) { 177 + fn view_showcases(model: Model) -> element.Element(Message) { 177 178 let card = fn(showcase: Showcase) { 178 179 let icon_path = "/showcase/" <> string.lowercase(showcase.name) <> ".webp" 179 180 ··· 200 201 html.h2([], [html.text("people and projects i like")]), 201 202 keyed.div( 202 203 [attr.class("flex gap-1 overflow-x-scroll py-1")], 203 - list.map(showcases, card), 204 + list.map(model.showcases, card), 204 205 ), 205 206 ]) 206 207 } 207 208 208 - pub const showcases = [ 209 + pub const all_showcases = [ 209 210 Showcase( 210 211 name: "Giacomo", 211 212 did: "did:plc:vzaxc2idqnxovkqscsa3tvvi",