<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/assets/rss.xsl" type="text/xsl"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
>
<channel>
	<title>Sacha Chua - category - play</title>
	<atom:link href="https://sachachua.com/blog/category/play/feed/index.xml" rel="self" type="application/rss+xml" />
	<atom:link href="https://sachachua.com/blog/category/play" rel="alternate" type="text/html" />
	<link>https://sachachua.com/blog/category/play/feed/index.xml</link>
	<description>Emacs, sketches, and life</description>
	<lastBuildDate>Sat, 04 Apr 2026 02:23:03 GMT</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>daily</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>11ty</generator>
  <item>
		<title>Things I want to learn from Stardew Valley</title>
		<link>https://sachachua.com/blog/2025/05/things-i-want-to-learn-from-stardew-valley/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Fri, 23 May 2025 17:19:30 GMT</pubDate>
    <category>life</category>
<category>play</category>
<category>parenting</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2025/05/things-i-want-to-learn-from-stardew-valley/</guid>
		<description><![CDATA[<p>
This week A+ said she wanted to play a farming
game, so we went through <a href="https://cozygamereviews.com/best-steam-farming-games/">this list of farming
games on Steam</a> and she picked <a href="https://www.stardewvalley.net/">Stardew Valley</a>. I
bought it for CAD 17 under her Steam account. She
got pretty good at finishing her homework before
playtime. After some fiddling around, we managed
to figure out how to play 3-person local co-op
using our old PS3
controllers.<sup><a id="fnr.ps3-controllers" class="footref" href="https://sachachua.com/blog/feed/index.xml#fn.ps3-controllers" role="doc-backlink">1</a></sup>
</p>

<p>
The first game we played used the basic farm
layout and shared money. I realized that sharing
all the money wasn't working out so well for me
about two game weeks in because I was always
reminding A+ to buy seeds before she splurged on
gifts, so we started a new playthrough with
separate money. A+ decided to pick the meadowlands
farm layout, which meant starting with some
chickens.
</p>

<div class="center-doodle" id="org7a180fc">

<figure id="orgd349efe">
<img src="https://sachachua.com/blog/2025/05/things-i-want-to-learn-from-stardew-valley/stardew-chicken.jpg" alt="stardew-chicken.jpg" title="Stardew chicken" style="max-height:100px">

</figure>

</div>

<p>
We now have a mayonnaise maker and four chickens.
It's summer and I have a variety of crops growing.
W- sometimes drops in to do some fishing or help
out around the farm. We probably won't make it to
the greenhouse bundle this year, but maybe next
year. She'd been looking forward to getting a
kitchen and trying out some of the recipes, so we
saved up for it and worked together to chop down
lots of trees.
</p>

<p>
Stardew Valley feels like a good rainy day
activity with A+. It's a cozy place to practise
making decisions and working together.
</p>

<div class="center-doodle" id="org462b160">

<figure id="org552ceaf">
<img src="https://sachachua.com/blog/2025/05/things-i-want-to-learn-from-stardew-valley/stardew-trout.jpg" alt="stardew-trout.jpg" title="Trout" style="max-height:100px">

</figure>

</div>

<p>
A+ can get competitive and envious, which can get
in the way of her having fun. Sometimes she gets
envious because I've been leveling up in farming
and she hasn't yet. When that happens, she becomes
more motivated to help out around the farm.
Sometimes it's harder for her to channel that
frustration into growth. At the trout derby, she
got grumpier and grumpier. First it was because W-
had caught a rainbow trout and she was only
catching trash. Then, when she caught a rainbow
trout, she was grumpy that W- had caught a rainbow
trout with a golden tag and she hadn't gotten one
with a tag. "I'm never going to catch anything,"
she grumbled, eventually spiraling into a lump on
the couch. To her credit, she kept trying for a
while instead of rage-quitting, so that's progress.
</p>

<p>
I chatted with her about it the next day, when she
was well-regulated. "It doesn't have to be a
competition, you know," I said.
</p>

<p>
"Of course it was a competition," she said
matter-of-factly. "It was the trout derby."
</p>

<p>
Apparently this competitiveness and sensitivity is
pretty common and totally not out of place for a
9-year-old, especially since she's an only child.
Common approaches include:
</p>

<ul class="org-ul">
<li><b>Stopping the game</b> when whining starts, in the
hopes that eventually the kid will learn to
avoid whining: I'm not sure about this approach
with A+ because I think she might benefit from
some more help and support learning these
skills.</li>

<li><b>Team sports and a structured environment:</b> This
doesn't quite feel like a good fit for us, but
I'm glad it works for other people.</li>

<li><p>
<b>Switching to more cooperative activities:</b> I
couldn't redirect her from the trout derby
because the time-limited event was too
fascinating. We had to take the loss and try
again another time. This, too, is a fish on the
line; sometimes it escapes and there's nothing
to do but to accept it and fish again.
</p>

<p>
There's a lot we can learn together in the
process of working on day-to-day things. I can
put A+ in charge of most of the harvests, and
she's getting better at minding the mayonnaise.
I think A+ likes mining with me (I'm in charge
of fighting monsters), and we can probably also
chop some wood together. Maybe she'll enjoy
collecting the eggs and petting the chickens now
that there are more of them, especially since
one of them is called <a href="https://disney.fandom.com/wiki/Heihei">Hei-hei</a>. Then we can fish
when we're in the mood for fishing, farm when
we're in the mood for farming, and so on.
</p></li>

<li><b>Getting used to losses by playing lots of
games</b>: Fishing is good for this. It's easy to
start trying again, and there are plenty of
little rewards along the way. Once we can cook,
we can use meals like chowder to boost her
skill.</li>
</ul>

<div class="center-doodle" id="org8df9c30">

<figure id="org429106a">
<img src="https://sachachua.com/blog/2025/05/things-i-want-to-learn-from-stardew-valley/stardew-watering.jpg" alt="stardew-watering.jpg" title="Watering can" style="max-height:100px">

</figure>

</div>

<p>
I love it when games gently help me notice ways
<b>I</b> can grow as a person. I want to get better at
<b>focusing on processes, not
outcomes.</b><sup><a id="fnr.atomic-habits" class="footref" href="https://sachachua.com/blog/feed/index.xml#fn.atomic-habits" role="doc-backlink">2</a></sup> It's neat to see this in contrast.
At the moment, A+'s attention focuses a lot on
outcomes. She thinks about things like upgrading
to kitchen or getting to a certain level, but it's
harder for her to focus on the steps that will get
her there. I notice there's stuff for me to work
on, too. I struggle a little with trying to make
sure I have seed money if I let A+ take
care of harvesting and selling (somewhat alleviated now
that I've got chickens and corn), that I can get
everything watered before bedtime, that I've kept
some of the produce back for bundles or quests, or
that I'm making progress towards a silo before
winter. <b>I</b> can also practice focusing on
processes, not outcomes.
</p>

<p>
I know my job isn't to maximize the farm's profit.
<b>Maybe my job for now is to water the farm so that
A+ can enjoy the harvest.</b> Doesn't that sound like
some kind of parenting thing I can work on
learning in my bones&#x2026; I know grown-ups are
better at delayed gratification than kids are. I'm
better at the grind. If she can enjoy a bit of the
harvest and figure out if she likes it, then we
can back up a little. Maybe she can water a small
part of the field, and then grow from there. Maybe
I can make her a little 1x1 patch with the
season's fastest-growing crop, and then expand
every time she gets it all the way to harvest.
<a href="https://sachachua.com/blog/2024/11/tiny-habits-the-small-changes-that-change-everything-bj-fogg-phd-2020/">Tiny habits</a>, right?
</p>

<p>
Also thinking as a grown-up, I can stagger the
planting of 4-day crops like wheat so that there's
always something for her to harvest.
</p>

<p>
There are other little ways we can use game
mechanics to practise life skills. We can
occasionally check the <a href="https://stardewvalleywiki.com/Traveling_Cart">traveling cart</a> for <a href="https://stardewvalleywiki.com/Quality_Sprinkler">quality
sprinklers</a>, which will give us a reason to keep
track of the days and save some money for
opportunities. It would be great to practice this
with virtual money before she needs to deal with
real money.
</p>

<p>
I can also invite A+ to go mining and then use the
copper to upgrade the watering cans. It's a
multi-step process (copper ore, wood, coal, copper
bar, upgrade), so it makes sense that I can handle
that better than she can. She can focus on one
step at a time and slowly get the hang of how
everything comes together, just like when she was
<a href="https://sachachua.com/blog/2023/02/supporting-a-s-cubing-journey-so-far/">learning how to solve the Rubik's cube</a>. It's also
like the incremental independence she's growing
into in other parts of her life. My job is to
support her so that she can learn at the right
level: not too hard, not too easy.<sup><a id="fnr.zpd" class="footref" href="https://sachachua.com/blog/feed/index.xml#fn.zpd" role="doc-backlink">3</a></sup> Someday, after
many many runs through this kind of process, she
might even get the hang of creating those
sequences for herself or finding people who can
help her. Small steps to lifelong learning.
</p>

<p>
And when I start to get fidgety about how we play,
like when she doesn't accept any of my invitations
to do something (<a href="https://sachachua.com/blog/2025/04/indieweb-april-2025-renewal/">chop wood? carry water?</a>), I can
repeat: <b>process, not outcome.</b> It's okay for her
to stand around waiting for the shop to open while
I water the farm. She's excited, she's focused on
the very next step towards her goal, and that's
good for where she is. It's okay for things to
take a while. I want to keep the process fun. The
fun is the important part.
</p>

<div class="center-doodle" id="org06bf640">

<figure id="orgeea6780">
<img src="https://sachachua.com/blog/2025/05/things-i-want-to-learn-from-stardew-valley/stardew-lewis.jpg" alt="stardew-lewis.jpg" title="Mayor Lewis" style="max-height:100px">

</figure>

</div>

<p>
Also, there's this whole thing about taking time
to <b>talk to people,</b> remember what they like and
dislike (&#x2026; or look that up in the notes), give
them gifts, celebrate their birthdays, and so on.
Right. There are even clear benefits for doing so.
Plenty of things to get better at. =)
</p>

<p>
Stardew Valley seems like it would be great for
practising these things. The general advice from
the community seems to be to take it easy and not
rush. Don't worry about making it to
certain milestones by certain times, just have fun
together. We've been playing for only a few days,
but I have a feeling there's much to learn over
the next few years.
</p>
<div id="blog-2025-05-things-i-want-to-learn-from-stardew-valley-footnotes">
<h3 class="footnotes">Footnotes</h3>
<div id="blog-2025-05-things-i-want-to-learn-from-stardew-valley-text-footnotes">

<div class="footdef"><sup><a id="fn.ps3-controllers" class="footnum" href="https://sachachua.com/blog/feed/index.xml#fnr.ps3-controllers" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">PS3 controllers: On Windows, we needed <a href="https://docs.nefarius.at/projects/DsHidMini/">DsHidMini</a> and a powered USB hub. On Linux, we just needed the powered hub.</p></div></div>

<div class="footdef"><sup><a id="fn.atomic-habits" class="footnum" href="https://sachachua.com/blog/feed/index.xml#fnr.atomic-habits" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">This reminds me of
<a href="https://sachachua.com/blog/2024/10/2024-10-21-05-atomic-habits-visual-book-notes-productivity-personal-development/">Atomic Habits</a>.</p></div></div>

<div class="footdef"><sup><a id="fn.zpd" class="footnum" href="https://sachachua.com/blog/feed/index.xml#fnr.zpd" role="doc-backlink">3</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara"><a href="https://en.wikipedia.org/wiki/Zone_of_proximal_development">Zone of proximal development</a></p></div></div>


</div>
</div><div><a href="https://sachachua.com/blog/2025/05/things-i-want-to-learn-from-stardew-valley/index.org">View org source for this post</a></div>
<p>You can <a href="https://social.sachachua.com/@sacha/statuses/01JVZ34HDESHWJSGZ06KS5S3HP" target="_blank" rel="noopener noreferrer">comment on Mastodon</a> or <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2025%2F05%2Fthings-i-want-to-learn-from-stardew-valley%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>Having fun with words</title>
		<link>https://sachachua.com/blog/2025/05/having-fun-with-words/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Thu, 22 May 2025 17:10:17 GMT</pubDate>
    <category>parenting</category>
<category>play</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2025/05/having-fun-with-words/</guid>
		<description><![CDATA[<p>
I love strewing ideas in front of A+ in case
something catches her interest. A rich source of
in-jokes is the word
"<a href="https://en.wikipedia.org/wiki/Antidisestablishmentarianism_(word)">antidisestablishmentarianism</a>", which I introduced
to her when she was&#x2026; what&#x2026; maybe 3? 4? and
which she decided to master with her usual
determination. Sometimes, when she's in a "Mom!
Mom! Mom!" phase, I joke about changing my
preferred name so that she has to say
"Antidisestablishmentarianism!
Antidisestablishmentarianism!
Antidisestablishmentarianism!", which always gets
either a laugh or a groan.
</p>

<p>
One of A+'s friends is a 4-year-old. She was
playing the copying game with her, the one where a
kid repeats everything the other person says.
Whenever A+ wants to wind the game down, she
confidently rattles off
"antidisestablishmentarianism" and that's the end
of that.
</p>

<p>
I didn't want A+ to rest on her laurels, of
course. I introduced another word:
paradichlorodiphenyltrichloroethane. That piqued
A+'s curiosity, so I told her about DDT and I
shared the <a href="http://wonderingminstrels.blogspot.com/2001/06/mosquito-was-heard-to-complain-dr-d-d.html?showComment=1123254474000#c912334426462592003">limerick</a> I learned it from.
</p>

<p class="verse">
A mosquito was heard to complain,<br>
"A chemist has poisoned my brain!"<br>
The source of his sorrow<br>
was paradichloro-<br>
diphenyltrichloroethane.<br>
</p>

<p>
A+ got the hang of the limerick within a few days.
Apparently, she's already shared it with her
teacher and her nature club counselors. I think
she's even been coaching the 4-year-old through
saying it syllable by syllable, so perhaps there
will be two of these word geeks someday.
</p>

<p>
Since A+ liked the rhythm of the limerick and she
also likes math, I looked up this other fun
limerick, which is <a href="https://en.wikipedia.org/wiki/Leigh_Mercer">attributed to Leigh Mercer</a>:
</p>

<p class="verse">
A dozen, a gross, and a score<br>
Plus three times the square root of four<br>
Divided by seven<br>
Plus five times eleven<br>
Is nine squared and not a bit more.<br>
</p>

<p>
Small words, but fun to play with too.
</p>

<p>
For our next steps, I want to get the hang of
saying
"pneumonoultramicroscopicsilicovolcanoconiosis"
and "hippopotomonstrosesquippedaliophobia"
(although sesquipedalophobia is the more common
term).
</p>

<p>
We also pun about whatever she's interested in. At
the moment, it's all red panda all the time,
thanks to her enjoyment of <a href="https://en.wikipedia.org/wiki/Turning_Red">Turning Red</a>. ("Which
animal loves books?" "A well-read panda!") We love
alliteration and rhyme. We change the lyrics to
her favourite songs. I had a hard time sitting
down and playing with A+ when she was smaller, but
now we've got so many words to play with. This is fun!
</p>

<p>
What's the use of these things? Mostly to tickle
our brains and make each other smile, but also
maybe the tiny chance of bumping into someone else
who happens to overhear it and who chuckles out of
recognition. There are people out there who like
to play the kind of way we like to play, and
she'll find her tribe someday.</p>
<div><a href="https://sachachua.com/blog/2025/05/having-fun-with-words/index.org">View org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2025%2F05%2Fhaving-fun-with-words%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>Playfulness</title>
		<link>https://sachachua.com/blog/2025/04/playfulness/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Thu, 17 Apr 2025 00:19:08 GMT</pubDate>
    <category>parenting</category>
<category>play</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2025/04/playfulness/</guid>
		<description><![CDATA[<div class="assumed_audience" id="org7945e18">
<p>
Assumed audience: I'm writing this for:
</p>

<ul class="org-ul">
<li>me: I want to remember what this is like,
celebrate my progress so far, and look ahead</li>
<li>maybe other parents who also find themselves
still figuring out playfulness</li>
</ul>

</div>
<div id="outline-container-playfulness-achievement-unlocked-i-made-a-giggle-so-much-that-she-started-hiccuping" class="outline-3">
<h3 id="playfulness-achievement-unlocked-i-made-a-giggle-so-much-that-she-started-hiccuping">Achievement unlocked: I made A+ giggle so much that she started hiccuping</h3>
<div class="outline-text-3" id="text-playfulness-achievement-unlocked-i-made-a-giggle-so-much-that-she-started-hiccuping">
<p>
She had had a case of the <i>meh</i>​s. After a little
bit of empathizing, I flung myself over her and
declared that she wasn't going anywhere, I was
just going to snuggle her. It was my evil plan. I
cackled a little, and then asked her for tips on
proper cackling. Was it "MwahaHAha, or MwaHAhaha,
or MWAhahaha?"
</p>

<p>
She said, "Meh."
</p>

<p>
I rolled with it. "Meh heh heh heh."
</p>

<p>
Ah, there, a little giggle.
</p>

<p>
I hammed it up some more. "Meh HEH heh heh heh."
More and more cackling, until she was giggling
continuously. She giggled so much that she started
hiccuping.
</p>

<p>
"You're so funny," she said between sips of
water.
</p>

<p>
That might be the only time I'll hear that from
her, so I'm immortalizing it in my blog. And yes,
correlation doesn't mean causation, and n=1
anyway, but I'm still going to take the win.
</p>
</div>
</div>
<div id="outline-container-playfulness-play-didn-t-come-easily-to-me" class="outline-3">
<h3 id="playfulness-play-didn-t-come-easily-to-me">Play didn't come easily to me</h3>
<div class="outline-text-3" id="text-playfulness-play-didn-t-come-easily-to-me">
<p>
I didn't quite know what play could look like for
us, in the early days. Some parents seem to
effortlessly break out silly voices or play
pretend with toys. In the beginning, that felt
awkward, even though I'd grown up with my dad
telling captivating stories complete with sound
effects and gestures. As a new parent, I often
felt tired and my mind kept sliding away. It was
easier to let A+ take the lead, and to focus on things like <a href="https://sachachua.com/blog/2018/07/working-on-play/">supporting and documenting</a>. That was probably
the right call for both of our personalities. From
time to time, I come across parenting articles
that even recommend this approach of letting the
child do most of the directing. <a href="https://theeducationhub.org.nz/an-introduction-to-serve-and-return-in-early-childhood-education/">Serve and return</a>,
that's all, I just needed to keep the rhythm
going; when A+ leads, I can focus on responding. I didn't even have
to do it all the time; I could be a <a href="https://www.psychologytoday.com/ca/blog/the-narrative-nurse-practitioner/202407/what-does-it-mean-to-be-a-good-enough-parent">good-enough</a>
parent.
</p>

<p>
When A+ was interested in stacking blocks, I felt
my job was mostly to observe and narrate
appreciatively, and also to help tidy up. When she
was fascinated with the water table at the Science
Centre, my job was to bring dry clothes to change
into. When she started building with LEGO, I
helped her find pieces, but I didn't really spur
her on with build ideas or roleplaying. When she
moved on tea parties, I accepted my share of muddy
teacups and sand cupcakes. At 9, A+ mostly likes
to sing, play Minecraft, and make up stories with
me. That's something I'm more comfortable with.
</p>

<p>
I'm somewhat reassured by the Slate essay <a href="https://slate.com/human-interest/2019/03/parent-child-pretend-play-expectations.html">Playtime
Is Over!</a>:
</p>

<blockquote>
<p>
If you meet the child on his level and mostly
watch what they’re doing instead, it’s still an
act of love and attention without being such a
draining experience.
</p>
</blockquote>

<p>
I never quite felt comfortable staging those
playacting dramas that would probably have helped
A+ develop better social skills, like pretending
one doll has accidentally bumped another one so
that we could explore apologies and acceptance. I
probably wouldn't have been able to get it past
A+, anyway; she's pretty good at sniffing out when
I'm pretending to play instead of playing pretend.
</p>
</div>
</div>
<div id="outline-container-playfulness-resources" class="outline-3">
<h3 id="playfulness-resources">Resources</h3>
<div class="outline-text-3" id="text-playfulness-resources">
<p>
I was pretty worried in the beginning. The first
six months of A+'s life were a bit of a blur, with
quite a few diagnostic exams and follow-up
appointments at Sick Kids Hospital. She went under
general anaesthesia a couple of times, so I was
extra nervous about the possible impact on her
growth.<sup><a id="fnr.anaesthesia" class="footref" href="https://sachachua.com/blog/feed/index.xml#fn.anaesthesia" role="doc-backlink">1</a></sup> It's hard to be playful
when you're tired and anxious. Anyway, it was just
what's got to be done, so we focused on figuring
out how to mitigate the risks by <a href="https://www.jaapos.org/article/S1091-8531(14)00493-5/fulltext#:~:text=In%20rodents%2C%20exposure%20to%20inhalant,about%20how%20to%20gain%20rewards.">enriching her
environment</a>. I applied to the <a href="https://www.toronto.ca/community-people/health-wellness-care/information-for-healthcare-professionals/patient-referrals/healthy-babies-healthy-children-hbhc-program/">Healthy Babies
Healthy Children</a> program, and we got approved. We
regularly met with a nurse and a home visitor who
helped us keep track of A+'s development,
suggested relevant activities, and gave me
feedback on my interactions with A+. (<a href="https://sachachua.com/blog/2017/06/notes-on-the-healthy-babies-healthy-children-program/">My notes</a>)
</p>

<p>
I still wanted to learn more about play. We went
to <a href="https://torontopubliclibrary.ca">libraries</a> and <a href="https://www.toronto.ca/community-people/children-parenting/children-programs-activities/child-family-programs-and-groups/child-family-programs/">EarlyON child and family centres</a>
for songs, storytime, and free play. One of our
favourites was the EarlyON centre at Indian Road
Crescent, where Ms. Lesley was basically how I
imagine <a href="https://en.wikipedia.org/wiki/Fred_Rogers">Mr. Rogers</a> or <a href="https://www.bluey.tv/characters/calypso/">Calypso</a>: kind, appreciative,
and wise. I reach for her voice in my head when I
want a model for how to talk to kids.
</p>

<p>
Thank goodness for <a href="https://www.bluey.tv/">Bluey</a>, too, which not only
demonstrated a whole trove of little games that we
could play, but also helped me imagine more
playful parenting with the examples of Bandit and
Chilli. Bluey's totally a parenting show disguised
as a kids' cartoon. A+ often suggests playing
games from Bluey, like:
</p>

<ul class="org-ul">
<li><a href="https://blueypedia.fandom.com/wiki/Shadowlands">Shadowlands</a>: walk only on shadows</li>
<li>Bandit's version of Follow the Leader: kids hide right behind leader, leader complains (from <a href="https://blueypedia.fandom.com/wiki/Daddy_Putdown">Daddy Putdown</a>)</li>
<li>Come Here / Go Away: played on the swing, where the humour also comes from the complaints (from <a href="https://blueypedia.fandom.com/wiki/Daddy_Putdown">Daddy Putdown</a>)</li>
</ul>

<p>
I also borrowed all the books on play that I could
find, like <a href="https://www.randomhousebooks.com/books/29429/">Playful Parenting</a> (Lawrence J.
Cohen, 2008) and <a href="https://nifplay.org/books/play-how-it-shapes-the-brain-opens-the-imagination-and-invigorates-the-soul/">Play</a> (Stuart Brown, Christopher
Vaughan, 2009), because of course I'd try to learn
about play from books. Might be time to reread
them, come to think of it.
</p>
</div>
</div>
<div id="outline-container-playfulness-figuring-out-our-types-of-play" class="outline-3">
<h3 id="playfulness-figuring-out-our-types-of-play">Figuring out our types of play</h3>
<div class="outline-text-3" id="text-playfulness-figuring-out-our-types-of-play">
<p>
Thanks to all these different resources, I found
lots of ideas to try. Experimenting helped me
gradually figure out the things that resonated
with both A+ and me. I liked the <a href="https://www.rcmusic.com/learning/oscar-peterson-school-of-music/music-classes-for-babies-toddlers-and-preschool">music classes</a>
that A+ and I went to when she was younger. We
also read and read and read. I couldn't quite do
the cheerful patter I sometimes heard from other
parents, but songs and books helped me fill in the
times when I didn't have much to say to A+. I
found another little form of play to share with
her, changing the words in a book or a song so
that she'd laughingly correct me. She started
talking at 18 months, a little on the late side of
normal, but quickly expanded her vocabulary. (Also
totally fine now.)
</p>

<p>
It wasn't all cerebral, of course. A+ liked the
vestibular stimulation of swinging, so we spent a
lot of time at the playground. She also likes
climbing and hugs, so I boost her up to monkey
bars and I snuggle her for as long as she likes.
</p>

<p>
A+ likes to dive deeply into her interests, and I
like to go along with her. Over the years, I've
learned a lot about <a href="https://sachachua.com/blog/2021/01/a-list-of-sharks-that-are-obligate-ram-ventilators/">sharks</a>, <a href="https://sachachua.com/blog/category/cubing/">Rubik's cubes</a>, Star
Wars, and <a href="https://sachachua.com/blog/category/minecraft/">Minecraft</a>. That's our kind of play, too.
We have some running jokes now. For example, on
learning that nurse sharks might possibly trick
fish into a false shelter and then ambush
them,<sup><a id="fnr.nurse-shark" class="footref" href="https://sachachua.com/blog/feed/index.xml#fn.nurse-shark" role="doc-backlink">2</a></sup> we had fun imagining a nurse
shark holding a "Definitely not a trap" sign. This
sketch doesn't quite have the shark pointing
upwards, but it was fun anyhow.
</p>

<p>
</p><div class="sketch-full"><a class="photoswipe" href="https://sketches.sachachua.com/filename/20210225_131429%20Nurse%20shark%20-%20I%20will%20not%20eat%20you%20-%20Totally%20not%20a%20trap%20%23me.jpg" data-src="https://sketches.sachachua.com/static/20210225_131429%20Nurse%20shark%20-%20I%20will%20not%20eat%20you%20-%20Totally%20not%20a%20trap%20%23me.jpg" data-title="20210225_131429 Nurse shark - I will not eat you - Totally not a trap #me.jpg" data-w="3300" data-h="2550"><picture>
      <img src="https://sketches.sachachua.com/static/20210225_131429%20Nurse%20shark%20-%20I%20will%20not%20eat%20you%20-%20Totally%20not%20a%20trap%20%23me.jpg" width="3300" height="2550" alt="20210225_131429 Nurse shark - I will not eat you - Totally not a trap #me.jpg" loading="lazy" style="max-height: 90vw; height: auto; width: auto" decoding="async">
      <figcaption>20210225_131429 Nurse shark - I will not eat you - Totally not a trap #me.jpg</figcaption>
    </picture></a></div>
<p></p>

<p>
I'm learning a lot about play from life with A+.
I'm learning that it can look different from
person to person. I tend to have a quieter type of
play, and that's okay. Also, if I don't feel like
playing a particular way, it's good to say so. We
can usually figure out something else, or I can
figure out what I need and then check in again
when I'm ready.
</p>

<p>
I'm upfront about still figuring all of this out.
I think it's good for her to see that. Sure, it
would make more sense for fun to be natural and
effortless, but this is the kind of person I am,
so I've got to work with what I've got&#x2013;and that's
enjoyable too, in its own way.
</p>

<p>
One of the things that's been helping me is seeing
A+ also learn about and accept her own play
preferences. At the playground, A+ often takes a
break when her friends play a shrieky sort of game
like tag. She knows she doesn't like those kinds
of games, and she can find other things to do
until her friends move on. She usually comes and
hangs out with me instead. Sometimes we go play
one of our own games. Then she heads back to check
in with her friends, and they all go off to play
something else.
</p>

<p>
It's fun watching A+ figure things out. When she
had a hard time settling down at bedtime the other
night, she suggested taking turns reading a book.
I agreed, of course. I'll always say yes when she
offers to read out loud, and reading out loud lets
me play our old game of changing things up. "I
knew you'd say yes to that," she crowed. She's
learning to offer games we both like.
</p>

<p>
We're both learning about ourselves through play.
Reading about <a href="https://nifplay.org/what-is-play/play-personalities/">play personalities</a>, I think: ah, my
dad was a joker, even towards the end of his life;
one time he stashed an ice cube under his tongue
to prank the nurse who came in to check his
temperature. My sister's a bit of one too with her
witty rejoinders. A+ might be a storyteller
considering her fascination with story variations.
I might be a creator, considering my list of
crafty hobbies and the fun I have tweaking Emacs.
Play is fun, and fun is great for self-knowledge.
</p>
</div>
</div>
<div id="outline-container-playfulness-some-things-that-seem-to-be-working-for-us-for-now" class="outline-3">
<h3 id="playfulness-some-things-that-seem-to-be-working-for-us-for-now">Some things that seem to be working for us for now</h3>
<div class="outline-text-3" id="text-playfulness-some-things-that-seem-to-be-working-for-us-for-now">
<p>
<b>Physical play:</b> Pretty good way to get her out of
a grump. I can challenge her to tackle-hug me:
she'll try her best to push me over and collapse
on me with a hug, then I'll try my best to wrap
her up and prevent her from escaping. I can carry
her on my back and whirl around. I can lift her up
to the chin-up bar.
</p>

<p>
<b>Clapping games:</b> We can play <a href="https://www.youtube.com/watch?v=2RhmXOrjDDs">Double Double This
This</a> or <a href="https://www.youtube.com/watch?v=QXJsX7T8fYM">Slide</a> pretty much anywhere.
</p>

<p>
<b>Bubbles:</b> We like <a href="https://sachachua.com/blog/2018/07/bubbles/">bubbles</a>. We even make our own
giant bubble mix following the <a href="https://soapbubble.fandom.com/wiki/Recipes_Guar">guar gum recipe on
the Soap Bubble wiki</a>. We've decided not to bring
giant bubbles to the park when there are lots of
kids around, though, because then we tend to get
swarmed by other kids and it's a little stressful
for A+. It's something to enjoy at small
playdates.
</p>

<p>
<b>Wordplay:</b> It's fun to come up with puns and
variations on songs. She's getting pretty good at
it too.
</p>

<p>
<b>Drawing:</b> Silly faces are fun and easy to make.
Pictionary is also good.
</p>

<p>
<b>Singing:</b> Good way to get in sync. We like to
sing songs from Disney movies and from Wicked.
There's a fair bit of research about maternal
singing<sup><a id="fnr.maternal-singing" class="footref" href="https://sachachua.com/blog/feed/index.xml#fn.maternal-singing" role="doc-backlink">3</a></sup>, and
<a href="https://online.ucpress.edu/mp/article/38/2/136/114278/Interpersonal-Entrainment-in-Music">entrainment</a><sup><a id="fnr.entrainment" class="footref" href="https://sachachua.com/blog/feed/index.xml#fn.entrainment" role="doc-backlink">4</a></sup> might have prosocial
effects even for older kids. Besides, music is fun, and we can do it pretty much anywhere.
</p>

<p>
<b>Robot:</b> Lots of chores get done by the Chore-Bot
9.0. A+ is amused whenever I'm a hug-bot. She also
likes it when I'm a scientist or engineer
investigating the functions of this mysterious
device that seems to be powered by hugs.
</p>

<p>
<b>Minecraft:</b> Inside, we play in Bedrock if I've
got the patience to reboot out of Linux and into
Windows, or Java if we want to play in the world
we share with W+. A+ likes to start up new worlds
to try out different ideas or add-ons, so I'm
slowly learning how to be less attached to any
particular world.
</p>

<p>
Our shared Minecraft experiences even help us pass
the time at the playground. We often play pretend
Minecraft. I don't mind being the odd grown-up
who's pretending to mine for iron or run away from
skeletons. I think A+ enjoys rescuing me from the
predicaments I make up for myself. ("Oh no,
there's an Enderman! Aah! Don't look at it!"
"Here's a pumpkin I carved!")
</p>

<p>
<b>Stories:</b> A+ loves making up stories related to
Disney or Star Wars characters. Sometimes we use
the fortunately/unfortunately structure to
improvise a story, and sometimes we just pile
things on. When I'm tired, it's hard for me to
imagine enough to improvise, but I'm glad that I
can explore some of her "what if" questions with
ideas translated from fanfic. She also does a bit
of LLM-prompting of story ideas, and she includes
those in some of our bedtime improvisation as
well.
</p>
</div>
</div>
<div id="outline-container-playfulness-looking-ahead" class="outline-3">
<h3 id="playfulness-looking-ahead">Looking ahead</h3>
<div class="outline-text-3" id="text-playfulness-looking-ahead">
<p>
I've got maybe a year or two of A+ wanting to play
with us before she focuses on playing with other
people. I'll take that however it looks: screen
time when that's what she feels like, park time
whenever we can. I'm not terribly worried about
screentime. I know that it can take a while to get
her outside, but then she wants to stay at the
park for as long as possible. It's easier to get
her outside when we have playdates, which we
schedule fairly regularly. When it's just me, we
go with the flow.
</p>

<p>
Here's what I'm keeping an eye out for to help me
get better at playing with A+:
</p>

<ul class="org-ul">
<li>Managing my own patience: It's a lot easier to
play when I'm well-rested, I'm not fretting, and
I don't have an unfinished task hogging my
brainspace.<sup><a id="fnr.ovsiankina-play" class="footref" href="https://sachachua.com/blog/feed/index.xml#fn.ovsiankina-play" role="doc-backlink">5</a></sup></li>

<li>Seeing the invitation properly: "Can we play
together?" means "I want to connect with you."
So does "I'm bored bored bored bored bored."</li>

<li>Building our play vocabulary: Bluey is totally
research, yeah, that's why I'm watching it.
There's also paying attention to the little
things that A+ and I are curious about or enjoy.
The more things we try, the more ideas we can
combine.</li>
</ul>

<p>
It's child's play, and that's why it's worth it.
</p>
</div>
</div>
<div id="blog-2025-04-playfulness-footnotes">
<h3 class="footnotes">Footnotes</h3>
<div id="blog-2025-04-playfulness-text-footnotes">

<div class="footdef"><sup><a id="fn.anaesthesia" class="footnum" href="https://sachachua.com/blog/feed/index.xml#fnr.anaesthesia" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://www.apsf.org/article/the-effect-of-general-anesthesia-on-the-developing-brain-appreciating-parent-concerns-while-allaying-their-fears/">The Effect of General Anesthesia on the Developing Brain: Appreciating Parent Concerns While Allaying Their Fears - Anesthesia Patient Safety Foundation</a> was a bit reassuring. There's been more <a href="https://www.sciencedirect.com/science/article/pii/S0007091223001800">recent research</a> too, and it's a bit mixed. </p></div></div>

<div class="footdef"><sup><a id="fn.nurse-shark" class="footnum" href="https://sachachua.com/blog/feed/index.xml#fnr.nurse-shark" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://www.fao.org/fishery/en/aqspecies/2013/en#:~:text=Young%20nurse%20sharks%20have%20been%20observed%20resting%20with%20their%20snouts%20pointed%20upward%20and%20their%20bodies%20supported%20off%20the%20bottom%20on%20their%20pectoral%20fins;%20this%20has%20been%20interpreted%20as%20possibly%20providing%20a%20false%20shelter%20for%20crabs%20and%20small%20fishes%20that%20the%20shark%20then%20ambushes%20and%20eats.">Food and Agriculture Organization of the United Nations</a>:
</p>
<blockquote>
<p>
Young nurse sharks have been observed resting with their snouts pointed upward and their bodies supported off the bottom on their pectoral fins; this has been interpreted as possibly providing a false shelter for crabs and small fishes that the shark then ambushes and eats.
</p>
</blockquote></div></div>

<div class="footdef"><sup><a id="fn.maternal-singing" class="footnum" href="https://sachachua.com/blog/feed/index.xml#fnr.maternal-singing" role="doc-backlink">3</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
Here's one example:     Markova, G., Nguyen, T., Schätz, C. and De Eccher, M. (2020). <a href="https://shs.cairn.info/revue-enfance-2020-1-page-89?lang=en">Singing in Tune – Being in Tune: Relationship Between Maternal Playful Singing and Interpersonal Synchrony</a>. Enfance, 1(1), 89-107. <a href="https://doi.org/10.3917/enf2.201.0089">https://doi.org/10.3917/enf2.201.0089</a>.
</p>

<blockquote>
<p>
Results showed that 38 dyads spontaneously engaged in social game routines. In these dyads, both playful singing and rhyming were positively associated with dyadic gaze synchrony, while only playful singing was also positively correlated with affect synchrony of the dyad. These findings suggest that rhythms, in general, may have important implications for the establishment of interpersonal synchrony in infant-caregiver dyads. However, musical rhythms seem to be particularly emotionally-salient and thus attune both interactional partners to the affective content of their social exchanges.
</p>
</blockquote></div></div>

<div class="footdef"><sup><a id="fn.entrainment" class="footnum" href="https://sachachua.com/blog/feed/index.xml#fnr.entrainment" role="doc-backlink">4</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://online.ucpress.edu/mp/article/38/2/136/114278/Interpersonal-Entrainment-in-Music#:~:text=A%20variety%20of%20studies%20have%20revealed%20that%20synchronized%20movement%2C%20both%20musical%20and%20otherwise%2C%20can%20affect%20attitudes%20and%20cooperative%20behaviors%20toward%20one%E2%80%99s%20co%2Dactors.">Interpersonal Entrainment in Music Performance | Music Perception | University of California Press</a>
</p>
<blockquote>
<p>
A variety of studies have revealed that synchronized movement, both musical and otherwise, can affect attitudes and cooperative behaviors toward one’s co-actors.
</p>
</blockquote></div></div>

<div class="footdef"><sup><a id="fn.ovsiankina-play" class="footnum" href="https://sachachua.com/blog/feed/index.xml#fnr.ovsiankina-play" role="doc-backlink">5</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
<a href="https://en.wikipedia.org/wiki/Ovsiankina_effect">Ovsiankina effect</a>: unfinished tasks cause intrusive thoughts. See also: <a href="https://nesslabs.com/unfinished-tasks">The psychology of unfinished tasks: the Zeigarnik and Ovsiankina effects</a>
</p></div></div>


</div>
</div><div><a href="https://sachachua.com/blog/2025/04/playfulness/index.org">View org source for this post</a></div>
<p>You can <a href="https://social.sachachua.com/@sacha/statuses/01JS0K6SDW9FV0EMRRXC4AT3YT" target="_blank" rel="noopener noreferrer">comment on Mastodon</a> or <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2025%2F04%2Fplayfulness%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>Updating my Minecraft command book using Emacs, TRAMP, and mcf.el</title>
		<link>https://sachachua.com/blog/2023/04/updating-my-minecraft-command-book-using-emacs-tramp-and-mcf-el/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Wed, 12 Apr 2023 14:28:27 GMT</pubDate>
    <category>minecraft</category>
<category>play</category>
<category>emacs</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2023/04/updating-my-minecraft-command-book-using-emacs-tramp-and-mcf-el/</guid>
		<description><![CDATA[<p>
I wanted to see what else people have done in terms of combining
Minecraft and Emacs. It turns out that you can control Minecraft from
Emacs via <a href="https://github.com/rasensuihei/mcf">mcf</a> if you set <code>enable-rcon=true</code> in your
<code>server.properties</code> (also a good idea to set <code>rcon.password</code>) and you
configure variables like <code>mcf-rcon-password</code> on the Emacs side. It
needed a little tweaking to get it to connect to a remote server, so
I've submitted a <a href="https://github.com/rasensuihei/mcf/pull/11">pull request</a>. Anyway, since Emacs can talk to
Minecraft and I can write sequences of Minecraft commands as
functions, I thought about turning my <a href="https://sachachua.com/blog/">Minecraft command books</a> into
something that I could update right from Emacs.
</p>

<p>
Creating my own datapack was pretty straightforward once I figured out
the directory structure. I needed to put functions in
<code>&lt;world-name&gt;/datapacks/sachac/data/sachac/functions</code>. Inside
<code>&lt;world-name&gt;/datapacks/sachac</code>, I created <code>pack.mcmeta</code> with the
following contents:
</p>

<div class="org-src-container">
<pre class="src src-json">{
    "pack": {
        "pack_format": 10,
        "description": "sachac's tweaks"
    }
}
</pre>
</div>

<p>
Inside <code>&lt;world-name&gt;/datapacks/sachac/data/sachac/functions</code>, I
created a <code>command_book.mcfunction</code> file with the command to give me
the book. I updated my command book function to remove the <code>/</code> from
the beginning.
</p>

<p>
I used <code>/reload</code> to reload my Minecraft configuration and <code>/datapack
list</code> to confirm that my datapack was loaded. Then <code>/function
sachac:command_book</code> ran the function to give me the command book, so
that all worked out. I replaced the command in the command block with
the function call.
</p>

<p>
The next step was to update it directly from Emacs, including
reloading. First, I needed a function to give me the filename of a
function file.
</p>

<div class="org-src-container">
<pre class="src src-emacs-lisp">(<span class="org-keyword">defun</span> <span class="org-function-name">my-minecraft-datapack-function-file-name</span> (world datapack-name function-name)
  <span class="org-doc">"Return the filename for a mcfunction file given WORLD, DATAPACK-NAME, and FUNCTION-NAME."</span>
  (seq-reduce
   (<span class="org-keyword">lambda</span> (path subdir) (expand-file-name subdir path))
   (list <span class="org-string">"datapacks"</span>
         datapack-name
         <span class="org-string">"data"</span>
         datapack-name
         <span class="org-string">"functions"</span>
         (concat function-name <span class="org-string">".mcfunction"</span>))
   world))
</pre>
</div>

<p>
I used <code>C-c C-x p</code> (<code>org-set-property</code>) to add a <code>WORLD</code> property to
my Org subtree. For example, my snapshot world is at
<code>/ssh:desktop:~/.minecraft/saves/Snapshot</code>. Then I can get the correct
value within the subtree by using <code>org-entry-get-with-inheritance</code>.
This is how I wrote the command book function for my snapshot world:
</p>

<div class="org-src-container">
<pre class="src src-org"><span class="org-org-block-begin-line">#+begin_src emacs-lisp :var body=mc-snapshot :var team=mc-team :var quick=mc-quick :var effects=mc-effects :var items=mc-items :results silent</span>
<span class="org-org-block">(</span><span class="org-org-block"><span class="org-keyword">with-temp-file</span></span>
<span class="org-org-block">    (my-minecraft-datapack-function-file-name</span>
<span class="org-org-block">     (org-entry-get-with-inheritance </span><span class="org-org-block"><span class="org-string">"WORLD"</span></span><span class="org-org-block">)</span>
<span class="org-org-block">     </span><span class="org-org-block"><span class="org-string">"sachac"</span></span>
<span class="org-org-block">     </span><span class="org-org-block"><span class="org-string">"command_book"</span></span><span class="org-org-block">)</span>
<span class="org-org-block">  (insert (my-minecraft-book </span><span class="org-org-block"><span class="org-string">"Commands 8.5"</span></span><span class="org-org-block"> </span><span class="org-org-block"><span class="org-string">"Mom"</span></span><span class="org-org-block"> (append team quick body effects items))))</span>
<span class="org-org-block">(</span><span class="org-org-block"><span class="org-keyword">mcf-eval</span></span><span class="org-org-block"> </span><span class="org-org-block"><span class="org-string">"reload"</span></span><span class="org-org-block">)</span>
<span class="org-org-block-end-line">#+end_src</span>
</pre>
</div>

<p>
So now I can use <code>C-c C-c</code> to execute the Emacs Lisp block and have my
Minecraft world updated. Then I just need to right-click on my command
block's button or run the function in order to get the new version.
</p>

<p>
I'm looking forward to learning more about mcfunctions so that I can
write a function that automatically replaces the book in everyone's
inventories. Could be fun.
</p>

<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2023%2F04%2Fupdating-my-minecraft-command-book-using-emacs-tramp-and-mcf-el%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>Using Org Mode tables and Emacs Lisp to create Minecraft Java JSON command books</title>
		<link>https://sachachua.com/blog/2023/04/using-org-mode-tables-and-emacs-lisp-to-create-minecraft-java-json-command-books/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Sun, 09 Apr 2023 14:57:36 GMT</pubDate>
    <category>minecraft</category>
<category>org</category>
<category>emacs</category>
<category>play</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2023/04/using-org-mode-tables-and-emacs-lisp-to-create-minecraft-java-json-command-books/</guid>
		<description><![CDATA[<div class="update" id="org0d8a965">
<ul class="org-ul">
<li><span class="timestamp-wrapper"><span class="timestamp">[2023-04-12 Wed]</span></span>: Remove <code>/</code> from the beginning so that I can use
this in a function. Split book function into JSON and command. Updated effects to hide particles.</li>
<li><span class="timestamp-wrapper"><span class="timestamp">[2023-04-10 Mon]</span></span>: Separated trident into channeling and riptide.</li>
</ul>

</div>

<p>
A+ likes playing recent Minecraft snapshots because of the new
features. The modding systems haven't been updated for the snaphots
yet, so we couldn't use mods like <a href="https://www.curseforge.com/minecraft/mc-mods/journeymap">JourneyMap</a> to teleport around. I
didn't want to be the keeper of coordinates and be in charge of
teleporting people to various places.
</p>

<p>
It turns out that you can make clickable books using JSON. I used the
<a href="https://minecraft.tools/en/book.php">Minecraft book editor</a> to make a prototype book and figure out the
syntax. Then I used a command block to give it to myself in order to
work around the length limits on commands in chat. A+ loved being able
to carry around a book that could teleport her to either of us or to
specified places, change the time of day, clear the weather, and
change game mode. That also meant that I no longer had to type all the
commands to give her water breathing, night vision, or slow falling,
or give her whatever tools she forgot to pack before she headed out.
It was so handy, W- and I got our own copies too.
</p>

<p>
Manually creating the clickable targets was annoying, especially since
we wanted the book to have slightly different content depending on the
instance we were in. I wanted to be able to specify the contents using
Org Mode tables and generate the JSON for the book using Emacs.
</p>

<p>
Here's a screenshot:
</p>


<figure id="orgae5b5bb">
<img src="https://sachachua.com/blog/2023/04/using-org-mode-tables-and-emacs-lisp-to-create-minecraft-java-json-command-books/2023-04-09_10-09-48.png" alt="2023-04-09_10-09-48.png">

<figcaption><span class="figure-number">Figure 1: </span>Screenshot of command book</figcaption>
</figure>

<p>
This is the code to make it:
</p>

<div class="org-src-container">
<pre class="src src-emacs-lisp">(<span class="org-keyword">defun</span> <span class="org-function-name">my-minecraft-remove-markup</span> (s)
  (<span class="org-keyword">if</span> (string-match <span class="org-string">"^[=~]</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">(</span></span><span class="org-string">.+?</span><span class="org-string"><span class="org-regexp-grouping-backslash">\\</span></span><span class="org-string"><span class="org-regexp-grouping-construct">)</span></span><span class="org-string">[=~]$"</span> s)
      (match-string 1 s)
    s))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-minecraft-book-json</span> (title author book)
  <span class="org-doc">"Generate the JSON for TITLE AUTHOR BOOK.</span>
<span class="org-doc">BOOK should be a list of lists of the form (text click-command color)."</span>
  (json-encode
   <span class="org-highlight-quoted-quote">`</span>((pages . 
            ,(apply <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">vector</span>
                    (mapcar
                     (<span class="org-keyword">lambda</span> (page)
                       (json-encode
                        (apply <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">vector</span> 
                               (seq-mapcat
                                (<span class="org-keyword">lambda</span> (command)
                                  (<span class="org-keyword">let</span> ((text (my-minecraft-remove-markup (<span class="org-keyword">or</span> (elt command 0) <span class="org-string">""</span>)))
                                        (click (my-minecraft-remove-markup (<span class="org-keyword">or</span> (elt command 1) <span class="org-string">""</span>)))
                                        (color (<span class="org-keyword">or</span> (elt command 2) <span class="org-string">""</span>)))
                                    (<span class="org-keyword">unless</span> (<span class="org-keyword">or</span> (string-match <span class="org-string">"^&lt;.*&gt;$"</span> text)
                                                (string-match <span class="org-string">"^&lt;.*&gt;$"</span> click)
                                                (string-match <span class="org-string">"^&lt;.*&gt;$"</span> color))
                                      (list
                                       (append
                                        (list (cons <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">text</span> text))
                                        (<span class="org-keyword">unless</span> (string= click <span class="org-string">""</span>)
                                          <span class="org-highlight-quoted-quote">`</span>((clickEvent 
                                             (action . <span class="org-string">"run_command"</span>)
                                             (value . ,(concat <span class="org-string">"/"</span> click)))))                                    
                                        (<span class="org-keyword">unless</span> (string= color <span class="org-string">""</span>)
                                          (list (cons <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">color</span>
                                                      color))))
                                       (<span class="org-keyword">if</span> (string= color <span class="org-string">""</span>)
                                           <span class="org-highlight-quoted-quote">'</span>((text . <span class="org-string">"\n"</span>))
                                         <span class="org-highlight-quoted-quote">'</span>((text . <span class="org-string">"\n"</span>)
                                           (color . <span class="org-string">"reset"</span>)))))))
                                page))))
                     (seq-partition book 14)
                     )))
     (author . ,author)
     (title . ,title))))

