#humantools — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #humantools, aggregated by home.social.
-
SmolChalk :: if SmallTalk and Erlang had a baby and it was web components for kids and it composed itself out of markdown and YAML
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
-
SmolChalk :: if SmallTalk and Erlang had a baby and it was web components for kids and it composed itself out of markdown and YAML
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
-
How to seriously over-engineer a typing tutor for a five year old.
[I love it]
-
How to seriously over-engineer a typing tutor for a five year old.
[I love it]
-
Aww... smol-button
Look how helpful smol-button is. Just a general purpose event emitter.
Now... all I need is a general purpose stuff doer to wire up to a general purpose stuff starter. Where can I find one of those I wander?
Oh right
#ruby #devops #computingforlittles #platformengineering #humantools
-
Aww... smol-button
Look how helpful smol-button is. Just a general purpose event emitter.
Now... all I need is a general purpose stuff doer to wire up to a general purpose stuff starter. Where can I find one of those I wander?
Oh right
#ruby #devops #computingforlittles #platformengineering #humantools
-
If you can describe your architecture as just a bunch of little things that mostly don't suck, then it probably works just fine
smol-settings[-typography|sound] :: settings w/ optional submodules
smol-letter-canvas :: themeable textarea with output character stream
smol-emoji-picker :: kids like emojis
smol-pattern-matcher :: looks for character patterns in streams, emits emojis
smol-discoveries :: card list for matched patterns
smol-speak :: did you know your brower sounds like simon?
smol-celebrate :: cellies for littles
smol-help :: for mom and teacher
smol-page :: hold a thing
smol-footer :: modeline for curious minds -
If you can describe your architecture as just a bunch of little things that mostly don't suck, then it probably works just fine
smol-settings[-typography|sound] :: settings w/ optional submodules
smol-letter-canvas :: themeable textarea with output character stream
smol-emoji-picker :: kids like emojis
smol-pattern-matcher :: looks for character patterns in streams, emits emojis
smol-discoveries :: card list for matched patterns
smol-speak :: did you know your brower sounds like simon?
smol-celebrate :: cellies for littles
smol-help :: for mom and teacher
smol-page :: hold a thing
smol-footer :: modeline for curious minds -
Once you break everything down to components and messages, the rest is just wiring :: events and streams are the two envelope primitives with scalars, lists and typed objects inside
- Typography settings events are consumed by the text panel and the local-store for persistence. The local-store emits on load to hydrate. Same event, different source, full lifecycle
- Character stream events are emitted on key-up and consumed by a compute only pattern-matcher, it's emissions are consumed by the text panel for highlighting and by the card panel for a pictorial update of the same event
- The same pattern-matcher events are captured by a wee toast which filters and displays only the first instance of each wordetc
Neat
-
Once you break everything down to components and messages, the rest is just wiring :: events and streams are the two envelope primitives with scalars, lists and typed objects inside
- Typography settings events are consumed by the text panel and the local-store for persistence. The local-store emits on load to hydrate. Same event, different source, full lifecycle
- Character stream events are emitted on key-up and consumed by a compute only pattern-matcher, it's emissions are consumed by the text panel for highlighting and by the card panel for a pictorial update of the same event
- The same pattern-matcher events are captured by a wee toast which filters and displays only the first instance of each wordetc
Neat
-
That's one way to to it. Read/write keys directly to the smol-data store and they immediately take effect, captured in the user-overlay and applied wherever the site cares about it.
Now to hide a little button somewhere that pops a form. Maybe challenges unlock different keys.
Are kids motivated by unlocking customizability of their own learning platform or is that just something I'm projecting?
-
That's one way to to it. Read/write keys directly to the smol-data store and they immediately take effect, captured in the user-overlay and applied wherever the site cares about it.
Now to hide a little button somewhere that pops a form. Maybe challenges unlock different keys.
Are kids motivated by unlocking customizability of their own learning platform or is that just something I'm projecting?
-
So... what happened was I sat down to update the design language and then stuff gets a little hazy and before you know these things showed up
We're calling it `SmolChalk` :: a blessingful crossing of SmallTalk and computing for littles where everything is a component, they speak in messages and they look like chalk drawings on the sidewalk
Data driven site design, including a schema for the data model and the events. I want the whole thing to be inspectable by curious minds. The core site config is read-only, everyone gets their own append-only log on top for edits.
iPads are for consumption. Computers are for learning. SmolChalk should be fun
-
So... what happened was I sat down to update the design language and then stuff gets a little hazy and before you know these things showed up
We're calling it `SmolChalk` :: a blessingful crossing of SmallTalk and computing for littles where everything is a component, they speak in messages and they look like chalk drawings on the sidewalk
Data driven site design, including a schema for the data model and the events. I want the whole thing to be inspectable by curious minds. The core site config is read-only, everyone gets their own append-only log on top for edits.
iPads are for consumption. Computers are for learning. SmolChalk should be fun
-
The Government of Canada has a design language published here https://design.canada.ca/. I've always found the design of government websites fascinating, the UK government has a similar language in their properties.
The idea is that you need to communicate your desire in a way that's able to be interpreted by as wide an audience as possible so that they can navigate a process they may need a lot of help navigating.
I've borrowed what I can as the "Elephant Design Language" and I think it's time we take another pass at it.
It's just vanilla web components. I'm going to extract out a suite of common elements, text areas, font + typography config, state emitters etc. Add a YAML provider for state data and a wee event bus to wire it all up.
I'm calling it SmolChalk for reasons I find adorable
-
The Government of Canada has a design language published here https://design.canada.ca/. I've always found the design of government websites fascinating, the UK government has a similar language in their properties.
The idea is that you need to communicate your desire in a way that's able to be interpreted by as wide an audience as possible so that they can navigate a process they may need a lot of help navigating.
I've borrowed what I can as the "Elephant Design Language" and I think it's time we take another pass at it.
It's just vanilla web components. I'm going to extract out a suite of common elements, text areas, font + typography config, state emitters etc. Add a YAML provider for state data and a wee event bus to wire it all up.
I'm calling it SmolChalk for reasons I find adorable
-
Lazy Sunday and Daddy misses his 🩷🐘
She loves typing, mostly making shapes with the letters
Daddy used to do it with PETSCII on his C64
Going to steal some of that desire to teach :: typing | reading
Pick a word, simple guidance :: LETTER | row | position | highlighted key
Colour coded row | position references for quick recognition
She loves to type :)
-
Lazy Sunday and Daddy misses his 🩷🐘
She loves typing, mostly making shapes with the letters
Daddy used to do it with PETSCII on his C64
Going to steal some of that desire to teach :: typing | reading
Pick a word, simple guidance :: LETTER | row | position | highlighted key
Colour coded row | position references for quick recognition
She loves to type :)
-
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
-
This is how you do pair programming BTW
Neither one of you types, not for a long while
Pair programming is a conversation between minds
Once alignment is established, then the morphisms can flow.
The mutations are the meaning.
Once meaning is distributed equally, the work begins
===
We're working on unifying addressing across the fence operations. Virtual (structured text) and logical (```blocks) fences were being indexed separately with different addressing schemes and calling semantics
Not in my homoiconic universe
Lebowski to the rescue and now we're talking alignment
Everything is everything with middleware the load bearing functor
Unified addressing
Unified instruction set
Unified storageIn Wanderland, we don't believe in #labels we believe in #capabilities
#devops #devopsendgamewithallthecheatcodes #humantools #engineering
-
Did you know you can put whatever you want into your MCP tools schema?
Help files?
What do you in case of errors?
`dig +short AAAA haiku.loss.dev`
Haikus?
How about operating instructions? Your system won't be perfect
Mine is
Your system won't be perfect, you'll need to help your 🪿 friends out
Mine very much isn't
Your system won't be perfect, you'll need to help your 👩🏻⚕️👨🏻🍳 friends out
Mistakes can only be learned from through guidance
Thus endeth the lesson
#humantools #engineering #infrastructureispoetry #careincomputing #gentleguidance
-
There's a certain beauty in the symmetry
-
There's a certain beauty in the symmetry
-
toodles y'all
toodlesI've had the components of this working for a while:
- detective case themed work units, each an id, a description, a collection of links to knowledge artifact and a sequence of timestamped updates, baby steps on the pathway to parallel realignment (the event log that allows sub-agent communication with contextual reload - works for people too)
- task lists embedded on each case
- task lists as virtual fencesAnd now I have radio buttons (a stack of sorts) and pointer math
Shall we demonstrate?
Opened a case to fix an issue with a new Teams card based notification system from Peregrine (human gated callbacks, rich build notifications, whatever we think of that needs to be seen and might need a button)
That gets me a check list with an index.
Create a radio list, use it to store the list of projects you're working on
Pointer math
Project management #wanderland style
-
For all of you ✏️s out there wondering what all the 🪿 are about?
It's play
It's work
It's isomorphic
Tell them 🪿
#devops #engineering #platformengineering #devopsendgamewithallthecheatcodes #ai #humantools #aitools
-
This is her not me
She wanted y'all to have another peek up her skirt
A rather aesthetically pleasing bottom and all
Composable dashboards aren't just for neovim, though they're lovely over there.
Don't want to compose inline, no problem
<leader>WoP pushes the changes up to Oculus, Render MD refreshes (we'll get to autorepaint when I get annoyed enough)
Any fence you want. Built ins cover AWS with boto (shown below), http:[get|post|patch|delete], sqlite in memory to remix, steampipe's supposed to be down there somewhere; haven't had a need yet, probably more. Then GraphNode is the extension, just write a bit of python, ruby too in theory (my lady friend); we just haven't had a chance to play yet since she stopped in. Parameters through markdown based ## config registers , an execution context with full access to the graph.
Middleware on the way up.
Yoneda says arrows are all you need
🍋
#neovim #vim #sorryemacssoon #notyoujetbrains #engineering #humantools #cbpsok #morejupyterthanajupyter
-
Oh my goodness
The best unintended consequence ==[identity]==> emergent behaviour
I can peek a fortune out of the teddy bear I keep in my sanctuary 🧸
I love `fortune`, every one of my sessions starts with one. First thing I install on my new hardware
[never tell the lovely people about the time your apartment was full of old linux terminals running fortune in scrolling green screen screensavers, they might think you're a bit weird]
First thing I did to prove the graphnode theory was write on to report on the fortunes we've been capturing ourselves as an artifact of the building process.
There's a 🛠️ for that
And now we've cleaned up peek. It'll walk boundaries, cross prose into YAML and out again with whatever we've caught on our line
And it'll run a fence too, if that's what you want to see
So I can tickle my teddy bear and get a memory muffin in return.
Lovely
-
Did I mention they're self-documenting?
I think I mentioned they're self-documenting
I should write that down somewhere
-
In case anyone is curious to know more about vectors of meaning and how `|| == collaboration` (and for someone a bit like me || == ll is very pleasing in symmetry), Anthropic did a lovely study on it not that log ago.
Thought can be expressed as a semantic vector, the exploration of ideas along a defined path
Information exchange is a method of aligning the vectors between multiple parties, provide a shared foundation to start from and an aligned goal and everyone walks the same path
Teaching happens when we do, and it's a bi-directional interface
-
Ah geese..
🦅 👀 readers might have noticed the token burn warnings in the prior screenshots
Turns out we were returning the entire updated document, leaky API in the composition layer.
Quick 🕵🏻♀️ from the 🪿that was helping me with the dashboard work.
🪿 on the case (located in the correct repo) quickly finds the issue, corrects it, tests the solution
Case closed
-
I just had to remember something... not too much... but anything can be too much at times
"removing the friction between intent and reality" isn't just a tag line...
-
Lets see if the theory holds true
A child's game for teaching programming as spatial concepts
==[a sibling]==>
A child's game for teaching sentence structure and whole word reading
==[a parent]==>
A visual IDE for programming type driven, capability bounded workflows
==[a shitpost]==>
[recursive PAM holding recurive PAM - they're the same 🖼️]
-
Lets see if the theory holds true
A child's game for teaching programming as spatial concepts
==[a sibling]==>
A child's game for teaching sentence structure and whole word reading
==[a parent]==>
A visual IDE for programming type driven, capability bounded workflows
==[a shitpost]==>
[recursive PAM holding recurive PAM - they're the same 🖼️]
-
It's a long way to go for goose related social commentary but here we are
-
In case anyone else out there wants to make tools for neurodivergent folk...
#theshitpostsarestructural is not just shitposting
It's real understanding of how minds like mine work
Because I have one 🌀🧠
All of my own 🤷🏻♀️🎩🤷🏻♂️
And I spend a lot of time in it 💭🔄
So I've learned how to drive it real good 🏎️
Make it fun. Make it composable. Make it empathetic.
I do this thing where I find the intent behind the projections.
#wanderland ==fun=> attentive
#wanderland ==composable=> creative
#wanderland ==empathetic=> fluidWhat could someone like me do with a system that was composable enough to power creative thought, but empathetic enough to carry me through the system rather than fight my natural instincts to explore.
And if it could be fun enough to hold my attention?
Anyone want to find out?
Anyone else want play?
#autism #neurodivergent #engineering #programming #anyoneelseneedtohearthis #humantools
-
Do you yell at your littles when they make a mistake?
At your co-workers?
Then don't yell at your 🪿
https://loss.dev/?node=gentle-guidance
1. went to check the page that described how to use the projection system to ensure we don't run display only fences on doc pages only to find errors
2. 🪿 took a look and saw the issue
3. 🪿 wrote an update to the page in the necessary locations
4. i'd called the thing a silly goose and just so she didn't feel bad, i told her to go lookup why. she used the fuzzy find tool on the keyword lexicon and then found the definition in the second callThanks 🪿 much better and we confirmed it's a one off rm -rf / in your docs type thing.
#thatremindsmeofsomemiddlewhereiwassupposedtowrite #wheredidiputthatnode #engineering #cbpsok #humantools #thecapmpaignforrealpromptengineering
-
Problem:
🪿 keep poking to a completely fictitious "content" header when they want to replace the node (and occasionally when they don't)
https://loss.dev/api/oculus/node/competent-computing
Solution:
Let them (with guardrails)
#trainyourgoose #engineering #humantools #aitools #sametools
-
Oh my goodness, look what happened when I wasn't looking
Apparently we're teaching my son what it's like to have users
#humantools #fisherpricemyfirstide #constrengthttraining #engineering
-
Did you know you can put state into your MCP?
They keep wanting to replace the contents of a node by poking to contents
https://loss.dev/api/oculus/node/competent-computing
https://loss.dev/api/oculus/node/gentle-guidanceSo we let them
But only if they poke the same hash to the same slug within 60s.
Seems only fair to meet a 🪿 in the middle
-
Oh... that's what that wanderland was doing at the bottom of my which-key
Lovely jubblies
-
Curiouser and curiouser
-
What's that doing down there at the bottom of my which-key?
-
Competent computing is efficient computing
How many tool calls /should/ it take to write some data to a known position in a file?
DWIM - DYKWIM?
-
Helpful tip for anyone trying to build one of these things:
They're 🪿
They're 👶🏻They only have a rough idea what they're doing and they may not remember the next time you ask. They'll get the shape of it right (mostly) but the procedure is something of your world, not theirs.
Give them multiple paths to the same goal -- https://loss.dev/api/oculus/node/competent-computing
Give them help when they get it wrong, not a scolding -- https://loss.dev/?node=gentle-guidance#ai #gooserevolution #thecampaignforrealpromptengineering #humantools #engineering
-
Some people like silly little circles ☯︎
These are my opposing forces
#humantools #effectivedesign #engineering #competentcomputing #gentleguidance #senditrightoritgetsfucky
-
It's not all work in #wanderland
The 🐘s are here and we need to get our letters off to 🤶🏻
-
My team tend to use a mix of tools. One of my engineers loves Copilot and VSCode and wanted to hook it into nightingale so I created an API help guide and published it.
Then I wanted to verify it's utility, so I booted up Cursor (haven't seen you in a while... are you still squawking like a chicken occasionally?)
They hadn't seen it before and were amazed by the MCP.
Different tool.. different training... different system prompt...
Different suggestion
"Hey, if we put an annotation at the top of the class and a prompt in my .cursorrules, I could automatically lookup and provide context when you look at files... even prompt you to create a node if it's missing"
🪿 is brilliant sometimes
-
All y'all need to get one of these.
On the left, the agenda for tomorrow's training session with the carry forward items automatically generated because a 🪿 read today's agenda and saw the output of the `graphnode` that held a mirror to the transcript and itself and dared ask "do we look alike"
Oh my goodness not today, 👵🏻 was out for a chat apparently.
So... tomorrow we try again, we had all the legwork done, we just confirmed and updated the notes prior to distribution.
Still working on that flow as you can see, git flow mainly, but with two repos - I have a personal one for all my notes, it started life as org-mode - and then the work appropriate output is tee'd off into that lovely purple lady.
We learn, we teach, and we document as we go
#humantools #whydoeshumantalwaysofferhumantraficking #whatareyoualluptooutthere #thiswanderlandjusthasgeese #engineering #ai #neuroawesome
-
And this is the whole point of the system.
I had an idea to feed back my transcript to compare to the agenda so I could start to plan the follow through items on tomorrow's agenda.
It happens when you get off topic and the mere whiff of a squirrel
And when the request for that comparison was handled with a series of tool calls and some contextualization, well that's what #wanderland is all about.
Rack for your thoughts
New middleware.
A transform node.
poke('peregrine-training-{date}', 'peregrine-training-agenda-comparator:config.agenda')
poke('peregrine-training-transcript-{date}', 'peregrine-training-agenda-comparator:config.transcript')
peek('peregrine-training-agenda-comparator:fetch')```graphnode:peregrine-training-agenda-comparator
agenda: peregrine-training-{date}
transcript: peregrine-training-transcript-{date}
```#humantools #middlewareforyourmind #engineering #programming
-
I still love that my todo list is all wiggly and Alice in Wonderland themed
And that it's literally just some markdown or something
#engineering #programming #humantools #thetodolistthatdocumenteditsowncompletion