Posted on 5/21/2023
Tags:
Brain Hacking
I use this trick when I can't remember a name I used to know. It works for names of actors, teachers, friends of friends, etc.
The trick:
First, try to remember as much as you can about the person. Imagine their face, appearance, and other biographical information.
Then go through the alphabet saying a name for each letter. Try to pick names that are as plausible as possible for the person you're trying to remember.
Example:
What was my old roommate's girlfriend's name?
She was from Connecticut, they dated for a few years, she had long dark hair, she was allergic to dogs, she worked as an accountant, ...
A... Ashley
B... Blaire
C... Chelsea
D... Daphne
E... Eliza
F... Frances
G... Genevieve
H... Hillary
I... Irene
J... Jessica
K... Katherine
L... Laura
M... Monica
N... Nancy
O... Olivia
P... Penny
Q... Queenie
R... Rachel
S... Stephanie! That's it!
I can almost feel the old dusty neural pathways light up when it finally clicks!
Posted on 1/15/2023
Tags:
Programming,
Raspberry Pi
I recently completed a harrowing journey to install Emscripten on a Raspberry Pi 400. There were many hiccups along the way that brought back bad memories from the ~8 years that I used Linux (4 on Gentoo, 4 on Debian) as my daily driver OS.
If you're running a well-trodden configuration, things work pretty smoothly. If you're running anything else, you'll spend hours, days, or even years with systems that aren't working 100%.
For Emscripten, Raspberry Pi 400 is not a well-trodden configuration.
Emscripten provides official binaries for many configurations and I bet the
official tutorial goes really quickly and smoothly if you are running an x64 CPU.
They even provide binaries if you're running an arm64 CPU, just install using this command (see
this ticket for more info):
./emsdk install latest-arm64-linux
But if you are running a 32-bit Intel-based (x86) or ARM CPU, then you will need to build from source.
Raspberry Pi 400 is a 32-bit ARM CPU so I found myself needing to build from source.
And, at least on my machine, the default commands did not work.
(I also tried to get Emscripten installed in the iSH iOS app, which emulates an x86 CPU. The emsdk script spent hours cloning the LLVM repository and then started building from source but iSH consistently crashed early in the build process. I gave up. It's possible this will work in the future.)
Here are the steps I followed, what failed, and how I got it working:
My initial configuration: Raspberry Pi 400 running the Buster (Debian 10) version of Raspbian that came with the SD card. I had installed some packages for other purposes so it's possible I won't mention some packages vital to making these steps work.
I needed to install one package:
sudo apt-get install cmake
I think that the resources emscripten pulls plus the intermediate build products can end up taking tens of gigs of storage (I only checked once during build and it was 22GB). I didn't have that much free space on the Raspberry Pi's SD card so I used a USB-C external drive. My external drive is formatted exfat.
The exfat filesystem doesn't support symlinks and building will fail hours into the process because of that:
[ 50%] Linking CXX shared library ../../lib/libLTO.so
CMake Error: failed to create symbolic link '../../lib/libLTO.so': operation not permitted
CMake Error: cmake_symlink_library: System Error: Operation not permitted
make[2]: *** [tools/lto/CMakeFiles/LTO.dir/build.make:168: lib/libLTO.so.16git] Error 1
make[2]: *** Deleting file 'lib/libLTO.so.16git'
make[1]: *** [CMakeFiles/Makefile2:17719: tools/lto/CMakeFiles/LTO.dir/all] Error 2
make: *** [Makefile:152: all] Error 2
Build failed due to exception!
Instead of reformatting my external drive, I created a very large disk image on it which I formatted as ext4:
# 200GB image - I think this is overkill but I wasn't willing to fail because of insufficient disk space
# Some guides suggest using the fallocate command to create a disk image but I found that command does not work when writing to an exfat drive
dd if=/dev/zero of=image.iso bs=1G count=200
# Format the image ext4
mkfs.ext4 -j image.iso
Then I mounted the disk image and gave the pi user full ownership:
cd /media/
sudo mkdir emscripten-disk
sudo mount /path/to/image.iso emscripten-disk
cd emscripten-disk
sudo chown -R pi:pi .
Within that directory, I ran this:
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk install sdk-upstream-main-32bit -j1
The "-j1" argument forces the build to use only one CPU. When I originally attempted to install without that argument, the build failed with very little feedback. Just this generic error, no specific compiler errors:
Error 2
Build failed due to exception!
I think this is caused by the machine running out of memory (or maybe some other kind of compiler crash).
Of course, building with only one CPU makes this whole process take much longer. It took ~16 hours for everything to build.
When the build completes, run this:
./emsdk activate sdk-upstream-main-32bit
Pay attention to the output of that command because it tells you how to add the right directories to PATH for emcc to be found.
After all that, following the
official tutorial, I created hello_world.c and tested the compiler:
emcc hello_world.c
node a.out.js
And I got this error:
/path/to/a.out.js:144
throw ex;
^
ReferenceError: globalThis is not defined
This is because Buster's version of nodejs is 10.24.0, a version before globalThis is supported.
This command did produce hello.html which worked as expected in my browser:
emcc hello_world.c -o hello.html
To get node working, I needed to update my Raspberry Pi to Bullseye (Debian 11). I followed
this guide.
This was an arduous process of running apt-get update, apt-get upgrade, rebooting, manually editing /etc/apt/sources.list, apt-get update, apt-get upgrade, rebooting, apt-get update, apt-get upgrade, apt-get install nodejs, babysitting all of these commands because some of them require user input, losing SSH access as a result of some updates (make sure to run these commands inside screen or tmux!), physically accessing the device to restart sshd, etc.
Finally at the end of it, this command worked:
node a.out.js
(output) Hello, world!
Hopefully these steps work for you!
Other Useful Info
If at any point you need to clean build, you can do this:
rm -rf llvm/git/build_main_32
I had to do this once when figuring out the workaround for the exfat symlink issue. If you change the directory emsdk is running in between attempts, the build scripts will not let you pick up where you left off.
Here's what got me up to the compiling phase in the iSH app on iPad:
apk add cmake
apk add make
apk add clang
apk add binutils
apk add libc-dev
apk add gcc
apk add libstdc++6
apk add g++
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk install sdk-upstream-master-32bit
(note that this will take HOURS to clone LLVM)
Progress compiling got to 2% and then iSH crashes.
(I filed an
issue.)
Posted on 11/22/2022
Tags:
Food,
Parenting,
Tools
With a toddler at home, we've come to rely on DoorDash as a quick way for the adults to eat tasty food.
We're lucky to live in an area densely packed with restaurants. Despite the wealth of options, we often struggle to choose when dinnertime arrives.
My spouse and I will end up naming restaurants, taking turns rejecting options one-by-one. On some days, nothing sounds good. On some days, we're exhausted from a night of interrupted sleep and lack the energy to pick. Often both.
I got the idea to make picking a restaurant more mechanical on the hard days.
At first, I considered building a web app with a database and a nice UI for listing restaurants and saving our history. I spend most of my non-work hours taking care of the baby, exercising, or doing chores so even a simple side-project takes months and comes at the cost of precious sleep hours. I needed a lower-effort way to test the idea.
I realized I could make this tool in a shared spreadsheet. I used Numbers on iPhone/iPad and shared the sheet with my spouse using iCloud. Google Sheets could've worked too. Spreadsheets are a great low-effort way to solve problems without writing code. I bet a lot of software engineers underutilize spreadsheets.
Here's how it works:
- Add a row for every restaurant
- Have a column for the last time we ate there
- Have a column for each person with an estimate of how often they are willing to eat at each particular restaurant
- Have a column to note any restaurants someone is actively in the mood to eat at
- The sheet calculates a recommendation for each row:
- Too soon: neither person is ready to eat there again
- Let's eat (green): both people are ready OR someone is in the mood
- Maybe eat (yellow): one person is ready
- At dinnertime, peruse the green and yellow rows to pick efficiently
Grab my
example sheet to create your own.
Posted on 11/20/2022
Tags:
Art
Here's a collection of trippy art from various corners of the internet. Some is generated with the help of neural networks. Some is human-made.
Posted on 5/30/2022
Tags:
Programming,
Art,
Games
Introducing my latest project:
Tap Toy
Tap Toy is a fun little web app for relaxation. Tap the screen to launch some characters which then bounce off each other. Turn on sound for satisfying sound effects and relaxing public-domain background music. In some ways, I think this toy brings the catharsis of popping bubble wrap to your touch screen.
I got the idea for this project after watching my then-9-month-old's fascination with my iPhone and iPad. Note that the CDC guidelines recommend "no screen time for children younger than 2 years" (
source,
backup) but these kids will still find a way to grab your device for a fleeting moment before you take it back.
I wondered if I could make an app to soothe and distract our baby if we ever became truly desperate for a moment of peace. (Fortunately, we still haven't reached this point yet!)
I modeled some of the behavior after
Baby Einstein Take Along Tunes, one of the more pleasant sound-making toys we have:

The result, as my wife described it, is "crack". She was having a bad day when Tap Toy was first ready to play with and she ended up zoning out, addicted, tapping it for 30 minutes while some of her stress melted away.
As is usual for me, this side-project is a remix of a few other projects:
-
MagicKeyboard.io (
backup,
source) by
Feross Aboukhadijeh
- Which in turn is inspired by a
reddit post about this
art project by Moment Factory
- In fact, I kept the keyboard triggers to launch sprites from the right location along the bottom of the screen
- I fixed the sound effect code and added background music
- I also added real multi-touch and mouse support
-
PCEImage (note that the Koffing, Pikachu in Tap Toy show up in
PCEImage Editor's list of examples)
Some tips:
- You can add this web page to your home screen on iOS or Android. If you do that, it'll behave more like a normal app. (I did the extra bit of work to make this a "progressive web app")
- If you give this to a kid, you can use
Guided Access to prevent them from leaving the app
An idea to take this further:
- Holiday-themed Tap Toys: Halloween, Thanksgiving, Christmas, Chanukah, New Year's Eve, etc
Posted on 2/13/2022
Tags:
Programming,
Art,
Tools
After defining the
PCEImage specification, I wanted to create a great code editor that can color each character in the image.
Try out the editor in your browser or read on for more details.
I was inspired by the
PuzzleScript editor (mentioned in my
post about PuzzleScript), especially how sprites are defined and styled. Whereas PuzzleScript sprites use
indexed color, PCEImage can use almost any ASCII character as a pixel so I couldn't just reuse the same editor.
I could reuse the same foundations, though! PuzzleScript's editor is built using
CodeMirror, an open-source text editor implemented in JavaScript for the browser.
CodeMirror is super customizable and I was able to add the coloring support I needed by writing a
parser and making some changes to
codemirror.js.
I also added support to the editor to automatically generate PNGs and, to add a little fun, wobbling GIFs.

For the wobble effect, I was inspired by
Wobblepaint (mentioned in my
PICO-8 post) and did my best to try to capture the same organic and charming wobble
zep invented.
I also included some "Color Utilites" on the editor page: a simple color picker, a button to invoke your system color picker, and some example palettes (including PICO-8's). Check out
Lospec's Palette List for even more ideas.
If you create any cool PCEImages, I hope you'll consider
submitting a pull request to add your example! I'll find some way to credit the submitters on the page if I get any!
Posted on 2/13/2022
Tags:
Programming,
Art
I recently needed to make pixel art for a game and wanted to define the images in code rather than having separate image asset files.
Defining the images in code comes with some benefits:
- I don't need separate versions of the images for different resolutions. I can easily scale them up automatically.
- I can easily slice the
sprites to animate them programmatically
- I can make minor tweaks with a text editor (my tool of choice! I am much more at home in a text editor than image editing software)
- I get useful diffs when changing images in
source control
To achieve this, I created a simple format I'm calling "PCEImage" (which is short for "Pixel-Character Encoded Image"). Here's what it looks like:
.:#00000000
@:#444444
#:#5555FF
.......
.@.@...
.@.@...
.@.@...
.@@@.#.
.@.@...
.@.@.#.
.@.@.#.
.@.@.#.
.......
Here's that image as a PNG (drawn with scale 10):

A neat benefit of this encoding is that the images are also ASCII art -- it's easy to see what a PCEImage looks like even without coloring. In fact, this format is a combination of ASCII art and
indexed color.
PCEImage Format Specification
The first section of a PCEImage defines what color each character represents. Each line in this section looks like: CHARACTER:HEXCOLOR
Then there's one blank line.
Then the second section is the image itself. Every character in this section (except for the newline at the end of each line) represents a pixel in the image. Every line in this section should be the same length (the width of the image).
There should not be a newline character after the last pixel character on the last line.
PCEImage Reference Implementation
I wrote a reference implementation of this specification in JavaScript
here.
I had a little fun and also added a wobble mode (similar to
Wobblepaint, mentioned in my
PICO-8 post).
See it in action in my
PCEImage Editor.
Read more about the editor
here.
Posted on 2/10/2022
Tags:
Music
I've had the Beatles on my mind recently thanks to the buzz around Peter Jackson's "
The Beatles: Get Back" documentary.
I grew up long after the Beatles had broken up and I had never listened to a full Beatles album despite liking a lot of their songs. I decided to listen to every album in order, looking up interesting details about the albums and songs on Wikipedia along the way. (I wish there were more
pop-up videos!)
I now have a lot more appreciation for the Beatles members as people, how hard-working they were, and how their music evolved.
Here are my Beatles picks (in no particular order). Many of these songs are so popular that I already knew them; others I heard for the first time during this listen-through. I left off some songs (Hey Jude, Lucy in the Sky With Diamonds, and many more) that are objectively good but that I don't like enough to consider "my picks". Some of these songs are funny (such as Norwegian Wood, Michelle, Girl (how a pained John Lennon sucks in air through his teeth), Getting Better), some are just fun, and others are among the most beautiful songs I've ever heard.
- In My Life
- Here Comes the Sun
- Something
- All My Loving
- Love Me Do
- Please Please Me
- I'm So Tired
- Dear Prudence
- While My Guitar Gently Weeps
- You Never Give Me Your Money
- And I Love Her
- Eight Days a Week
- Help!
- The Night Before
- Yesterday
- You've Got to Hide Your Love Away
- Drive My Car
- Norwegian Wood
- The Word
- Michelle
- Girl
- Eleanor Rigby
- Sgt. Pepper's Lonely Hearts Club Band
- With a Little Help From My Friends
- Lucy In the Sky with Diamonds
- Getting Better
- Fixing a Hole
- Lovely Rita
- I Am the Walrus
- Strawberry Fields Forever
- Penny Lane
- The Continuing Story of Bungalow Bill
- Sexy Sadie
- I Want You (She's So Heavy)
- Because
- Across the Universe
- A Day In The Life (the version from "The Beatles / 1967-1970"; the original has creepy audio at the end that's not pleasant in a playlist)
Post-Beatles honorable mentions:
- John Lennon - How Do You Sleep?
- John Lennon - Jealous Guy
- Paul McCartney - Maybe I'm Amazed
- Paul McCartney & Michael Jackson - Say Say Say
- Paul McCartney & Wings - Live and Let Die
- Paul McCartney & Kanye West - Only One
- Rihanna & Kanye West & Paul McCartney - FourFiveSeconds
- George Harrison - My Sweet Lord
- George Harrison - Got My Mind Set On You
- George Harrison - Marwa Blues
- Traveling Wilburys - Handle with Care
I also watched the movies
Yesterday and
Across the Universe and enjoyed them more than I could've if I hadn't heard these albums and learned some of the history beforehand.
Posted on 12/26/2021
Tags:
Music
I still enjoy
finding songs that sound similar.
I recently listened to
Dear Prudence by The Beatles and could've sworn I had heard the chord progression somewhere before. I searched online and found that I probably heard it in
Beautiful by Christina Aguilera. The website that gave me this connection is
SoundsJustLike.com.
SoundsJustLike.com is pretty cool with a long list of user-submitted song connections. Unfortunately, it's hard to search for a specific song. To make it easier, I created
this one-page snapshot of all the songs users have submitted.
There are a lot of great songs on there to explore!
Posted on 12/24/2021
Tags:
Games,
Programming
PuzzleScript is a way to make tile-based games that run on the web. It was
created by
increpare.
An interesting tidbit from the
credits page: PuzzleScript's creator is/was flatmates with
Terry Cavanagh, who made a bunch of popular and creative games:
VVVVVV,
Super Hexagon, and (my favorite)
Don't Look Back.
The PuzzleScript games I've seen usually have
Sokoban elements: pushing/moving crates to solve puzzles. The wrong moves can make a level unbeatable so another core element of PuzzleScript games is unlimited undo by pressing 'z'. Explore the
gallery and check out increpare's
portfolio of games.
Notable Games
(
backup)
I enjoyed this game the most. Sokoboros combines elements of Sokoban and
Snake. The game's name is a clever pun that combines "Sokoban" and "
Ouroboros"!
(
backup)
I enjoyed this game where you play as the Greek Titan
Atlas who has been shrunken down and needs to escape a series increasingly complex of rooms.
(
backup)
This
Zelda-inspired game is made by
Joshua Minor. Joshua's
twitter feed has led me to many interesting projects and ideas, including PuzzleScript and
PICO-8! If not for him, these posts wouldn't exist. According to
LinkedIn, Joshua's been an engineer at Pixar for 21 years at the time of writing. How cool!
(
backup)
Terry Cavanagh made this game. I'm reminded slightly of
Don't Look Back: the main character is navigating a hellish and dangerous world to retrieve something beautiful.
(
backup)
Love and Pieces is made by Lexaloffle / Zep, the creator of
PICO-8!
Some Technical Details
PuzzleScript
source code (
backup) reveals some cool details:
- PuzzleScript has its own web-based
code editor. I particularly like how it displays colors for the sprite pixels defined in text.
- Instead of hosting its own database of games, it integrates with GitHub's gist API. Every game is just stored in a gist in a user's GitHub account. For example, Atlas Shrank's gist is
here. This is an interesting and clever way to avoid hosting your own server.
- The code to post a new gist can be found in the shareClick function
here.
- The code to load a gist can be found in the getData function
here.
- play.html loads whatever gist id is appended to the url (which looks like:
https://www.puzzlescript.net/play.html?p=6994394)
- I think there's a risk loading content this way: it could look like the website owner published content when really it was published by someone else. The content could be offensive or harmful. To mitigate this, if I use this technique in a project I will probably show a disclaimer on the website that this content is from an external user with a direct link to that user's gist.
Posted on 12/19/2021
Tags:
Food
The Chex cereal pieces in official store-bought Chex Mix are not the same as the pieces you get in cereal boxes!
Just take a look at the photo above. The Wheat Chex on the left is from a bag of Chex Mix. The Wheat Chex on the right is from a cereal box.
Notice how the cereal box one is flatter, denser, has little rectangular holes instead of little square ones.
The taste and texture of the Chex are different too. The one from the Chex Mix tastes better and has a more pleasant crunch.
One may be optimized for delicious dry snackiness while the other is optimized for being eaten in milk.
It's interesting to know we can't replicate store-bought Chex Mix at home because the Chex we can buy make for an inferior snack!
Posted on 12/12/2021
Tags:
Games
PICO-8 is a way to make "retro"-style games and then play them anywhere, including on the web.
PICO-8 initially caught my eye with a few beautiful pixelated games and graphics. Just look at the delightful screen capture of
Celeste above.
Here's what I love about this platform:
- Thanks to web technologies, these games can be played anywhere. They work great on touchscreens on iOS and Android. They work great with keyboard and mouse.
- I love the aesthetic of these games: the low resolution, the 16-color palette. It's inspiring to see how expressive people have been despite (and thanks to) these limitations.
- Another limitation is code size. This usually means the games are bite-sized and can be played and beaten in a sitting.
- These limitations are chosen on purpose and are part of the magic. From the
about page for PICO-8's website: "Lexaloffle is the home of computer games and fantasy consoles made by
Joseph White, whose principle mission is to seek out and explore mathematically cute sets of rules that somehow give rise to thematically cute game worlds."
- My taste in games is trapped in the past, probably the SNES era. Even though SNES was slightly before my time, I've had a blast playing those games. In comparison, games that push the limits of today's hardware are impressive but they are too complex for me. What truly brings me joy are simple "retro"-style games.
- PICO-8 introduced me to the concept of a game "
demake". When creating a demake, people boil a game down to its essence. They create a game with the same feel or personality as the original game but smaller and much simpler, usually with simpler graphics. My favorite right now is
Picopolis, a demake of Sim City.
- PICO-8 games are distributed as PNG "virtual cartridges" with the code embedded in the cartridge image itself. The images look like the physical game cartridges of the 1980s and 90s. How delightful! You can see examples below.
- The creator of PICO-8,
Joseph White aka "zep" (
twitter), is a prolific software developer. He came up with the idea for PICO-8 and then built all of the development tools for editing code, music, sound effects, graphics, etc. In addition to creating PICO-8, he also built the BBS website where users post, comment on, and collaborate on games. The community is very creative and positive. He's made his own games such as
Wobblepaint. He has other projects too, which you can learn about on
lexaloffle.com.
Learn more about PICO-8:
-
PICO-8 on Wikipedia
- Official
FAQ
-
Featured cartridges
-
Cartridge BBS
Here are some of my favorite games so far:
Demakes and Remakes
(
backup)
Demake of Sim City. Usually Sim City has no win condition and I like how the author gave us some way to declare victory: by building a $10 million "Victory Monument". Playing this scratched the itch I had to play classic Sim City. Picopolis is made by
Jens Bergensten (aka Jeb) who's best known for significant contributions to Minecraft.
(
backup)
This is a remake of an old Flash game winter holidays greeting card. Even the same winning strategy works as it did on the original game. Major nostalgic fun :)
(
backup)
I love this! Great example of a demake. Sonic is only 2 pixels and yet anyone who's played a side-scrolling Sonic game will recognize the feel of the game, the music, and the iconic
Green Hill Zone.
(
backup)
Intensely challenging remake of the classic side-scrolling shoot'em up game. Fortunately there's a cheat mode!
(
backup)
A clone of Pac-Man. Thoroughly enjoyable just like the original. One user commented, "more proof that games just look cuter on the PICO :3".
(
backup)
My introduction to Phoenix-style games was in
MirageOS on a TI calculator. It turns out Phoenix was originally an arcade game and this is a more faithful remake.
(
backup)
A clone of Lode Runner. Classic :)
(
backup)
A port of Doom. No platform is complete without one of these! This port really pushes the limits of PICO-8 and works around some of the limitations by splitting its code across several cartridges and then seamlessly jumping between them.
(
backup)
This is a work-in-progress demake of Lumines. The mechanics aren't perfect and the iconic and addictive music and sound effects are missing but this still satisfied my craving for some Lumines action! That's particularly helpful because Lumines is one of those games that has been released several times as a new iOS app only to be abandoned and broken a few years later.
This demake isn't available to play (yet?) but it looks SO GOOD!
Platformer/Metroidvania
(
backup)
Really fun Metroid-style game. I played through in one sitting and had a blast :) There were some jumps that were tricky (and frustrating) using the touch controls which might be easier with a keyboard.
(
backup)
Another fun Metroid-style game. You're a witch who uses a growing repertoire of spells to navigate a castle.
(
backup)
Hardcore platformer that was made in four days as part of a game jam. Very impressive! It was ultimately fleshed out into a
full commercially successful game.
(
backup)
A follow-up game with slightly different mechanics. Also tricky and fun like the original.
(
backup)
Play as a bouncing cube gaining new abilities as the game progresses.
(
backup)
Made by zep, the creator of PICO-8!
Fast platformer
(
backup)
Endless runner. Made for the 2020 PICO-8 Advent Calendar.
(
backup)
Super polished graphics with many different enemies. Fun to play but hard to beat!
(
backup)
Not technically a platformer but requires precise reaction time. Reminds me of Flappy Bird. The first game like this I ever played was
SFCave in black and white on PalmOS (made in
1998!).
RPG
(
backup)
Fairly complete RPG! I like the world and the quests. I don't like how many times I had to play the mini-game. I almost gave up when I was just about to beat the game because I found the mini-game so tedious. It reminded me of how many Zubat you have to fight in Pokémon caves. Grind through and you'll beat the game.
Turn-based
(
backup)
With some tower-defense mechanics too. Fun!
Dungeon Crawler
(
backup)
Another game made by Jens Bergensten. This one has a similar feel to the dungeons in classic
Zelda games with
roguelike flavor.
3D
(
backup)
Beautiful in low-res 3D. Amazing this is possible in PICO-8!
(
backup)
3D dungeon crawler. Reminiscent of the old Windows 95 3D Maze screensaver (recreated by someone in JavaScript
here (
backup)). I remember watching this on the PCs in
CompUSA.
App
(
backup)
This is a charming drawing app. The wobble effect adds a lot of personality to the drawings. Another cartridge made by zep -- he has a knack for coming up with charming ideas! Some
interesting discussion.
3D modeling! This cartridge is available on itch.io as "name your own price" so I didn't grab a backup. Really impressive work and I love the aesthetic. The Gastly above was posted by an artist
here.
Simple
(
backup)
A cute little mini-game by zep. Supports multiple players!
(
backup)
A one-button Spider-Man-inspired game. I like the feel of the game!
(
backup)
I find this concept really funny!
(
backup)
A work-in-progress with a similar feel to Lode Runner. It's really cool that these levels are procedurally generated.
Posted on 11/14/2021
Tags:
Parenting
Do you have a fussy infant?
Here's my checklist for trying to resolve fussiness:
- Does the baby need a diaper change? Check for diaper rash - make sure to slather on extra diaper paste if you see redness/bumps. I saw one website say you should spread it on as if "icing a cake". Our first few diaper rashes were caused by the diaper being too small - check whether the next size up is a better fit!
- Does the baby want a pacifier?
- Is the baby hungry? Try offering a bottle even if they recently ate. They might be going through a growth spurt.
- Does the baby need to burp? Try holding them upright and patting their back.
- They might be uncomfortable. Try holding the baby in different positions.
- The baby might be overstimulated after a long and interesting day. Try darkening the room and make it quiet. Try putting them down for sleep. Try putting them in a bouncer. Try putting them on your chest for a rest.
- If you're feeling overwhelmed or desperate, tag your partner in for help!
- Echoing advice from our pediatrician: If your baby won't stop crying no matter what you try and you're at your wit's end, call your pediatrician. Your baby could be telling you something more serious. WebMD has some
additional advice.
Posted on 11/13/2021
Tags:
Brain Hacking
I've always had a hard time
falling asleep. Closing my eyes invites a whirlwind of thoughts. I can't stop thinking so I can't fall asleep.
Then I found a way to clear my head and fall asleep quickly. It's been working for months now!
Here's what I do:
As I shower and brush my teeth before bed, I spend that ~30 minutes clearing my head. When I notice a thought, I think "ah" and let the thought go, let it dissipate and fade. This isn't the time for thinking and problem solving, it's the time to empty my mind so I can fall asleep.
I repeat this for every thought that creeps in. I've found it also helps to focus on my immediate senses to keep my head emptier: the sound of the toothbrush, the soap/water/friction on my hands. I'm grounded in the present. I'm not thinking about these sounds and feelings; I'm just experiencing them without commentary.
Sometimes this helps me notice a feeling of muscle tightness. Maybe I'm furrowing my brow or frowning. Maybe I have tightness in my shoulders. I release the tension and physically relax.
I continue this meditation as I slide into bed until I fall asleep. And I continue it if I wake up in the middle of the night.

I don't know if this technique is real "meditation" in the Zen Buddhism sense but I was inspired to try it after, months ago, stumbling upon
101 Zen Stories (
Wikipedia). (Warning: these are old and may contain antiquated or even racist terms)
I don't understand them even though they are simple. I tried to search for answers about one of the more famous stories:
The Sound of One Hand (
mirror).
I found a
Quora thread with some discussion. No answer was perfectly satisfying but two similar posts stood out:
Khiêm Bảo Thiện:
However, when one asks you about one hand clapping - which is extraordinary, uncommon, unseen, not understandable - your mind starts to set on a quest for answer, which raises a lot of noises, like you throw a big rock into a tranquil lake. ... So, using this koan and similar, for certain situations, helps the learner realize his/her mind's activities.
Chris Peters:
The idea behind this phrase is not literal, but is meant to "blend" your mind Matrix-style and hopefully trick you into observing your mind as it kinda freaks out.
Is the key to enlightenment learning to notice your thoughts and then clear your head? Who knows. I certainly feel lighter when my head is clear, my muscles are relaxed, and I float off to sleep.
Posted on 10/3/2021
Tags:
Writing,
Brain Hacking
A friend of ours shared the eulogy he gave for his dad. In it, he quoted a lesson his father taught him as a kid:
Watch your thoughts, they become words;
watch your words, they become actions;
watch your actions, they become habits;
watch your habits, they become character;
watch your character, for it becomes your destiny.
(This quote and ones with a similar sentiment are often attributed to many different sources. Ultimately, the original is by Frank Outlaw based on
Quote Investigator's research.)
I don't think I was taught to watch my thoughts as a kid. At least not in a way that was effective for me.
I was taught that particular actions are bad and why they are bad.
I was taught that jealousy, intolerance, hate, etc are bad.
But I didn't realize that the way I choose to think about things can have a big impact on long-term happiness and fulfillment in life. On friendships and relationships too.
I realized in adulthood that being happy is a choice much of the time. A choice made every day. Focusing on the positive (and even helping to amplify it) can do a lot to diminish the negative: disappointment, annoyance, frustration, misfortune.
Of course, really bad things happen sometimes and you can't just ignore them. It wouldn't be healthy to try to force yourself to be happy when you're truly hurting. But for all the small bad things, with practice it's possible to decide how much energy to spend thinking about them -- and whether to think about them at all. Sometimes negativity can be self-fulfilling: expecting to have a bad time can lead to having a bad time.
This is similar to what I'm trying to say in
Day and Night. Thinking envious thoughts leads to envious actions. Comparing yourself to others leads to unempathetic behaviors. And envious actions, unempathetic behaviors lead to a lonely life.
On the other hand, looking for the good and trying to be truly empathetic can lead to happiness, more positivity, and supportive friendships.
More posts:
Tim's Vermeer
Day and Night
Lights Off
Batman Curve
FormulaGraph
Bouncing Ball
Catalog of Math Shapes
Draw Shapes Using Math
Similar Songs
Building a Reddit app
Counterfeit Monkey
Listed Action Interactive Fiction
Andrew Plotkin's Zarfhome
Product Review Writing Prompts
Dungeon Memalign
Pac-Man Dungeon
The Queen's Gambit
Rebecca Meyer
Coding Machines
Clamps
Emoji Simulator
Universal Paperclips
Fall Down the Rabbit Hole
Live COVID-19 Dashboard
Create COVID-19 Graphs Using JavaScript
Books
notes.txt
Download Video Into Your Brain
Download Text Into Your Brain
Source Control
Personal Projects
How to Program a Text Adventure
RSS and Feedly
Welcome