(<span class="org-keyword">defun</span> <span class="org-function-name">my-minecraft-book</span> (title author book)
  <span class="org-doc">"Generate a command to put into a command block in order to get a book.</span>
<span class="org-doc">Label it with TITLE and AUTHOR.</span>
<span class="org-doc">BOOK should be a list of lists of the form (text click-command color).</span>
<span class="org-doc">Copy the command text to the kill ring for pasting into a command block."</span>
  (<span class="org-keyword">let</span> ((s (concat <span class="org-string">"item replace entity @p weapon.mainhand with written_book"</span>
                   (my-minecraft-book-json title author book))))
    (kill-new s)
    s))
</pre>
</div>

<p>
With this code, I can generate a simple book like this:
</p>

<div class="org-src-container">
<pre class="src src-emacs-lisp">(my-minecraft-book <span class="org-string">"Simple book"</span> <span class="org-string">"sachac"</span>
                   <span class="org-highlight-quoted-quote">'</span>((<span class="org-string">"Daytime"</span> <span class="org-string">"set time 0800"</span>)
                     (<span class="org-string">"Creative"</span> <span class="org-string">"gamemode creative"</span> <span class="org-string">"#0000cd"</span>)))
</pre>
</div>

<pre class="example" id="org1188d1b">
item replace entity @p weapon.mainhand with written_book{"pages":["[{\"text\":\"Daytime\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/set time 0800\"}},{\"text\":\"\\n\"},{\"text\":\"Creative\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/gamemode creative\"},\"color\":\"#0000cd\"},{\"text\":\"\\n\",\"color\":\"reset\"}]"],"author":"sachac","title":"Simple book"}
</pre>

