RSS | JSON Feed

( ( ( featured projects ) ) )

Tap Toy
PCEImage Editor
Lights Off
FormulaGraph
Counterfeit Monkey
Dungeon Memalign
Pac-Man Dungeon
Similar Songs

( ( ( posts ) ) )


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.

View the collection


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




Sokoboros

(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"!



Atlas Shrank

(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.



Legend of Zokoban

(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!



Collapse

(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.



Love and Pieces

(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




Picopolis

(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.



Snowfight

(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 :)
      


Sonic16x16

(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.



R-Type

(backup)
Intensely challenging remake of the classic side-scrolling shoot'em up game. Fortunately there's a cheat mode!
  


Pico-Man

(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".



Phoenix

(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.



Lode Runner

(backup)
A clone of Lode Runner. Classic :)



Poom

(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.



Picones

(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.



Teaser: Metroid


This demake isn't available to play (yet?) but it looks SO GOOD!


Platformer/Metroidvania




Mea's Castle

(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.



Get Me the Spell Outta Here!!

(backup)
Another fun Metroid-style game. You're a witch who uses a growing repertoire of spells to navigate a castle.



Celeste

(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.



Celeste 2

(backup)
A follow-up game with slightly different mechanics. Also tricky and fun like the original.



MetroCUBEvania

(backup)
Play as a bouncing cube gaining new abilities as the game progresses.



Blocks For Life

(backup)
Made by zep, the creator of PICO-8!


Fast platformer




Sprint'a'Gift

(backup)
Endless runner. Made for the 2020 PICO-8 Advent Calendar.



Mistigri

(backup)
Super polished graphics with many different enemies. Fun to play but hard to beat!



U Dead

(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




The Lost Night

(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




Virush

(backup)
With some tower-defense mechanics too. Fun!


Dungeon Crawler




It Takes Four to Party

(backup)
Another game made by Jens Bergensten. This one has a similar feel to the dungeons in classic Zelda games with roguelike flavor.


3D




Mot's Grand Prix

(backup)
Beautiful in low-res 3D. Amazing this is possible in PICO-8!



Trial of the Sorcerer

(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




Wobblepaint

(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.



picoCAD


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




Froggleoid

(backup)
A cute little mini-game by zep. Supports multiple players!



Spoiderboi

(backup)
A one-button Spider-Man-inspired game. I like the feel of the game!



Falling Balls

(backup)
I find this concept really funny!

   

Dungeon Guy

(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.

Posted on 9/25/2021
Tags: Art, Leisure
I recently saw news that a painting from the 1650s had been restored to unhide a painting-within-a-painting in the background.

Here's what the "after" and "before" look like:


It's fascinating that modern technology can both find the hidden painted-over image and confirm that it was painted over by someone other than the artist.

I showed my wife who asked "Is that a Vermeer?" which then sent me down another rabbit hole.

I asked "Whoah how could you tell?" and she said that all Vermeer paintings look exactly like this due to similar composition and photo-realistic lighting.

I found that I was already familiar with one of Vermeer's paintings, Girl with a Pearl Earring, possibly due to its use as an example image in computer vision.


Then I stumbled upon Tim's Vermeer, a documentary made by Penn and Teller about an inventor (and successful company founder) named Tim Jenison who had a side-project (bordering on obsession) to understand how Vermeer captured such realistic lighting in paintings and then do so himself.

He ultimately figured out a combination of two mirrors that enable you to color match what's painted exactly to the real scene. It turns the process of painting a brilliant masterpiece into something mechanical, essentially a manual photograph machine with a person holding a paintbrush in the middle.

He starts out copying an old black-and-white photograph this way:


The results are phenomenal! Tim says this was the first painting he's ever made and it was a wholly mechanical process of copying the color he saw in the mirror.

After that successful proof of concept, Tim sets out to completely recreate one of Vermeer's most detailed paintings.

Check out the full documentary (it's only 80 minutes long and you can watch it faster than 1x) to see how he first replicates the physical space and then reproduces the painting. The painting itself takes 130 days.

Here are some snapshots of the mirror setup and the final painting:




By the end of the documentary, I'm convinced that Vermeer used a setup like Tim's. Here's why:

- At one point, Tim realizes that the mirrors cause slight visual distortion in the form of curving of straight lines. He looks at the original Vermeer and discovers the same distortion!
- The lighting in Vermeer paintings goes beyond what the human visual system can detect across the size of the rooms in the paintings
- The fine detail in the rug in the painting is not perceivable from the artist's distance without the magnifying help of the mirrors
- And several more visual quirks of Vermeer's paintings shown in the documentary

But don't take my word for it - check it out yourself!

Posted on 9/18/2021
Tags: Writing, Poetry
Saul made a friend or two
A friend was successful, Saul celebrated
A friend had misfortune, Saul felt their pain and supported them with kindness
Saul had success, the friends celebrated
Saul had misfortune, they came to the rescue
Sometimes they didn't see each other but could always pick up where they left off
Friendships were sometimes superficial and sometimes deep
They looked past the worst in each other and focused on the best
Consciously managing impulses, starving envy, amplifying empathy
Their warmth welcomed others and their circle grew

Luna had some friends
A friend had professional success, but Luna could have done that job better
A friend had a relationship, but their partner wasn't very intelligent or funny or interesting or attractive or...
A friend tried to stay in touch, but it was just superficial. Why are they even bothering?
A friend was happy to catch up and chat, but they were never the one to initiate. Forget them.
Luna and a friend had an argument. Luna was still upset later and said some hurtful things, as hurtful as possible. Later, with regret, Luna asked, "Why can't we pick back up where we left off? Can't you see I need you? Can't you see I need compassion?"
But no one was left to respond

More posts:
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