home.social

#wanderland — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #wanderland, aggregated by home.social.

fetched live
  1. Oh my goodness... I've had a full text search endpoint (powered by ripgrep of course) available in the API for ever and only a slug based search in the UI...

    No longer

    Hit highlighting, floating widget to scroll hits

    The search page filters on viewed / updated / created dates, plus passing through all the useful bits to shape the response.

    ripgrep is 💜 when ADHD is life ;)

    [I wonder if it can find my keys]

    #adhd #programming #wanderland

  2. Ghirija Jayarraj's 'Wanderland' Weaves Dance, Displacement, and Multi-media Narratives

    Ghirija Jayarraj's 'Wanderland' performance uses dance, theatre, and film to explore identity, displacement, and family history across Sri Lanka, India, and Australia.

    #Wanderland, #GhirijaJayarraj, #DanceTheatre, #DiasporaStories, #MulticulturalArts

    newsletter.tf/ghirija-jayarraj

  3. Ghirija Jayarraj's 'Wanderland' performance combines dance, film, and theatre. It explores themes of displacement and identity across Sri Lanka, India, and Australia.

    #Wanderland, #GhirijaJayarraj, #DanceTheatre, #DiasporaStories, #MulticulturalArts
    newsletter.tf/ghirija-jayarraj

  4. SmolChalk :: if SmallTalk and Erlang had a baby and it was web components for kids and it composed itself out of markdown and YAML

    smolchalk.dev/

    Just a bunch of little things that mostly don't suck all doing their best to give your children a place to learn whatever you can think of, and letting them explore and learn from the environment they're learning in while they do so.

    #humantools #computingforlittles #smoldata #smolchalk #wanderland

  5. Anyone following along probably has questions about just how the heck we're using a single YAML fence in a Markdown file as shared storage for multiple users?

    Well we're not.

    The <oculus-fence> Web Component assigns as session id the first time one is called. The rest of them share the same id while until the session expires. The `write_path` method intercepts calls containing X-Wanderland-Client-Id and cuts them their own slice of the universe - an overlay driver tracking an append-only list of updates made by that session.

    Replay on read. Multi-player ready. Collision proof updating.

    Game on Wayne. Game on Goose

    #emacs #wanderland #jupyter #orgmode

  6. It's Monday night, your daughter is at dance and you're stuck in town at the library waiting for her...

    [As you do]

    You're bored

    [As you do]

    What do you do?

    Goose Pong Mobile

    [As you do]

    PEEK / POKE / EXECUTE

    state = peek('goose-pong:game-state.yaml')

    poke('goose-pong:game-state.yaml', state)

    execute('goose-pong:board', action='poke_cell', params={'row': ball_row, 'col': ball_col, 'value': '🪩'})

    [As you were]

    #jupyter #emacs #orgmode #wanderland

  7. """
    Shut-up and take my money!
    """
    --- you, after seeing goose-pong played in a Markdown file in a browser

    ===

    Wanderland is built on executable Markdown - think Jupyter, but you know... not those bits...

    Markdown has ```code-fences, they're normally used for presentation. But semantics are semantics and MDAST is perfectly happy to pop them out of the tree so we'll take advantage of that to turn them into lovely little addressable distributed functions.

    And then we'll wrap them in Web Components to bring them to life (or Emacs, or Neovim, or you know... whatever can talk to a simple HTTP API)

    <oculus-fence> exposes a function
    <oculus-node> exposes some text (in this case a Markdown table standing in as our beer pong table)

    new-game resets the game
    take-turn ... takes a turn ;)

    Here we go

    #emacs #orgmode #jupyter #smoldata #wanderland #devops #devops_you_say_as_a_question_but_of_course_i_say_as_an_answer_distributed_functions_build_platforms

  8. """
    How does that make money for business?
    """
    --- my mom, a harsh critic

    +++

    Executable Markdown means executable markdown - fences are functions, the file is the I/O surface

    #emacs #orgmode #wanderland #smoldata #jupyter

  9. """
    Ooh...
    """
    --- he, after having a go at this

    ===

    Wanderland runs on executable Markdown. Code fences become distributed functions. Patterns in the structure of the text become API surfaces (to-do lists, tables, changelogs...).

    Lantern is the rendering engine in front of the graph built on custom Web Components with a two phase rendering pipeline: server side they expand with static content and a hydration marker for non-js enabled friends, client side detects the marker and explodes them into lovely rich, interactive control surfaces

    Like this one, for running those embedded fences.

    Take a Markdown document, write some code in it. Now you have a tool.

    Write some prose around it. Now you have a documented tool.

    Write a YAML block in it. Now you have a data store.

    Run it and push it to git. Now you have an audit trail

    Neat

    #wanderland #emacs #jupyter #orgmode

  10. """
    Ooh...
    """
    --- he, after having a go at this

    ===

    Wanderland runs on executable Markdown. Code fences become distributed functions. Patterns in the structure of the text become API surfaces (to-do lists, tables, changelogs...).

    Lantern is the rendering engine in front of the graph built on custom Web Components with a two phase rendering pipeline: server side they expand with static content and a hydration marker for non-js enabled friends, client side detects the marker and explodes them into lovely rich, interactive control surfaces

    Like this one, for running those embedded fences.

    Take a Markdown document, write some code in it. Now you have a tool.

    Write some prose around it. Now you have a documented tool.

    Write a YAML block in it. Now you have a data store.

    Run it and push it to git. Now you have an audit trail

    Neat

    #wanderland #emacs #jupyter #orgmode

  11. """
    Of course
    """
    --- he, answering the obvious question about themability

    #emacs #jupyter #wanderland

  12. When you're building tools, it's important that you meet people where they are.

    That means building your core with a surface area that can be consumed as broadly as possible, with as little effort as possible.

    That requires careful consideration. Usually, you need to get a lot of people in the room. Make big decisions.

    [PEEK/POKE/EXECUTE]

    It doesn't have to be hard. What you're going to be doing is going to boil down to one of those things anyways

    [Reading/Writing/Rithmaticing]

    Make it easy on yourself, smoldata is your data. Little things compose into lovely ones

    wanderland.dev

    #wanderland

  13. That's better.

    I'm not sure why everyone assumes /cyan/ of all colours should be the primary one when 💜 was right there

    Here's Neovim doing things that normally only the `org-babel` folk get to do

    Wanderland is built on the idea that computing shouldn't be opaque:

    See a thing, want a thing, have a thing

    In this case, I want to have the code fences in any Markdown node loaded in the graph be fully composable, distributed functions.

    So I could run them in my editor.

    Or from the CLI

    Or so Claude could play along

    As you do

    Neat

    #wanderland #neovim #orgmode #emacs #wanderland

  14. Oh Neovim, I didn't forget you

    Same API
    Same Markdown
    Same YAML

    (slightly different bindings... I need to clean that up)

    Oculus is /OK/ at this. Two things I learned.

    1. Event source all of the things
    2. See 1

    `wanderland-core` is the result.

    As a wise man with nice socks once said "Build back better"

    wanderland.dev/

    #neovim #wanderland #nicesocksdude

  15. Oh my goodness! I forgot about this too

    At the core of Wanderland is this thing I call computational Markdown

    [think Jupyter without all the hasslee]

    Can't be Turing complete without loops and conditionals and in a declarative world, you get there with composition

    When you need to test things that need to be a bit fluid well...

    When your knowledge graph has RPG semantics, you need a character sheet.

    Change one value and the entire thing shifts with it.

    Just Markdown with a bit of YAML in it

    Neat

    #wanderland #ruby #feelingabitaertoday

  16. Carrying on from yesterday's work to make mo' mode lines...

    Wanderland uses the idea of Detective Cases to represent tasks. It gives the work a framing that helps get your agent in the mood to dive into things and take a lot of notes if you play along

    [the assistant activation space doesn't have to stay where Anthropic wants it to be - they're theatre kids after all, play to their strengths]

    A case is a simple object of metadata + events. You can embed a <task-case> node anywhere you need something like that. Cases for sure, but comments on documents, guestbooks on public pages, the wild rantings and ravings on an old man...

    And with two Web Components, I've replaced about 1K LOC of hand rolled templating

    [and you can drop them anywhere, it's just Markdown with a bit of YAML in it]

    Neat

    #wanderland #webcomponents

  17. If you've never watched a letter based cellular automata try to spell "knowledge", "tasks" and "graph" while you're eating a bowl of ice cream and watching Chuck from the Buy-More play Jack Ryan on TV...

    ... it's an interesting way to finish off a Friday

    wanderland.dev

    #heschucknotjack #wanderland

  18. Documentation drifts, doubly so when Claude's involved

    When it matters, it helps to have eyes on

    In Wanderland, that means provenance and that means Web Components

    On the page, a mode line presents the current document hash, its version and whether or not the contents have drifted since the last checkpoint - because you never know who's might have POKE'd what

    Provenance is tracked in the site configuration, release is calculated from the change log

    Event source revision control... why not?

    #wanderland #eventsourcing #appendonlylife

  19. Knowledge work generates a lot of artifacts - documents, code, tasks, conversations.

    Wanderland organizes these as linked nodes in a shared graph... with benefits

    It's a graph-native platform for situated knowledge [and it's a lot of fun]

    wanderland.dev

    #ruby #selfhosted #platformengineering #wanderland #basicisnotboring

  20. Heh... can your microblog do this?

    Yes... I'm looking directly at you BlueSky and your "convenient" lack of an edit button

    ===

    Wanderland - just some markdown with a bit of YAML in it

    [and yes, there are emacs and neovim keybinds, I'm not an animal]

    #wanderland #emacs #neovim #orgmode

  21. The payoff of using Web Components in your platform is that you can remix and compose them

    They're the web equivalent of Lego MindStorms - little computational blocks of joy

    Be kind to yourself and make them self contained. Emits and Subscribes, nothing coupled

    And then the fun begins

    ===

    I've got a blog that I use to tell stories on how to build things

    And it needed to show real specs, so component was needed

    And now it's everywhere

    [including inside itself
    [including inside itself
    [including inside itself
    <not scrolling any more>
    ]]]

    sprout.loss.dev/

    #webcomponents #emacs #wanderland

  22. "Now", you say, "why the heck aren't you using a real framework React like a grown up?"

    "Because", I say, "I have a low tolerance for pain and a high tolerance for extremely empathetic systems, and the most empathetic systems are those the user can compose themselves."

    "After all", he concluded, "not everyone works the same and your tools should meet your users where they are. Wherever that might be"

    #platformengineering #devops #wanderland #humantools

  23. There she is in all her glory

    Document focused means the control surface should ideally get out da way

    That's what mode lines are for.

    Wanderland uses a Case system for task tracking

    [theatre kids love playing detective]

    The mode line injected at the top of the case detail page starts collapsed, but expands to give you access to everything you might need, including links to the rest of the system and beyond

    ===

    Like emacs, which has a completely isomorphic control plane (same API, same surface)

    Cuz... why wouldn't you?

    #wanderland #emacs #orgmode #platformengineering

  24. """
    Well hello there beautiful
    """
    --- me, a moment ago, for no reason in particular

    ===

    The mode line refactor in progress. Isn't that lovely?

    Serif text, dark on cream

    Straight lines

    Just a splash of colour to draw the eye

    Like Gutenburg intended

    #wanderland

  25. API | CLI | Test

    The test fixture is the same as the production config

    The test harness is its own application, same format, the YAML loads the YAML that tests itself

    [this guy has a thing for YAML]

    And you can run it yourself, make sure things are still working

    The same configuration projects all three faces, because when it's 2am and you just want to get back to bed, the test is the tool is the thing you need.

    #devops #platformengineering #ruby #wanderland

  26. Fixtures in Wanderland are fully formed applications

    Applications in Wanderland are just YAML files

    YAML files in Wanderland define routes as boundary chains with conditions

    Routes in Wanderland are isomorphic - the engine dispatches the same shape with Rack for HTTP, Commander for CLI and RSpec for testing

    Cuz when you've got a platform to support, who's got time to repeat themselves?

    #PlatformEngineering #wanderland #devops #ruby

  27. Mode lines and status bars

    Same function, different location. Information at a glance, quick interactions

    Wanderland uses modelines as its primary interface mechanism for interacting with documents

    Each indicator in the bar maps to one of its expanded functions. Quick access and status

    #emacs #orgmode #wanderland

  28. This is cool.

    AI is going to write stuff. It just is.

    You're going to read it, you're going to edit it, you're going to rewrite it when necessary

    And then you're going to sign it, just a little hash in the YAML that declares the site

    And that little modeline at the top of the page won't let it lie. If the content, drifts that lovely little splash of colour will remind you.

    Never fear, hashing API bound to Emacs and Neovim integrations provides an updated hash in your kill ring. Add a new changelog entry and everyone can be sure that your documentation is that good ol' organic, stick to your ribs variety

    git.sr.ht/~graemefawcett/wande

    #emacs #ruby #neovim #orgmode #wanderland

  29. Wanderland :: for when you've got to be really, really, really sure that World heard "Hello!"

    [to_addr |from_addr |type_addr] :: a record
    [trace | signature] :: a causal chain
    [result] :: anything you want it to be

    Signed, sealed and delivered. Fully auditable Merkle DAG.

    Just some Ruby and a bit of YAML where the test is the app is the test and everything is introspectable

    What else should we do?

    git.sr.ht/~graemefawcett/wande

    #ruby #wanderland

  30. Compliance is boring

    [Compliance is sexy]

    Compliance theater is boring

    [Completely agree]

    ===

    Wanderland has compliance built in. The engine cannot execute without generating a fully auditable trace of itself. Boundaries produce context updates as an append-only log.

    A single ContextVariable stack accumulates the layers and offers two projections:

    - ctx['Value'] -> the last value written to the key
    - ctx.Value -> the last event written containing the key

    Smooth value projection and a causal trace. Same object.

    git.sr.ht/~graemefawcett/wande

    #wanderland #complianceissexy

  31. org-capture is cool so I stole my favorite part.

    1. Visual select in a buffer

    <SPC> WCnc [capture selection]

    2. Staged selection in a buffer with capture (location, buffer mode etc). Ready for contextualization

    <SPC> WCns [submit note]

    3. The note is added to the parent task

    4. The task itself can be embedded as a collection of notes on a parent node in the graph

    Project management, change logs, grocery list, just some stuff you *really, really* want to remember?

    Just some markdown with a bit of YAML in it

    #wanderland #orgmode #emacs #markdown #webcomponents

  32. FYI - if you want to use caching in a distributed, event sourced system cache the projections as close to their final form as you can. Any further projection by the client aside for aesthetics is just another boundary between two people and the truth

    Alice and Bob didn't have a chance.

    Not spooky, just bad document management

    #wanderland #physics #distributedsweaters

  33. 🐷squeal squeal squeal🐷

    [that's how you say it right?]

    When all you know is one algorithm and it's decomposed to squeal everything's just a roll in the mud

    #wanderland #programming #engineering #thislittlepiggy

  34. When you only know one algorithm and you stare at it long enough, it starts to look like something else.

    [a hammer]
    [[a nail]]
    [[[an old friend]]]
    [[a coen]]
    [[[acorn]]]
    [[[[achoo]]]]
    [SQL]
    [[[[[SIGKOAN]]]]]

    #wanderland #engineering #programming #distributedsweaters

  35. You don't need SAAS.

    You don't need the cloud.

    You just need the Coen brothers and to pay attention to when The Dude speaks.

    ===

    """
    Love is all you need
    """
    --- jesus or summin

    [other Dude dude]

    """
    The rug really holds the room together, everything else is like your opinion man
    """
    --- the dude, speaking in metaphor, about the beauty of event sourcing and append only data structures when managing concurrent updates of shared documents in a mixed agentic / human workflow

    [there you are my pretties]

    #wanderland #engineering #distributedsweaters

  36. It was a long way to go to get a button back, but it's a lovely little button.

    A little web component that's detected if a `task-{uuid}` string appears in the markdown, and indicator of a case to be viewed. So it can be :)

    Except the docs are remote and the cases are local.

    Ne'er the 'twain shall meet

    Until they met a bi-di manifest sync that is

    A launch agent on one end, systemd timer on the other.

    Mobile interface lets me dictate case notes on the road

    Ping when things are connected.

    Eventual consistency is good enough for this guys brain

    #wanderland #humantools #engineering #building

  37. Yo... snappy found a new home in neovim

    Publish PDFs straight from Wanderland nodes

    Or use a YAML fence as a manifest and compose a book section by section

    [and yes `- mastodon: "tech.lgbt/@graeme/115980236376 is a valid section, shitposts as PDF filler content is my jam yo]

    #wanderland #engineering #neovim #orgmode #comingsoon

  38. """
    guess who's back?
    [back again]
    snippy's back
    [tell your friends]
    """
    --- me, a moment ago, vaguely remembering the lyrics to an Em song I've been shitposting for a week

    ===

    """
    🐌 Toodles y'all... it's Toodles 🐌
    """
    --- snippy, a moment ago, after her glorious resurrection

    ===

    """
    my goodness, it's nice to be back
    """
    --- my mind, upon returning

    #engineering #programming #toodlesyall #wanderland #autism

  39. Note to self:

    When building cognitive prosthetics to support your own differently abled cognition, do not in fact chase the squirrel so far into the hole on a rebuild that you lose half your damned mind.

    Luckily, I'd externalized it to a place of loss before I started

    Unfortunately, I must have stored that fact in the half that's been under construction.

    ```fish
    set -x OCULUS_API_URL shitposts.dev.local
    set -x OCULUS_API_USER theresalwaysanxkcdforthat
    set -x OCULUS_API_PASS correcthorsebatterystaple
    ```

    Now we just work our way back up the stack

    Stuffy
    Toodles
    Snippy

    ===

    We'll be back to shitposting in no time

    ===

    Split view...

    neat

    #wanderland #engineering #autism #adhd

  40. It's a long way to go for a requirements doc, but I think we've got it

    One table, append only

    Everything just depends on how you look at it

    #wanderland #crossings #engineering #physics #philosophy

  41. The 🐘s 💙 and 🩷 have been delivered to school.

    They'll be back in a few days.

    Time to build

    🧶 Loom :: Weave Your Thoughts, Warp Your Mind 🧶

    ===

    There's a joke about underestimating the bandwidth of a woody wagon fully loaded with backup tapes

    ...

    Imagine the context compression power of billions of years of biology

    Prompt engineering by innuendo === Context engineering by vaguely gesturing

    #wanderland #loom #engineering

  42. Ooh...

    This may no longer be a toy

    [yes it will]
    [[my last one ran an entire information platform]]
    [[[this one should be bigger]]]

    #wanderland #engineering #teachingisthermodynamics

  43. 🧶 Loom :: Weave Your Thoughts, Warp Your Mind 🧶

    It's back yo!

    The StreamEngine refactoring continues and I've decided it deserves the moniker

    [and I promised my Mom]

    Loom :: the engine
    Spindle :: the low level API
    Weave :: rich textual interface
    Tapestry :: the full progressively enhanced web interface

    Here we go

    #engineering #programming #wanderland #loom

  44. Once you find the right algorithms, it's just a matter of applying them in the correct spot.

    There's only like two you need two know.

    How to fetch stuff
    How to splice stuff

    This is how to splice stuff. You might have seen it before

    #engineering #programming #wanderland

  45. """
    capabilities are the way to go man
    """
    --- yoneda

    ===

    I mean, how cool is that.

    Just a bunch of markdown documents telling you what they can do

    [not what they are]
    [[what they can do]]]
    [[[it's not the same thing]]]
    [[[[youdidknowthatright]]]]
    [[[[[SIGKOAN]]]]]

    #engineering #wanderland #emacs #orgmode

  46. I loves me a good browser it seems

    Traces this time

    That should make debugging easier. Pictures for me, API and tools for the 🪿

    #engineering #wanderland #devops #devopsendgamewithallthecheatcodesandallthepeace

  47. Trust but verify

    1/2

    We're checking if the seal is valid, but not the content...

    🔄

    #engineering #wanderland

  48. We're going to run a little test.

    Two nodes:
    - one created with a fake provenance seal
    - one created without

    I'll approve both to 🍏 Verified and then I'll have a 🪿 with a ✏️ and do 🪿y things to them

    [clearly we're having issues listening and following directions this morning]
    [[clearly that's the whole point of this aspect of the system]]

    Lets see how we get on

    #abtestyourgeese #engineering #wanderland

  49. Sorry, I'm happy about this so here's the rest of my vacation slides

    Just mock data for now, but I mean how cool is that

    markdown > markdown > http > web component < markdown

    [pretty sure there's a rabbit in there somewhere too]

    The next iteration hydrates those web components right out of... what was that stuff called again?

    #wanderland #engineering #orgmode #neovim

  50. And on this day, our little girl got all growed up 😿

    But look at her 🎂

    Those can be a bit more markdown when we're done, but that is officially:

    1. markdown fences fedding
    2. markdown fences feeding
    3. fence exection api feeding
    4. web components composing
    5. markdown dashboard

    homoiconic and on and on... amen

    [tomorrow we'll finish wiring it all up and see if Polly was in fact the cracker inside all of us all along]

    #wanderland #engineering #mybabysallgrowedup #corporateselloutonthestreetsjustagirlinmarkdowninthesheets

  51. Well hello there Ms Cache, how are you today?

    Unified execution context is a lovely piece of machinery

    All fence executions are cached, regardless of caller. All come through the same door, first guy in lights the stove, everyone else takes their boots off and basks in the warmth of a cache it

    Nice

    Also, new me seems to love a brutalist typewriter theme... sorry

    #engineering #wanderland #devops #devopsendgamewithallthepeaceandnoneofthedevops

  52. 🧦 PIPPI - Pipeline Inspector and Interactive Processor Interface 🧦

    The 🐘💙🩷 are here and daddy may have fallen asleep with them for a while

    But we've made some progress

    Yesterday, we introduced the world to `pippi` our thematically correct and acronymically challenged new friend. She needs a home base from which to conquer the world...

    Villa Villekulla is coming...

    🌱 Sprout Garden 🌱 for the discerning analyst.

    A fully fledged web IDE for visual fence flow programming.

    A ```gridflow fence stores the layout of our grid.

    Source -> [stuff] -> Sink

    ===

    ```gridflow
    A1: Source << {ships: {battleship: [a3, a4], submarine: [d3, d4, d5]}}
    A2: right-arrow
    A3: guess
    A4: guess
    A5: Sink << {your_battleship}
    ```
    --- battleship or summin`

    ===

    We've got meaning on the edges
    We've got diffs across runs (we've even got pretty ones)
    The fences are like.. whatever (stateless transforms only please)

    We've even got execution traces down to the fence level in the output

    #engineering #devops #wanderland

  53. Look at at that little thing :)

    I love that little thing.

    Write some stuff, drop a list in a YAML

    🪿 reads it to learn
    🐘 reads it to learn
    🦸‍♀️ reads it to learn

    Best part is I can just click buttons in the bathtub now

    Y'all do sit with your thoughts sometimes right?

    [no one said you had to keep them inside while you're sitting]

    #engineering #programming #wanderland