<p>
To place it in the world:
</p>
<ol class="org-ol">
<li>I changed my <code>server.properties</code> to set <code>enable-command-block=true</code>.</li>
<li>In the game, I used <code>/gamemode creative</code> to switch to creative mode.</li>
<li>I used <code>/give @p minecraft:command_block</code> to give myself a command block.</li>
<li>I right-clicked an empty place to set the block there.</li>
<li>I right-clicked on the command block and pasted in the command.</li>
<li>I added a button.</li>
</ol>

<p>
Then I clicked on the button and it replaced whatever I was holding
with the book. I used <code>item replace</code> instead of <code>give</code> so that it's
easy to replace old versions.
</p>

<p>
On the Org Mode side, it's much nicer to specify commands in a named
table. For example, if I name the following table with <code>#+name:
mc-quick</code>, I can refer to it with <code>:var quick=mc-quick</code> in the Emacs
Lisp source block. (<a href="https://sachachua.com/2023/04/using-org-mode-tables-and-emacs-lisp-to-create-minecraft-java-json-command-books/index.org">You can check the Org source for this post if that makes it easier to understand.</a>)
</p>

<table id="orgf6f03b5">


<colgroup>
<col class="org-left">

<col class="org-left">

<col class="org-left">
</colgroup>
<tbody>
<tr>
<td class="org-left">Daytime</td>
<td class="org-left">time set 0800</td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Clear weather</td>
<td class="org-left">weather clear</td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Creative</td>
<td class="org-left">gamemode creative</td>
<td class="org-left">#0000cd</td>
</tr>

<tr>
<td class="org-left">Survival</td>
<td class="org-left">gamemode survival</td>
<td class="org-left">#ff4500</td>
</tr>

<tr>
<td class="org-left">Spectator</td>
<td class="org-left">gamemode spectator</td>
<td class="org-left">#228b22</td>
</tr>
</tbody>
</table>

<div class="org-src-container">
<pre class="src src-emacs-lisp">(my-minecraft-book <span class="org-string">"Book from table"</span> <span class="org-string">"sachac"</span> quick)
</pre>
</div>

<pre class="example" id="org2d670cd">
item replace entity @p weapon.mainhand with written_book{"pages":["[{\"text\":\"Daytime\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/time set 0800\"}},{\"text\":\"\\n\"},{\"text\":\"Clear weather\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/weather clear\"}},{\"text\":\"\\n\"},{\"text\":\"Creative\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/gamemode creative\"},\"color\":\"#0000cd\"},{\"text\":\"\\n\",\"color\":\"reset\"},{\"text\":\"Survival\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/gamemode survival\"},\"color\":\"#ff4500\"},{\"text\":\"\\n\",\"color\":\"reset\"},{\"text\":\"Spectator\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/gamemode spectator\"},\"color\":\"#228b22\"},{\"text\":\"\\n\",\"color\":\"reset\"}]"],"author":"sachac","title":"Book from table"}
</pre>


<p>
Then I can define several named tables and append them together. Here's one for different effects:
</p>

<table id="orgb83d075">


<colgroup>
<col class="org-left">

<col class="org-left">

<col class="org-left">
</colgroup>
<tbody>
<tr>
<td class="org-left">Water breathing</td>
<td class="org-left"><code>effect give @p minecraft:water_breathing infinite 255 true</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Night vision</td>
<td class="org-left"><code>effect give @p minecraft:night_vision infinite 255 true</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Regeneration</td>
<td class="org-left"><code>effect give @p minecraft:regeneration infinite 255 true</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Haste</td>
<td class="org-left"><code>effect give @p minecraft:haste infinite 2 true</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Health boost</td>
<td class="org-left"><code>effect give @p minecraft:health_boost infinite 255 true</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Slow falling</td>
<td class="org-left"><code>effect give @p minecraft:slow_falling infinite 255 true</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Fire resist</td>
<td class="org-left"><code>effect give @p minecraft:fire_resistance infinite 255 true</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Resistance</td>
<td class="org-left"><code>effect give @p minecraft:resistance infinite 255 true</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Clear effects</td>
<td class="org-left"><code>effect clear @p</code></td>
<td class="org-left">&#xa0;</td>
</tr>
</tbody>
</table>

<p>
Some commands are pretty long. Specifying a width like <code>&lt;20&gt;</code> in the first row lets me use <code>C-c TAB</code> to toggle width.
</p>

<table id="orga2e7d34">


<colgroup>
<col class="org-left">

<col class="org-left">

<col class="org-left">
</colgroup>
<tbody>
<tr>
<td class="org-left">Pickaxe</td>
<td class="org-left"><code>give @p minecraft:diamond_pickaxe{Enchantments:[{id:"minecraft:fortune",lvl:4s},{id:"minecraft:mending",lvl:1s},{id:"minecraft:efficiency",lvl:4s}]}</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Silk touch pickaxe</td>
<td class="org-left"><code>give @p minecraft:diamond_pickaxe{Enchantments:[{id:"minecraft:silk_touch",lvl:1s},{id:"minecraft:mending",lvl:1s}]}</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Sword</td>
<td class="org-left"><code>give @p minecraft:diamond_sword{Enchantments:[{id:"minecraft:looting",lvl:4s},{id:"minecraft:mending",lvl:1s}]}</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Axe</td>
<td class="org-left"><code>give @p minecraft:diamond_axe{Enchantments:[{id:"minecraft:looting",lvl:4s},{id:"minecraft:mending",lvl:1s}]}</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Shovel</td>
<td class="org-left"><code>give @p minecraft:diamond_shovel{Enchantments:[{id:"minecraft:fortune",lvl:4s},{id:"minecraft:mending",lvl:1s},{id:"minecraft:efficiency",lvl:4s}]}</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Bow</td>
<td class="org-left"><code>give @p minecraft:bow{Enchantments:[{id:"minecraft:infinity",lvl:1s},{id:"minecraft:mending",lvl:1s}]}</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Arrows</td>
<td class="org-left"><code>give @p minecraft:arrow 64</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Torches</td>
<td class="org-left"><code>give @p minecraft:torch 64</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Fishing</td>
<td class="org-left"><code>give @p minecraft:fishing_rod{Enchantments:[{id:"minecraft:lure",lvl:4s},{id:"minecraft:luck_of_the_sea",lvl:4s},{id:"minecraft:mending",lvl:1s}]}</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Riptide trident</td>
<td class="org-left"><code>give @p minecraft:trident{Enchantments:[{id:"minecraft:loyalty",lvl:4s},{id:"minecraft:mending",lvl:1s},{id:"minecraft:riptide",lvl:4s}]}</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Channeling trident</td>
<td class="org-left"><code>give @p minecraft:trident{Enchantments:[{id:"minecraft:loyalty",lvl:4s},{id:"minecraft:mending",lvl:1s},{id:"minecraft:channeling",lvl:1s}]}</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Weather rain</td>
<td class="org-left"><code>weather rain</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Weather thunder</td>
<td class="org-left"><code>weather thunder</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Birch signs</td>
<td class="org-left"><code>give @p minecraft:birch_sign 16</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Bucket of water</td>
<td class="org-left"><code>give @p minecraft:water_bucket</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Bucket of milk</td>
<td class="org-left"><code>give @p minecraft:milk_bucket</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Bucket of lava</td>
<td class="org-left"><code>give @p minecraft:lava_bucket</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Water bottles</td>
<td class="org-left"><code>give @p minecraft:potion{Potion:"minecraft:water"} 3</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Blaze powder</td>
<td class="org-left"><code>give @p minecraft:blaze_powder 16</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Brewing stand</td>
<td class="org-left"><code>give @p minecraft:brewing_stand</code></td>
<td class="org-left">&#xa0;</td>
</tr>

<tr>
<td class="org-left">Magma cream</td>
<td class="org-left"><code>give @p minecraft:magma_cream</code></td>
<td class="org-left">&#xa0;</td>
</tr>
</tbody>
</table>

<p>
Here's what that table looks like in Org Mode:
</p>


<figure id="orgcccb400">
<img src="https://sachachua.com/blog/2023/04/using-org-mode-tables-and-emacs-lisp-to-create-minecraft-java-json-command-books/2023-04-10_09-55-57.png" alt="2023-04-10_09-55-57.png">

<figcaption><span class="figure-number">Figure 2: </span>With column width</figcaption>
</figure>

<p>
Here's how to combine multiple tables:
</p>

<div class="org-src-container">
<pre class="src src-org"><span class="org-org-block-begin-line">#+begin_src emacs-lisp :results silent :var quick=mc-quick :var effects=mc-effects :var items=mc-items :exports code</span>
<span class="org-org-block">(my-minecraft-book </span><span class="org-org-block"><span class="org-string">"Book from multiple tables"</span></span><span class="org-org-block"> </span><span class="org-org-block"><span class="org-string">"sachac"</span></span><span class="org-org-block"> (append quick effects items))</span>
<span class="org-org-block-end-line">#+end_src</span>
</pre>
</div>

<p>
Now producing instance-specific books is just a matter of including
the sections I want, like a table that has coordinates for different
bases in that particular instance.
</p>

<p>
I thought about making an Org link type for click commands and some
way of exporting that will convert to JSON and keep the whitespace.
That way, I might be able to write longer notes and export them to
Minecraft book JSON for in-game references, such as notes on villager
blocks or potion ingredients. The table + Emacs Lisp approach is
already quite useful for quick shortcuts, though, and it was easy to
write. We'll see if we need more fanciness!</p>
<div><a href="https://sachachua.com/blog/2023/04/using-org-mode-tables-and-emacs-lisp-to-create-minecraft-java-json-command-books/index.org">View org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2023%2F04%2Fusing-org-mode-tables-and-emacs-lisp-to-create-minecraft-java-json-command-books%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>Minetest and MineClone 2</title>
		<link>https://sachachua.com/blog/2023/03/minetest-and-mineclone-2/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Fri, 03 Mar 2023 19:10:09 GMT</pubDate>
    <category>fun</category>
<category>geek</category>
<category>play</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2023/03/minetest-and-mineclone-2/</guid>
		<description><![CDATA[<p>
A number of A+'s friends play Minecraft, so she got curious about it
and started reading lots of e-books. We figured it might be time to
let the video game genie out of the bottle since she tends to dive
deeply into new interests and learn a lot. I wanted to get her started
on Minetest, though, instead of buying one of the Minecraft editions.
(Yay free and open source software!)
</p>

<p>
I installed <a href="https://www.minetest.net/">MineTest</a>, then used the Content tab to install <a href="https://www.google.com/search?channel=fs&amp;client=ubuntu&amp;q=mineclone+2">MineClone 2</a>
and the <a href="https://content.minetest.net/packages/Wuzzy/tutorial/">tutorial</a>. I updated the other X220 so that I could run it
there too, and we eventually turned it into a server. I went through
the tutorial and then I showed it to her. We drew up an agreement to
treat it the same as video time (20-minute timers for eye breaks,
daily limits, need to be in the green zone). W- connected the other
X220 to the TV with a VGA cable, and I used a USB hub to connect two
keyboards and two mice to the laptop. A+ completed part of the
tutorial. She found it hard to work the keyboard and the mouse while
looking at the screen. She liked giving me directions to follow,
taking over clicking or crafting whenever she felt comfortable.
</p>

<p>
We've been playing MineClone for almost a week, and it's starting to
feel comfortable. We have a little base with a wheat/carrot farm, a
well, and a fishing pond, and we're exploring the world. We might try
creative mode in a while.
</p>

<p>
It looks like A+'s mostly curious about mobs, farming, ores, and
flying around. She loves noticing things to explore and new recipes to
craft. W- sometimes joins us, which is extra fun and helpful.
</p>

<p>
Minetest gives me opportunities to learn useful things, too. I'm
getting better at saying yes to A+ when she wants to craft something,
even if I wanted to save the materials for something else. (I should
make a MineClone version of the reminder in our kitchen that says
"Groceries are tuition for raising a cook.")
</p>

<p>
I'm still too impatient for the regular process of navigating around
and bumping into resources, especially since we're working within
20-minute segments. I flew around with noclip/fast and set up some
<a href="https://content.minetest.net/packages/mt-mods/travelnet/">Travelnet</a> boxes near interesting things, which A+ has liked a lot
because now she can teleport independently.
</p>

<p>
I'm way too chicken to deal with damage, hostile mobs, or even night
time at the moment. Since A+ would really like me to go fight the mobs
she loves to read about, I'm thinking about how to gradually build up
my courage with some kind of exposure therapy. =) I started learning
how to <a href="https://codeberg.org/sachac/sc_chicken">modify armor</a> so that I can keep myself mostly protected while
leaving damage enabled for anyone who's braver (like W-). Maybe as I
get the hang of it, I'll be able to dial down the protection or just
let it keep a minimum HP level.
</p>

<p>
Lots of learning ahead!
</p>

<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2023%2F03%2Fminetest-and-mineclone-2%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>Making a menu of activities</title>
		<link>https://sachachua.com/blog/2021/08/making-a-menu-of-activities/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Fri, 20 Aug 2021 00:00:00 GMT</pubDate>
    <category>sketchnotes</category>
<category>drawing</category>
<category>parenting</category>
<category>play</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2021/08/making-a-menu-of-activities/</guid>
		<description><![CDATA[<p>
A- wants to be with me almost all the time. This can be challenging.
</p>

<p>
</p><div class="sketch-full"><a class="photoswipe" href="https://sketches.sachachua.com/filename/2021-08-17a%20Mama%2C%20I%20want%20to%20play%20with%20you%20%23parenting%20%23challenge%20%23play.jpg" data-src="https://sketches.sachachua.com/static/2021-08-17a%20Mama%2C%20I%20want%20to%20play%20with%20you%20%23parenting%20%23challenge%20%23play.jpg" data-title="2021-08-17a Mama, I want to play with you #parenting #challenge #play.jpg" data-w="3300" data-h="2550"><picture>
      <img src="https://sketches.sachachua.com/static/2021-08-17a%20Mama%2C%20I%20want%20to%20play%20with%20you%20%23parenting%20%23challenge%20%23play.jpg" width="3300" height="2550" alt="2021-08-17a Mama, I want to play with you #parenting #challenge #play.jpg" loading="lazy" style="max-height: 90vw; height: auto; width: auto" decoding="async">
      <figcaption>2021-08-17a Mama, I want to play with you #parenting #challenge #play.jpg</figcaption>
    </picture></a></div>
<p></p>


<p>
A multiple-choice question is easier than a fill-in-the-blank one,
especially when it comes to "What do we do now?" A- seems less grumpy
throughout the day when she can go from one activity to another of her
choosing. I like letting her take the lead. I also like not having to
come up with stuff. During bedtime, I sketched this menu:
</p>

<p>
</p><div class="sketch-full"><a class="photoswipe" href="https://sketches.sachachua.com/filename/2021-08-19b%20Menu%20of%20activities%20%23parenting%20%23play%20.jpg" data-src="https://sketches.sachachua.com/static/2021-08-19b%20Menu%20of%20activities%20%23parenting%20%23play%20.jpg" data-title="2021-08-19b Menu of activities #parenting #play.jpg" data-w="3300" data-h="2550"><picture>
      <img src="https://sketches.sachachua.com/static/2021-08-19b%20Menu%20of%20activities%20%23parenting%20%23play%20.jpg" width="3300" height="2550" alt="2021-08-19b Menu of activities #parenting #play.jpg" loading="lazy" style="max-height: 90vw; height: auto; width: auto" decoding="async">
      <figcaption>2021-08-19b Menu of activities #parenting #play.jpg</figcaption>
    </picture></a></div>
<p></p>

<p>You can <a href="https://sachachua.com/blog/2021/08/making-a-menu-of-activities/#comment">view 2 comments</a> or <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2021%2F08%2Fmaking-a-menu-of-activities%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item>
	</channel>
</rss>