Studio
icon-recency
icon-category
icon-card

2024

Wow It's October Already

Cindy and Barb (Seattle, USA — September, 2...

blog

Delete Your Backlog

Delete your backlog. Unread books, unplayed games, unwritten essays, unwatched movies. They are all cognitive weight. Yo...

creating & thinking

Talk to Me Human Devlog

Automating Screenshots

I wrote a small script to automate taking screenshots of webpages. The script summoned enough little edge cases that I t...

ttmh devlog products

Cooking Up the Metagame

July 2024 Monthly Digest - The PhD Metagame, and press for Talk to Me Human.

blog

A Big Move and a Small Game

June 2024 Monthly Digest - What I've been up to: moving to NYC, and releasing Talk to Me Human.

blog

Microblog, Garage ?

Specialized Interfaces

From "[BEST] 日本のお金を作るプロセス。新札1万円、500円玉を作る日本の工場" (https://www.youtube.com/watch?v=m5F8rFcJq3c) TODO: There was also a co...

Many Little Tricks

Stub This is a placeholder for me to write more. Bug me if you want to read it. I think havi...

Leeway in Cooking

Stub This is a placeholder for me to write more. Bug me if you want to read it. There’s way ...

Enjoying the Frequency Illusion

You notice something a lot once you become aware of it. The frequency illusion (AKA “Baader-Meinhof phenomenon”) is a f...

Inspiration vs participation

On understanding a domain's true complexity. So many good and well-told ideas from Ted Chiang's essay that I keep referr...

2024 Backlog Burndown

I am in denial of my own advice and attempting to write everything in my essay backlog.

µblog

Dev startups, "It's important to listen to your developers, like _really_ listen to them. That's how we have achieved su...

Eleventy Circular References

Trying to have one page display previews of others. For example a "monthly digest" post shows previews of posts written ...

µblog

Just had the most fascinating Internet dopamine experience. This afternoon, I realized today was a bad one in consuming ...

Electron Breaks Brain

Trying to get Electron setup has made me realize I don't understand so many aspects of my build and deploy and hosting s...

Backend vs Frontend

Contrary to popular perception, frontend engineering is enormously more difficult. It's not even close.

Tailwind custom selector trick

This is a way to create a tailwind class that applies to a custom select `[&>p]`.

µblog

All I want for Christmas is to design for fixed pixel dimensions. (Rather than, say, 93 vastly different screen sizes.) ...

2023

Taiwan

Hualien

The general feel of both thriving and falling apart at the same time.

travel

Taiwan

Chishang

Hope you like rice paddies.

travel

Taiwan

Kaohsiung

Where'd all the art go?

travel

Taiwan

Tainan

Unexpectedly vibrant pocket.

travel

Taiwan

Alishan

We couldn't swim in Sun Moon lake, and we didn't hike Yushan, but by god I observed the hell out of this forest.

travel

Taiwan

Taichung

Long walks through warm pastel evenings---glimpses into Taiwan's second biggest city.

travel

Taiwan

Taipei

Still suffering from bubble tea withdrawal.

travel

Wintermission

On good cameras, Seattle, and San Diego.

travel

Bali

Every ounce of local kindness is a heroic feat in the face of Disneylandification.

travel

Penang

Street eats and a melting pot of traffic.

travel

Singapore

Once you hear "Disneyland with the Death Penalty," you can't un-think it.

travel

The Philippines

El Nido

Islas de Instagram.

travel

The Philippines

Bohol

Tiny primates, grassy lumps, gatorade shores.

travel

The Philippines

Manila

We exit the airport and are immediately confronted by a man holding a shotgun.

travel

Vietnam

Ho Chi Minh City

I feel a bit guilty now about avoiding the day trip OMTAs here. But hey, sometimes you gotta just do you. Eat bun cha, w...

travel

Vietnam

Dalat

At least if we were doing stupid shit, we were doing stupid shit locals do.

travel

Vietnam

Sapa

And The Tiny Agony of Inauthentic Experiences

travel

Vietnam

Hanoi

Wonderful food, terrifying roads, and dead fish.

travel

Korea

Jeju

Seoul / Jeju is the busiest passenger air route in the world. So... where is everybody?

travel

Korea

Busan

Busan feels full of potential, but it also carries the slowness of a town that's always playing second fiddle.

travel

Korea

Seoul

Our favorite place of 2022, of the eighteen countries we visited, was Seoul.

travel

dotfiles ↗

My helper scripts, configs, and instructions for setting up new environments.

software

Georgia

A subway whose platforms are carved so deep underground that you must ride bulky lumbering escalators for a small eterni...

travel

git-checker ↗

A tiny tool to find git repositories on your computer and tell you if any are dirty or unpushed.

software

Sketch: Ramen ode

Hello, this is a sketch of mine, please enjoy

sketch

Sketch: Muji Page Please

Hello, this is a sketch of mine, please enjoy

sketch

Israel

Israel is a million multi-layered and multi-textured sand colored walls; a hundred different outfits and religious denom...

travel

Bosnia and Herzegovina

Everything about Bosnia has fractal-like complexity. For example, there are five presidents. Why? We must go deeper.

travel

Serbia

“It’s all quite run down, isn’t it?” We were all thinking it, but I wished he wouldn’t say it so loudly.

travel

Microblog, Garage ?

µblog

Went through a sculpture garden. Sweet idea: sculpture gardens should make 3D-printed mini models of sculptures for visu...

µblog

After writing TypeScript for (how many years?!) I just discovered their reference sheet for utility types and I can’t be...

JS Template Test Page

This page is: JS Template Test Page This is a simple test of a JavaScript template in Eleventy. Hello...

µblog

I just realized that trying to make something pretty when you’re making a first draft is like trying to edit your writin...

TypeScript readonly wrapper

Summary # I stumbled upon a great type to enforce object immutability at compile time if that’s all you’re worried about...

µblog

It seems that now, it's nearly impossible to know about niche things. Not because it's too hard, but because it's too ea...

Study: Photographing Drinks, Q2

Photo Notebook

Code layout test page

I’m inline ya dig. def main(): # Setup device device = torch.device( f"cuda:{args.device}" if torch....

Image Placeholder Test Page

Inline # cityMap # Static Animated "plain big" cityPic # ...

Image Placeholder Development Page

Is it possible to have images save space and render placeholders before they’ve loaded? Site-wide # I went down the elev...

Vs Phone

Photo Notebook

Software

Apple Photos # Apple Photos is simultaneously a blessing and a bane. The interface for viewing and editing photos is ext...

Photo Notebook

Shutter Speed

Photo Notebook

Shooting Street

There’s probably a better term for it, but by shooting street I mean getting primed to take photos more quickly while wa...

Photo Notebook

Mode

I quickly stumbled on what I believe to be the best shooting mode: aperture priority.01 This means that you pick apertur...

Photo Notebook

Focus

Photo Notebook

Exposure

Photo Notebook

Crop

Photo Notebook

Aperture

Photo Notebook

About

Photo Notebook

µblog

Fake diary entries in a language textbook are surreal when you think about it a bit. You have an adult human going about...

µblog

Whoops it’s been a minute, huh? Here’s some low quality content to keep this alive. Huh, low quality content to keep som...

µblog

All I want for Christmas is for Nunjucks to support trailing commas instead of crashing.

µblog

After one month of exposure and careful consideration I would like to confirm that, yes, indeed, stinky tofu smells bad....

Image transition test page

µblog

Encountered a cool instant ramen format twice now on accident. It comes with two bowls. Thought it was a packing mistake...

Templating Languages Considered Harmful

Ideas This is a post in its idea generation phase. I'm collecting notes for what to write about. ...

Sidenote test page

I’d like to try putting sidenotes in the margins for large enough pages. (This page has previews of the sidenotes if you...

µblog

Playing so much Pokémon Puzzle League that not only do I dream about it, but my normal dreams—i.e., where I am in some b...

µblog

Never seen an area like this before on Google Maps:

About: Restructuring my 3D notes

Studies. I’d like to work on focused studies. If I want to, I can post the result as a sketch, but it’s not required. Fr...

3D Notebook

µblog

Second place we’ve visited now because of a really high Google maps rating that turns out to offer bribes for Google map...

µblog

Karaoke. Every day. Starting midday. I want to appreciate the cultural context that allows total abandon, atonal bellows...

Image lazy load test page

Attribute Investigation # NB: The following numbers change as I add more text here because the images are getting pushed...

µblog

Interesting design: this overhead light changes the number of bulbs that are on every time you turn it off and on again....

Speeding up my website

Summary: 100MB → 5MB initial load, drastically improved interactive times (roughly ~10s → ~1s). Longer summary: repentin...

µblog

Haven’t scrolled twitter in a long time. Wondered whether opening it up would release… wait, is there a name for the ver...

µblog

Starting a microblog. Will I finally be able to contain my verbosity? Time will tell.

On WaniKani

Ideas This is a post in its idea generation phase. I'm collecting notes for what to write about. ...

Reflections on Maintenance

Draft This is a rough draft of a post. I'm still writing and revising it. It probably reads terri...

Lastpass Lockout

Draft This is a rough draft of a post. I'm still writing and revising it. It probably reads terri...

2022

London

I like visiting cities, especially big ones, after waiting a long time. I seem to end up with completely non-overlapping...

travel

Scotland Roadtrip

Part V: Glasgow Terminus

I had high hopes for Glasgow. Modern city, seemed to have good public transport and millennial hipster comforts: craft b...

travel

Scotland Roadtrip

Part IV: Oban, Fingal’s Cave, and Car Troubles

Hiking here is appropriately called "hill walking."

travel

Scotland Roadtrip

Part III: Isle of Skye

Isle of Skye is one of those places that is dramatic when you're there but totally doesn't photograph well. I have never...

travel

Scotland Roadtrip

Part II: Inverness, Loch Ness, and Booking-less

With Loch Ness so famous because of its Monster, it had not occurred to me that it might actually turn out to be a compl...

travel

Scotland Roadtrip

Part I: Aberdeen, British Royalty, and Expensive Castles

We took a two week roadtrip through Scotland. We got soaked and the food sucked, but the nature was awesome. 10/10.

travel

In Praise And Critique of Digital Gardens

A digital garden may be the solution to creative friction. But is it worth the cost?

blog

My Media Snapshot

I’m keeping lots of notes while traveling. But I’m trying not to write about travel in the blog (i.e., what you’re read...

blog

Sleeper Train to Sapa

Hello, I write to you from the sleeper train from Hanoi (Hà Nội) to Lao Cai (Lào Cai). The journey from the capital wil...

blog

Blank Screen Manifesto

This is something I hope to rework into a proper post someday. It’s crazy how much visual distraction there is by defaul...

blog

Get the Picture

We’re staying near the Dongdaemun Design Plaza, this enormous swoopy blob of a multi-building complex that looks like s...

blog

Just Moving and Making

This is the first time I’ve used the “post before 6am Monday” to its extreme. (That’s our deadline for weekly posts.) I...

blog

Climate and Schedule

A couple little notes so I don’t owe Max C $5 this week. Gotta feed the blog machine. Climate # I’m spending more time o...

blog

Edinburgh

Ahh, back to the motherland, where I final...

travel

Infrastructure

The Recurrent Agony of Naming Things # I feel guilty naming this post “infrastructure” because it’s such a good word. I...

blog

Writing vs Blogging

Meeting some new folks and talking about our travels, I mentioned I wrote a blog. I only then realized this is lightly ...

blog

Paris

Ultra light entry on Paris. What struck me the most this visit was basically any district we went to, there was a...

travel

Montpellier

We spent three weeks visiting cities we hadn’t seen before in France. (Okay, plus Paris.) Top priorities were to ...

travel

Lyon

Lyon was my favorite French city we visite...

travel

Aix-en-Provence

Just call it “Aix,” pronounced like the letter X. I felt like I didn’t quite connect with Aix. It’s hard to judge...

travel

weatherspread

When you're figuring out where to go, or when to go there, remember that a great shadow force will shape your experience...

project

Slovenia

Mentioning Slovenia, a few friends have said, “oh I’ve heard it’s really beautiful and still undiscovered!” I regret to ...

travel

Croatia

Dubrovnik # We arrived in Dubrovnik and im...

travel

Crete

We visited Crete, the biggest Greek island, for one week. After a brief stopover in Heraklion, we stayed in Chani...

travel

Naxos

Among tourist destination islands (probably all o...

travel

Athens

Gritty and sprawling. Anarchist enthusiast youth districts. Generous seafood, meat, and salads, especially in the outski...

travel

Seattle in May

Back across the pond for about a week. Seattle is so green. It’s sooooooo green. I think what we lack in sun we ...

travel

Madrid

We popped by Madrid for a couple days. We both liked Madrid much more than we expected! I’m not sure why we thoug...

travel

Basque Country

Basque is a culture, language, and cultural region spanning a chunk of northern Spain and southwest France. I hadn’t eve...

travel

Peneda-Gerês National Park

Second big day trip from Porto. Also coupl...

travel

Douro Valley

Back in Porto, this is one of a couple day trips we took. Huge wine region, ~1–2hr drive east out of Porto. Wine ...

travel

Córdoba

Córdoba was a wonderful change of pace fro...

travel

Granada

...

travel

Nerja

Beach vibes. So many Brits here signs outs...

travel

Sketch: Wood Shelf Room

Hello, this is a sketch of mine, please enjoy

sketch

Málaga

I was surprised how many tourists are here...

travel

Seville

A lovely feature of Spanish cities seems t...

travel

Porto

Porto was, like Lisbon, completely flooded...

travel

Lisbon

Without knowing locals or speaking the language, it feels like you can go a mile wide but will remain an inch deep.

travel

Sketch: Red Wine

Hello, this is a sketch of mine, please enjoy

sketch

Washington, D.C.

D.C. felt vibrant and friendly in a your-favorite-block-in-NYC kinda way. Plus this kind of New England brick urb...

travel

Rewrites and replants

What I’ve been up to: I rewrote my website from...

blog

Building an ECS in TypeScript

Deeper Dive: Systems

We’ve already covered the basics of how Systems work. Here I’ll touch on four advanced topics: ordering, disabling, clea...

programming

Building an ECS in TypeScript

Aspects

Disclaimer: I’m not sure whether “Aspects” are really a standard thing for ECS. (Or, if they are, whether my usage is t...

programming

Microblog, Garage ?

Site Design Refresh 2022

Stub This is a placeholder for me to write more. Bug me if you want to read it. Before/after...

Big Header Design

Spent a bit of time working on a different header style to use for articles (on this website). WIP. Notes for myself: l...

When Lists Don't Work

Stub This is a placeholder for me to write more. Bug me if you want to read it. This is one ...

Google's and Facebook's Software

Stub This is a placeholder for me to write more. Bug me if you want to read it. Notes: Goog...

Website Redesigns

Worklist # [x] nav [x] desktop [x] color themes [x] mobile [x] footer [x] desktop [x] color themes [x] mobile [x]...

Producing lots of work

One of the core things I believe about doing good work is that you first need to produce a lot of (probably bad) work in...

New tech time budget

Starting a new project, each new technology you use adds a time cost for figuring out how it works. You really notice th...

On Neon White

I never play FPSes, and I never (anymore) try to 100% games. So why I am I so hooked on Neon White, and achieving all th...

Mo Photos Mo Problems

Some notes—hope to expand further—on the surprising number of additional website issues I faced when trying to include m...

Topic: Level of detail

What’s interesting is that voxel resolution isn’t the same thing as level of detail used. This goes both ways. There ar...

3D Notebook

Image size test page

Due to preliminary pixel density tests in the image layout test page, I've been exporting my images assuming an @3x devi...

Image scroll test page

Attempting resolution of issue seen in recent photo blog posts: scrolling down, or even back up, results in Chrome re-de...

WebP test page

A quick test to see whether folks' browsers are able to display this (somewhat) new image format called "WebP."

Study: Ryu (BoF III): II

3D Notebook

Image layout test page

I want to experiment with wider layouts, so want to have HTML/CSS formulas for breaking out of the normal content flow. ...

Spectators

Public vs Private Spaces # I’m interested in the difference between public and private spaces (/ groups) (/ communities...

Small communities

Visiting climbing gyms that are just getting their legs under them—usually in smaller cities—is bittersweet. It’s lovely...

City maps with prettymaps

This is my devlog for working with the prettymaps library to try to generate maps for cities that I visit. I ran into a ...

Topic: Projections

3D Notebook

Topic: Lighting

3D Notebook

Mandelbrot

Shader stress test

Pixi.js graphics stress test

Three.js: Cube confusion

3D Notebook

Generative voxel world editor

2021

Building an ECS in TypeScript

What is an ECS?

Preface # This series is intended to be a simple walkthrough of building an ECS-based game engine in TypeScript. It’s ba...

programming

Sketch: Chicken

Hello, this is a sketch of mine, please enjoy

sketch

Misclicking Live Search

This post is about problems with search-as-you-type features, like search on an iPhone or Spotlight on macOS. An Exampl...

design

Building an ECS in TypeScript

Dirty Component Optimization

Backstory: Crates # A while into development, my co-developer Cooper made a level with a ton of objects. Specifically, c...

programming

Who Has Been Speaking?

For years, I have wanted a simple pie chart to be visible during meetings that plotted how much time each person has sp...

design

Sketch: A

Hello, this is a sketch of mine, please enjoy

sketch

The Power of Lists

I often find it extremely helpful when people simply enumerate all of the options for something. Here are some examples...

design

Building an ECS in TypeScript

Deeper Dive: Components

As with Entity, our Component implementation is also quite minimal. /** * A Component is a bundle of state. Each instanc...

programming

Building an ECS in TypeScript

Deeper Dive: Entities

Our Entity implementation is about as simple as can be. /** * An entity is just an ID. This is used to look up its assoc...

programming

Building an ECS in TypeScript

Tests

The one time I ever wrote tests in making the game Fallgate was after writing the ECS at the very beginning of the proje...

programming

Building an ECS in TypeScript

A TypesScript ECS in 99 Lines of Code

Without further ado, this post is a minimal but complete TypeScript implementation of an ECS. Overview # Here’s a brief ...

programming

Building an ECS in TypeScript

Why build an ECS? Why TypeScript?

There are several questions we should ask ourselves upfront: Why build an ECS? Why build a game engine at all? Why use ...

programming

Force Click for Layer Selection

Force Click # Apple’s recent trackpads have a feature where you can press harder on them and get a “deeper” click. This ...

design

Cultural Wisdom

Let me take a crack at defining what I mean by cultural wisdom right at the start. Cultural wisdom Wisdom you get for f...

creating & thinking

Fixing Mobile Page Layouts

/* "ScreenShot" */ .sc { border-width: .125rem; border-style: solid; border-color: #565656; } .br5 { border-ra...

design

Hot

It is very hot in Seattle right now. Today was the hottest day in recorded history. Tomorrow is supposed to be hotter. I...

blog

The Distant Rumble of Change

Even just writing a “blog post” and calling it a “blog post” feels like a cop-out. But this is actually exactly what I s...

blog

Sketch: Cube Room

Hello, this is a sketch of mine, please enjoy

sketch

Sketch: New Damien Who Dis

Hello, this is a sketch of mine, please enjoy

sketch

Voxel Web Renderer Ft. Bar Table

Hello, this is a sketch of mine, please enjoy

sketch

Sketch: Bar Table

Hello, this is a sketch of mine, please enjoy

sketch

Sketch: Mimyc

Hello, this is a sketch of mine, please enjoy

sketch

Sketch: City Parts

Hello, this is a sketch of mine, please enjoy

sketch

Sketch: Symmetry Tools Study

Hello, this is a sketch of mine, please enjoy

sketch

Sketch: Material Study

Hello, this is a sketch of mine, please enjoy

sketch

Sketch: Lighting Height Study

Hello, this is a sketch of mine, please enjoy

sketch

Sketch: Taco

Hello, this is a sketch of mine, please enjoy

sketch

Sketch: Wide Blue Truck

Hello, this is a sketch of mine, please enjoy

sketch

Sketch: Tiny Red Truck

Hello, this is a sketch of mine, please enjoy

sketch

Sketch: Coffee Mug Scale Study

Hello, this is a sketch of mine, please enjoy

sketch

Sketch: Coffee Bowl

Hello, this is a sketch of mine, please enjoy

sketch

Sketch: Green Screen

Hello, this is a sketch of mine, please enjoy

sketch

Don't Justify Web Text

In print, or when typeset with a good program, justified text is beautiful. All of the academic writing in my field is s...

design

Sketch: Stars

Hello, this is a sketch of mine, please enjoy

sketch

Fragment Shader on iPhone

A tiny project to put a fragment shader on my iPhone

sketch

Microblog, Garage ?

Study: Ryu (BoF III)

3D Notebook

Magica­Voxel: Terrain

Turns out Perlin noise is great, much nicer than what I can do by hand. Run shader tergen (or tergen2 for selected area ...

3D Notebook

Magica­Voxel: Shaders

For me it’s not immediately obvious how to use them, sometimes even after reading about it. Brush grass - shader mode ...

3D Notebook

Magica­Voxel: Project Objects to Ground

(The actual ground may be a terrain — i.e., not just z=0.) Have different color voxels underneath, then run drop shader ...

3D Notebook

Magica­Voxel: Layer vs Outline

I think Layer doesn’t determine draw order, but Outline does. Manipulating the order with the Outline is awkward. In Wor...

3D Notebook

Study: Ocean Floor

3D Notebook

Ways of looking

A personal example catalog # Unintentional # Caffeine filling the brain — Optimism about current and pot...

Magica­Voxel: Importing

3D Notebook

Topic: Colors

3D Notebook

Study: Chicken

3D Notebook

Bézier basics

Personal infrastructure graveyard

Website graveyard

Video game graveyard

Benefits of creating prototypes that fail

This is a commonly held belief in the tech world, so I’m writing this really for myself. Creating prototypes that fail i...

Spirit of discovery

The spirit of discovery is wanting to figure something out for yourself rather than look up the answer. While it feels s...

Reducing creative friction: starting a new project

I’ve written about creative friction before. But I just realized a new source: how much effort it takes to start a new p...

Does k-means on an image's colors make a good palette?

Critiquing Internet use

It feels silly and trivial to talk about any bad aspects of the Internet. Specifically that it allows us access to huge ...

Simulation: Basic street

Animating SVGs from Sketch with anime.js

Stupid things I do constantly in Python

Output a string with "{value}", run the whole thing again and make it f"{value}". Misspell a com...

Creation and virality

When I’m creating something, a nonzero portion of my thoughts are about whether it will become big and successful. This ...

Thinking in reverse

I read about this idea in the context of Charlie Munger’s process for drawing good maps for pilots: Think about all th...

Omitting negative results precludes thinking in reverse

In science—or at least in machine learning—we have a culture of rewarding positive results and omitting (or misinterpret...

Causes and conditions

This is a mode of thinking that looks at the web/cloud/set of causes and conditions leading up to—and surrounding—an eve...

Working process

Over many years of independent work during the PhD, I’ve pieced together components of a process for getting work done w...

Working blocks

Working blocks are periods of focused work.01 Benefits # Getting started. You can do anything for twenty-five minutes. W...

Summer 2021 website goals

I didn't finish, but they helped a lot.

Deeper ideas in pocket

I wrote about this quote in Hot, but I wanted a way to reference it later. When you’re new at something, you get excite...

Deciding and following

“The mind is a great servant but a terrible master.” – proverb One tendency I struggle with is how to balance two mode...

Notes on fragment shaders and p5.js

createGraphics() makes a new <canvas> # I thought I had a bug with resizeCanvas() because a bunch of extra <can...

Tension between discovery and intentional creation

Especially when inexperienced with a medium, it can be difficult to pick which creative ideas to pursue. If you just let...

Teachers are responsible for multiple perspectives

If you’re not a teacher, and you need to figure out how to do something challenging—like lose weight, reach a high depth...

Tiny naming woes

“There are only two hard things in computer science: cache invalidation and naming things.” – Phil Karlton The word “s...

Home base feeling

The home base feeling is when you are comfortable enough with what’s going on that the idea of embarking on a new quest ...

What is the garage?

The garage01 is a new experiment (starting June 2021) with “working with the garage door up.” It’s inspired by Alex’s ev...

2020

python-utils ↗

My helper functions for python.

software

Appropriate Quality

One skill I have avoided learning for years is doing work at the appropriate level of quality. My default is to try to ...

creating & thinking

Creative Reading

A little bit ago, I spent a weekend by a lake. We rented a cabin. I passed two days cooking and soaking in nature’s abu...

creating & thinking

Smaller Posts

I’m going to try writing some smaller posts. Each time I’ve tried to write something small recently, it’s become quite ...

blog

Use Examples

Examples vastly improve communication. Teaser: Examples take significantly more effort to make, but they are densely im...

creating & thinking

Sparking Joy with Python

Conventions Are Small Magic

Adapted from photo by RISE, CC BY 2.0. I have started following a few simple rules when I write Python that helps me...

programming

Sparking Joy with Python

Why

Adapted from photo by RISE, CC BY 2.0. I’ve been writing Python for about eight years. When you come from Java, Pyth...

programming

Sparking Joy with Python

Decluttering with Tools

Adapted from photo by RISE, CC BY 2.0. Use a code formatter to wash away all of your stupid opinions about how your ...

programming

Sparking Joy with Python

Static Typing Is the Key to Joy

Adapted from photo by RISE, CC BY 2.0. Static typing is the main point of this series of posts. Static type checking...

programming

Deeply Knowing

I think the most important distinction in knowledge is whether you intellectually understand something to be true, or d...

creating & thinking

Sketch: Limes

Hello, this is a sketch of mine, please enjoy

sketch

Sketch: Follow Me

Hello, this is a sketch of mine, please enjoy

sketch

Sketch: Color World

Ping

sketch

T-Shirt: Monologue

Hello, this is a sketch of mine, please enjoy

sketch

Sketch: Primitives

A digital sketch on some visual transformation primitives.

sketch

2019

Calorie Counting × Meal Planning

I made a really simple calorie counting × meal planning web app. It’s open-source, and you can use it here if you’d lik...

health

food ↗

A simple Desktop-only app for calorie counting and meal planning.

software

Sketch: Thinking

A digital sketch about thinking.

sketch

Sketch: Circles

A digital sketch featuring some circles.

sketch

Creative Friction

I made a new website. (You are probably on it right now.) It’s been over five years since I made my last one.01 I made ...

creating & thinking

Fallgate

Fallgate is a game my friend Cooper and I made as a hobby project. It is a pixel-art action-adventure game about questi...

project

2016

Paralysis

During the past seven years I have struggled immensely to produce independent creative work. Today I realized one reaso...

creating & thinking

Writing

Travel

Programming

Design

Creating & Thinking

Health

Projects

Software

food
A simple Desktop-only app for calorie counting and meal planning.

I wrote this to use it myself. You can read much more about it in my post on Calorie Counting × Meal Planning.

python-utils
My helper functions for python.

I add this tiny library as a dependency to all my projects. It contains little functions I kept writing over and over. There’s very little here—probably a positive testament to Python—but I like the idea of having a personal helper library so much I couldn’t resist including it.

git-checker
A tiny tool to find git repositories on your computer and tell you if any are dirty or unpushed.

I wrote this to use it myself. Over time, it’s also expanded to check other directories on your computer for any files that aren’t expected, and offer to delete them. These two functionalities are part of an effort to have things backed up at all times, so a hard drive failing is no big deal.

dotfiles
My helper scripts, configs, and instructions for setting up new environments.

I think dotfiles (named because they often start with a dot, like .bashrc) are a fun window into someone’s work environment. (And probably a time capsule of when they started working with unix-esque systems.) My favorite trick is to name custom scripts starting with a comma.

You might also be interested in checking out my research software.

Sketches

Blog

µblog

See all.

Latest: Sep 17, 2024

Dev startups: “It’s important to listen to your developers, like really listen to them. That’s how we have achieved such amazing usability.”

Google: “It is physically impossible to contact us. Do not try.”

Something is wrong when even Microsoft is easier to get ahold of (an engineer replied to my email within an hour!)

Garage

The garage is an experiment in "working with the garage door up." These evolving notes are written for me but posted publicly here. Read more in What is the garage?

Leeway in Cooking

Stub This is a placeholder for me to write more. Bug me if you want to read it. There’s way ...

Many Little Tricks

Stub This is a placeholder for me to write more. Bug me if you want to read it. I think havi...

Specialized Interfaces

From "[BEST] 日本のお金を作るプロセス。新札1万円、500円玉を作る日本の工場" (https://www.youtube.com/watch?v=m5F8rFcJq3c) TODO: There was also a co...

Enjoying the Frequency Illusion

You notice something a lot once you become aware of it. The frequency illusion (AKA “Baader-Meinhof phenomenon”) is a f...

Inspiration vs participation

On understanding a domain's true complexity. So many good and well-told ideas from Ted Chiang's essay that I keep referr...

2024 Backlog Burndown

I am in denial of my own advice and attempting to write everything in my essay backlog.

Eleventy Circular References

Trying to have one page display previews of others. For example a "monthly digest" post shows previews of posts written ...

Backend vs Frontend

Contrary to popular perception, frontend engineering is enormously more difficult. It's not even close.

Electron Breaks Brain

Trying to get Electron setup has made me realize I don't understand so many aspects of my build and deploy and hosting s...

Tailwind custom selector trick

This is a way to create a tailwind class that applies to a custom select `[&>p]`.

JS Template Test Page

This page is: JS Template Test Page This is a simple test of a JavaScript template in Eleventy. Hello...

TypeScript readonly wrapper

Summary # I stumbled upon a great type to enforce object immutability at compile time if that’s all you’re worried about...

Study: Photographing Drinks, Q2

Photo Notebook

Code layout test page

I’m inline ya dig. def main(): # Setup device device = torch.device( f"cuda:{args.device}" if torch....

Image Placeholder Test Page

Inline # cityMap # Static Animated "plain big" cityPic # ...

Image Placeholder Development Page

Is it possible to have images save space and render placeholders before they’ve loaded? Site-wide # I went down the elev...

Vs Phone

Photo Notebook

About

Photo Notebook

Aperture

Photo Notebook

Crop

Photo Notebook

Exposure

Photo Notebook

Focus

Photo Notebook

Mode

I quickly stumbled on what I believe to be the best shooting mode: aperture priority.01 This means that you pick apertur...

Photo Notebook

Shooting Street

There’s probably a better term for it, but by shooting street I mean getting primed to take photos more quickly while wa...

Photo Notebook

Shutter Speed

Photo Notebook

Software

Apple Photos # Apple Photos is simultaneously a blessing and a bane. The interface for viewing and editing photos is ext...

Photo Notebook

Image transition test page

Sidenote test page

I’d like to try putting sidenotes in the margins for large enough pages. (This page has previews of the sidenotes if you...

Templating Languages Considered Harmful

Ideas This is a post in its idea generation phase. I'm collecting notes for what to write about. ...

About: Restructuring my 3D notes

Studies. I’d like to work on focused studies. If I want to, I can post the result as a sketch, but it’s not required. Fr...

3D Notebook

Image lazy load test page

Attribute Investigation # NB: The following numbers change as I add more text here because the images are getting pushed...

Speeding up my website

Summary: 100MB → 5MB initial load, drastically improved interactive times (roughly ~10s → ~1s). Longer summary: repentin...

Lastpass Lockout

Draft This is a rough draft of a post. I'm still writing and revising it. It probably reads terri...

Reflections on Maintenance

Draft This is a rough draft of a post. I'm still writing and revising it. It probably reads terri...

On WaniKani

Ideas This is a post in its idea generation phase. I'm collecting notes for what to write about. ...

Site Design Refresh 2022

Stub This is a placeholder for me to write more. Bug me if you want to read it. Before/after...

Big Header Design

Spent a bit of time working on a different header style to use for articles (on this website). WIP. Notes for myself: l...

Google's and Facebook's Software

Stub This is a placeholder for me to write more. Bug me if you want to read it. Notes: Goog...

When Lists Don't Work

Stub This is a placeholder for me to write more. Bug me if you want to read it. This is one ...

Website Redesigns

Worklist # [x] nav [x] desktop [x] color themes [x] mobile [x] footer [x] desktop [x] color themes [x] mobile [x]...

New tech time budget

Starting a new project, each new technology you use adds a time cost for figuring out how it works. You really notice th...

Producing lots of work

One of the core things I believe about doing good work is that you first need to produce a lot of (probably bad) work in...

On Neon White

I never play FPSes, and I never (anymore) try to 100% games. So why I am I so hooked on Neon White, and achieving all th...

Mo Photos Mo Problems

Some notes—hope to expand further—on the surprising number of additional website issues I faced when trying to include m...

Topic: Level of detail

What’s interesting is that voxel resolution isn’t the same thing as level of detail used. This goes both ways. There ar...

3D Notebook

Image size test page

Due to preliminary pixel density tests in the image layout test page, I've been exporting my images assuming an @3x devi...

Image scroll test page

Attempting resolution of issue seen in recent photo blog posts: scrolling down, or even back up, results in Chrome re-de...

WebP test page

A quick test to see whether folks' browsers are able to display this (somewhat) new image format called "WebP."

Study: Ryu (BoF III): II

3D Notebook

Image layout test page

I want to experiment with wider layouts, so want to have HTML/CSS formulas for breaking out of the normal content flow. ...

Small communities

Visiting climbing gyms that are just getting their legs under them—usually in smaller cities—is bittersweet. It’s lovely...

Spectators

Public vs Private Spaces # I’m interested in the difference between public and private spaces (/ groups) (/ communities...

City maps with prettymaps

This is my devlog for working with the prettymaps library to try to generate maps for cities that I visit. I ran into a ...

Topic: Lighting

3D Notebook

Topic: Projections

3D Notebook

Mandelbrot

Shader stress test

Pixi.js graphics stress test

Three.js: Cube confusion

3D Notebook

Generative voxel world editor

Study: Ryu (BoF III)

3D Notebook

Magica­Voxel: Layer vs Outline

I think Layer doesn’t determine draw order, but Outline does. Manipulating the order with the Outline is awkward. In Wor...

3D Notebook

Magica­Voxel: Project Objects to Ground

(The actual ground may be a terrain — i.e., not just z=0.) Have different color voxels underneath, then run drop shader ...

3D Notebook

Magica­Voxel: Shaders

For me it’s not immediately obvious how to use them, sometimes even after reading about it. Brush grass - shader mode ...

3D Notebook

Magica­Voxel: Terrain

Turns out Perlin noise is great, much nicer than what I can do by hand. Run shader tergen (or tergen2 for selected area ...

3D Notebook

Study: Ocean Floor

3D Notebook

Ways of looking

A personal example catalog # Unintentional # Caffeine filling the brain — Optimism about current and pot...

Topic: Colors

3D Notebook

Magica­Voxel: Importing

3D Notebook

Study: Chicken

3D Notebook

Bézier basics

Personal infrastructure graveyard

Benefits of creating prototypes that fail

This is a commonly held belief in the tech world, so I’m writing this really for myself. Creating prototypes that fail i...

Video game graveyard

Website graveyard

Critiquing Internet use

It feels silly and trivial to talk about any bad aspects of the Internet. Specifically that it allows us access to huge ...

Does k-means on an image's colors make a good palette?

Reducing creative friction: starting a new project

I’ve written about creative friction before. But I just realized a new source: how much effort it takes to start a new p...

Spirit of discovery

The spirit of discovery is wanting to figure something out for yourself rather than look up the answer. While it feels s...

Simulation: Basic street

Animating SVGs from Sketch with anime.js

Stupid things I do constantly in Python

Output a string with "{value}", run the whole thing again and make it f"{value}". Misspell a com...

Creation and virality

When I’m creating something, a nonzero portion of my thoughts are about whether it will become big and successful. This ...

Causes and conditions

This is a mode of thinking that looks at the web/cloud/set of causes and conditions leading up to—and surrounding—an eve...

Omitting negative results precludes thinking in reverse

In science—or at least in machine learning—we have a culture of rewarding positive results and omitting (or misinterpret...

Thinking in reverse

I read about this idea in the context of Charlie Munger’s process for drawing good maps for pilots: Think about all th...

Summer 2021 website goals

I didn't finish, but they helped a lot.

Working blocks

Working blocks are periods of focused work.01 Benefits # Getting started. You can do anything for twenty-five minutes. W...

Working process

Over many years of independent work during the PhD, I’ve pieced together components of a process for getting work done w...

Deciding and following

“The mind is a great servant but a terrible master.” – proverb One tendency I struggle with is how to balance two mode...

Deeper ideas in pocket

I wrote about this quote in Hot, but I wanted a way to reference it later. When you’re new at something, you get excite...

Notes on fragment shaders and p5.js

createGraphics() makes a new <canvas> # I thought I had a bug with resizeCanvas() because a bunch of extra <can...

Teachers are responsible for multiple perspectives

If you’re not a teacher, and you need to figure out how to do something challenging—like lose weight, reach a high depth...

Tension between discovery and intentional creation

Especially when inexperienced with a medium, it can be difficult to pick which creative ideas to pursue. If you just let...

Home base feeling

The home base feeling is when you are comfortable enough with what’s going on that the idea of embarking on a new quest ...

Tiny naming woes

“There are only two hard things in computer science: cache invalidation and naming things.” – Phil Karlton The word “s...

What is the garage?

The garage01 is a new experiment (starting June 2021) with “working with the garage door up.” It’s inspired by Alex’s ev...

Leeway in Cooking
There’s way more leeway in many aspects of cooking than novice chefs realize. Better chefs intuitively understand this...

3

min

read

oct

06

2024

Many Little Tricks
I think having a bag of tricks is a rarely discussed (maybe less impressive?) lens to see skilled craftsmanship at...

5

min

read

oct

06

2024

Specialized Interfaces
From "[BEST] 日本のお金を作るプロセス。新札1万円、500円玉を作る日本の工場" (https://www.youtube.com/watch?v=m5F8rFcJq3c) TODO: There was also a cool...

1

min

read

oct

06

2024

Enjoying the Frequency Illusion
You notice something a lot once you become aware of it. The frequency illusion (AKA “Baader-Meinhof phenomenon”) is a...

2

min

read

oct

05

2024

Wow It's October Already

2

min

read

Cindy and Barb (Seattle, USA — September, 2023) Hello hello everyone, I almost sent the monthly digest out last...

oct

04

2024

Inspiration vs participation
On understanding a domain's true complexity. So many good and well-told ideas from Ted Chiang's essay that I keep referring to it.

2

min

read

sep

26

2024

2024 Backlog Burndown
I am in denial of my own advice and attempting to write everything in my essay backlog.

1

min

read

sep

22

2024

Delete Your Backlog

1

min

read

Delete your backlog. Unread books, unplayed games, unwritten essays, unwatched movies. They are all cognitive weight. You will experience an incredible lightness with them gone.

sep

22

2024

Dev startups: “It’s important to listen to your developers, like really listen to them. That’s how we have achieved such amazing usability.”
Google: “It is physically impossible to contact us. Do not try.”
Something is wrong when even Microsoft is easier to get ahold of (an engineer replied to my email within an hour!)

sep

17

2024

Eleventy Circular References
Trying to have one page display previews of others. For example a "monthly digest" post shows previews of posts written in that month.

4

min

read

sep

12

2024

Just had the most fascinating Internet dopamine* experience.
This afternoon, I realized today was a bad one re: consuming hyper-addictive media content—a Hacker News rabbit hole and then YouTube. Became aware of this while walking through the park and was like, glued to some video I didn’t even care about on YouTube. This is unusual for me. The day’s park walk is nearly always relaxing and naturally media-free.
So I became aware of it, and after I got home, I knew I probably had to apply the two-step strategy which, ironically, I saw once on YouTube:

put the phone down
after inner screaming dies down, resume work

(The important part is the introduction of Step 1, because if you try to go directly to Step 2 (which is natural), you probably won’t be able to stop media consumption because the dopamine stream, while pathetic and shitty, is still better (more immediate) than whatever your work is.)
So I put the phone down, and here’s the fascinating part: my brain began absolutely howling.
It was so desperate for that stupid trickle of satisfaction. I immediately wanted more food, or coffee, or sweets. I almost picked my phone up several times. I did pick my phone up several times but managed to put it down. I put the phone in another room. All I could do was pace madly.
Eventually, I decided I could probably go sit down and close my eyes for a bit to let it subside. That worked.
But WOW. What was so surprising is that the need was so physically and emotionally weak—no dramatic sensation—but that it was still somehow experienced so strongly. So unbelievably potent. Utterly controlling. It was a true mind tantrum, this micro addiction withdrawal.
* I wrote “dopamine” but substitute whatever brain reward chemical is correct throughout.

sep

05

2024

Talk to Me Human Devlog: Automating Screenshots

12

min

read

I wrote a small script to automate taking screenshots of webpages. The script summoned enough little edge cases that I thought it'd be a fun topic for a devlog.

aug

23

2024

Backend vs Frontend
Contrary to popular perception, frontend engineering is enormously more difficult. It's not even close.

2

min

read

aug

07

2024

Electron Breaks Brain
Trying to get Electron setup has made me realize I don't understand so many aspects of my build and deploy and hosting setup.

20

min

read

aug

07

2024

Tailwind custom selector trick
This is a way to create a tailwind class that applies to a custom select `[&>p]`.

1

min

read

jul

25

2024

Cooking Up the Metagame

2

min

read

July 2024 Monthly Digest - The PhD Metagame, and press for Talk to Me Human.

jul

01

2024

A Big Move and a Small Game

2

min

read

June 2024 Monthly Digest - What I've been up to: moving to NYC, and releasing Talk to Me Human.

jun

07

2024

All I want for Christmas is to design for fixed pixel dimensions.
(Rather than, say, 93 vastly different screen sizes.)
Boy howdy I get the appeal print design too now.
If I’m feeling greedy, I’ll ask for browsers to stop having myriad subtle incompatibilities too. (What is this, 2009?)

jan

05

2024

Went through a sculpture garden. Sweet idea: sculpture gardens should make 3D-printed mini models of sculptures for visually impaired folks. Kids would love them too. Heck, adults probably would as well.

dec

29

2023

After writing TypeScript for (how many years?!) I just discovered their reference sheet for utility types and I can’t believe what I’ve been missing. Even just the simple Record<K,T> I could have used so many times.
This is one side benefit of having GPT-4 try to write code for you: it will use common stuff you didn’t realize was common and you’ll learn about it.

nov

17

2023

JS Template Test Page
This page is: JS Template Test Page This is a simple test of a JavaScript template in Eleventy. Hello from within a...

1

min

read

nov

12

2023

I just realized that trying to make something pretty when you’re making a first draft is like trying to edit your writing while you write.
(It’s harder, don’t do it.)

oct

10

2023

TypeScript readonly wrapper
Summary I stumbled upon a great type to enforce object immutability at compile time if that’s all you’re worried about:...

5

min

read

sep

19

2023

It seems that now, it’s nearly impossible to know about niche things. Not because it’s too hard, but because it’s too easy. In other words, knowledge that used to be niche is now easily accessible.
The reason is that any niche thing you know about is now covered on YouTube. So whether you know a niche thing is just whether you’ve watched a particular YouTube video.
My example: I remember learning that the original Roller Coaster Tycoon was programmed in assembly by a single guy. I have held onto this as a bizarre and fascinating nugget. I was recently suggested a YouTube video explaining this fact.
I am sure people felt this phenomenon about the Internet itself.* But something about the explosion of knowledge on YouTube has made rare knowledge feel less valuable. Maybe it’s because YouTube video makers are incentivized to make videos as engaging as possible. So acquiring niche knowledge used to be a function of whether you were sufficiently interested in something such that you would pass the activation energy required to look it up. People who weren’t interested in it would never know about it because they would be too bored to tolerate the process of finding the information. But since YouTube videos are entertaining, this barrier no longer exists.
* Thinking more about this re: the Internet in general, it is certainly true. Going to a library and finding a book was a lot more effort than Googling something. I guess people probably felt the same about libraries. And writing.

aug

29

2023

Photo Notebook: Study: Photographing Drinks, Q2

17

min

read

Summary of Findings I conducted this set of experiments to try out the feasibility of photographing drinks01 with my...

aug

05

2023

Code layout test page
I’m inline ya dig. def main(): Setup device device = torch.device( f"cuda:{args.device}" if torch.cuda.is_available()...

1

min

read

jul

23

2023

Image Placeholder Test Page
Inline cityMap Static Animated "plain big" cityPic v1 (img) Full-width (Just switching to v2 but using old (“v1”)...

1

min

read

jul

16

2023

Image Placeholder Development Page
Is it possible to have images save space and render placeholders before they’ve loaded? Site-wide I went down the...

15

min

read

jul

08

2023

Photo Notebook: Vs Phone

1

min

read

I thought it’d be interesting to take the same photo on the camera and the phone and compare them. In particular, I’m...

jun

11

2023

Photo Notebook: About

2

min

read

Resting Taxi at Tazawako Station [f1.7] After taking thousands of iPhone photos while traveling over the course of a...

jun

10

2023

Photo Notebook: Aperture

5

min

read

My range: f1.7 – f16 Case Study: Pourover Starting on full auto to just begin using the camera, wide apertures were...

jun

10

2023

Photo Notebook: Crop

3

min

read

Cropping to digital zoom presets, keeping the aspect ratio. “Focal length” Pixels (ref) Scale (1-dim) 28mm 8368 x 5584...

jun

10

2023

Photo Notebook: Exposure

3

min

read

Setting EV Picking exposure every single photo so that whites aren’t clipping is tedious. It seems so obvious why...

jun

10

2023

Photo Notebook: Focus

3

min

read

The yin to aperture’s yang, focusing is the only other stylistic thing I must do consciously now that not everything is...

jun

10

2023

Photo Notebook: Mode
I quickly stumbled on what I believe to be the best shooting mode: aperture priority.01 This means that you pick...

2

min

read

jun

10

2023

Photo Notebook: Shooting Street
There’s probably a better term for it, but by shooting street I mean getting primed to take photos more quickly while...

2

min

read

jun

10

2023

Photo Notebook: Shutter Speed

2

min

read

I started with no minimum,01 which led to stuff like a needless 1/50s when at ISO 100, which meant motion blur....

jun

10

2023

Photo Notebook: Software
Apple Photos Apple Photos is simultaneously a blessing and a bane. The interface for viewing and editing photos is...

4

min

read

jun

10

2023

Taiwan: Hualien

6

min

read

The general feel of both thriving and falling apart at the same time.

jun

04

2023

Taiwan: Chishang

4

min

read

Hope you like rice paddies.

jun

02

2023

Taiwan: Kaohsiung

4

min

read

Where'd all the art go?

jun

01

2023

Taiwan: Tainan

4

min

read

Unexpectedly vibrant pocket.

may

31

2023

Taiwan: Alishan

10

min

read

We couldn't swim in Sun Moon lake, and we didn't hike Yushan, but by god I observed the hell out of this forest.

may

30

2023

Fake diary entries in a language textbook are surreal when you think about it a bit. You have an adult human going about their day and then writing about it using pre-preschool-level grammar.

may

17

2023

Taiwan: Taichung

4

min

read

Long walks through warm pastel evenings---glimpses into Taiwan's second biggest city.

may

14

2023

Taiwan: Taipei

15

min

read

Still suffering from bubble tea withdrawal.

may

08

2023

Wintermission

4

min

read

On good cameras, Seattle, and San Diego.

apr

30

2023

Bali

2

min

read

Every ounce of local kindness is a heroic feat in the face of Disneylandification.

apr

29

2023

Penang

2

min

read

Street eats and a melting pot of traffic.

apr

25

2023

Whoops it’s been a minute, huh? Here’s some low quality content to keep this alive.
Huh, low quality content to keep something alive. That this does something psychologically is interesting.

apr

24

2023

Singapore

12

min

read

Once you hear "Disneyland with the Death Penalty," you can't un-think it.

apr

24

2023

The Philippines: El Nido

6

min

read

Islas de Instagram.

apr

11

2023

The Philippines: Bohol

4

min

read

Tiny primates, grassy lumps, gatorade shores.

apr

10

2023

The Philippines: Manila

12

min

read

We exit the airport and are immediately confronted by a man holding a shotgun.

apr

08

2023

Vietnam: Ho Chi Minh City

5

min

read

I feel a bit guilty now about avoiding the day trip OMTAs here. But hey, sometimes you gotta just do you. Eat bun cha, wander the streets, and absorb the big city.

apr

05

2023

Vietnam: Dalat

10

min

read

At least if we were doing stupid shit, we were doing stupid shit locals do.

apr

03

2023

Vietnam: Sapa

12

min

read

And The Tiny Agony of Inauthentic Experiences

apr

02

2023

Vietnam: Hanoi

14

min

read

Wonderful food, terrifying roads, and dead fish.

mar

30

2023

All I want for Christmas is for Nunjucks to support trailing commas instead of crashing.

mar

29

2023

Korea: Jeju

9

min

read

Seoul / Jeju is the busiest passenger air route in the world. So... where is everybody?

mar

29

2023

Korea: Busan

6

min

read

Busan feels full of potential, but it also carries the slowness of a town that's always playing second fiddle.

mar

26

2023

Korea: Seoul

22

min

read

Our favorite place of 2022, of the eighteen countries we visited, was Seoul.

mar

22

2023

After one month of exposure and careful consideration I would like to confirm that, yes, indeed, stinky tofu smells bad.

mar

19

2023

Software: dotfiles ↗
My helper scripts, configs, and instructions for setting up new environments.I think dotfiles (named because they often start with a dot, like .bashrc) are a fun window into someone’s work...

1

min

read

mar

18

2023

Image transition test page

2

min

read

I omitted the last image from this one to make sure I didn't screw up the closure in the script. (This gives it a...

mar

15

2023

Encountered a cool instant ramen format twice now on accident. It comes with two bowls. Thought it was a packing mistake, but the instructions say to use one bowl + seasoning to make a soup from the noodle broth, and the second bowl for noodles + paste.
Big soup culture. Most restaurant meals seem to come with a starter soup. Nice.

mar

05

2023

Sidenote test page
I’d like to try putting sidenotes in the margins for large enough pages. (This page has previews of the sidenotes if...

2

min

read

mar

05

2023

Templating Languages Considered Harmful
I.e., frontend templating languages like Liquid and Nunjucks. Can’t set attribute on object...

2

min

read

mar

05

2023

Playing so much Pokémon Puzzle League that not only do I dream about it, but my normal dreams—i.e., where I am in some bizarre situation and must accomplish some task—have Pokémon Puzzle League gameplay as the substance. E.g., I have to solve some relationship problem, but the way I do that is trying to get a vertical 4-combo on water blocks. It’s actually too much.

mar

04

2023

Georgia

14

min

read

A subway whose platforms are carved so deep underground that you must ride bulky lumbering escalators for a small eternity to make it to their depths. More things are painted red than normal.

mar

02

2023

Software: git-checker ↗
A tiny tool to find git repositories on your computer and tell you if any are dirty or unpushed.I wrote this to use it myself. Over time, it’s also expanded to check other directories on your computer for any files...

1

min

read

feb

27

2023

Sketch: Ramen ode

0

min

read

Hello, this is a sketch of mine, please enjoy

feb

27

2023

Never seen an area like this before on Google Maps:

feb

26

2023

3D Notebook: About: Restructuring my 3D notes
Studies. I’d like to work on focused studies. If I want to, I can post the result as a sketch, but it’s not required....

2

min

read

feb

26

2023

Sketch: Muji Page Please

0

min

read

Hello, this is a sketch of mine, please enjoy

feb

26

2023

Second place we’ve visited now because of a really high Google maps rating that turns out to offer bribes for Google maps reviews. This one was a bar that gives you a free beer (!) if you left a review. Evil, but brilliant.

feb

25

2023

Karaoke. Every day. Starting midday. I want to appreciate the cultural context that allows total abandon, atonal bellows, long and confused vibrato following along to what I can only imagine are classics. I want to.
But I cannot.
Karaoke. Every day. Starting midday.

feb

24

2023

Image lazy load test page
Attribute Investigation NB: The following numbers change as I add more text here because the images are getting pushed...

3

min

read

feb

24

2023

Interesting design: this overhead light changes the number of bulbs that are on every time you turn it off and on again. It goes between 3, 2, 1, and 0 (probably could have skipped that one), and then cycles back to 3.

feb

23

2023

Speeding up my website
Summary: 100MB → 5MB initial load, drastically improved interactive times (roughly ~10s → ~1s). Longer summary:...

6

min

read

feb

23

2023

Haven’t scrolled twitter in a long time.
Wondered whether opening it up would release… wait, is there a name for the version of impostor syndrome where it’s not that you’re not capable, but it’s that everyone in the world is doing more interesting & successful things than you?
Anyway, it did.

feb

22

2023

Israel

19

min

read

Israel is a million multi-layered and multi-textured sand colored walls; a hundred different outfits and religious denominations and historical interpretations; a dozen eras and languages and scripts. All crammed together with zero breathing room.

feb

22

2023

Starting a microblog. Will I finally be able to contain my verbosity? Time will tell.

feb

21

2023

Lastpass Lockout
LastPass MFA: Too Risky If your phone is stolen, how would you log into LastPass with multi-factor auth (MFA)? Circular...

3

min

read

feb

06

2023

Reflections on Maintenance
Maintenance is beautiful. I’d never really considered how widespread it is, and how much it’s a sign of life, until...

7

min

read

feb

06

2023

On WaniKani
Good Visual design: colors, URLs API design: that extensibility is possible Quirkiness Teaching you just a couple...

6

min

read

feb

06

2023

Bosnia and Herzegovina

18

min

read

Everything about Bosnia has fractal-like complexity. For example, there are five presidents. Why? We must go deeper.

jan

30

2023

Serbia

11

min

read

“It’s all quite run down, isn’t it?” We were all thinking it, but I wished he wouldn’t say it so loudly.

jan

13

2023

London

8

min

read

I like visiting cities, especially big ones, after waiting a long time. I seem to end up with completely non-overlapping experiences. Another illuminated sliver of the whole.

dec

28

2022

Site Design Refresh 2022
Before/after screenshots in assets/garage/site-design-refresh-2022/.

1

min

read

dec

25

2022

Scotland Roadtrip: Part V: Glasgow Terminus

5

min

read

I had high hopes for Glasgow. Modern city, seemed to have good public transport and millennial hipster comforts: craft beer, snobby coffee, and rock climbing.

dec

15

2022

Scotland Roadtrip: Part IV: Oban, Fingal’s Cave, and Car Troubles

5

min

read

Hiking here is appropriately called "hill walking."

dec

09

2022

Scotland Roadtrip: Part III: Isle of Skye

5

min

read

Isle of Skye is one of those places that is dramatic when you're there but totally doesn't photograph well. I have never been anywhere like it.

dec

06

2022

Scotland Roadtrip: Part II: Inverness, Loch Ness, and Booking-less

6

min

read

With Loch Ness so famous because of its Monster, it had not occurred to me that it might actually turn out to be a completely boring normal lake until we were standing in front of it.

dec

03

2022

Scotland Roadtrip: Part I: Aberdeen, British Royalty, and Expensive Castles

11

min

read

We took a two week roadtrip through Scotland. We got soaked and the food sucked, but the nature was awesome. 10/10.

dec

01

2022

Big Header Design
Spent a bit of time working on a different header style to use for articles (on this website). WIP. Notes for myself:...

1

min

read

nov

29

2022

In Praise And Critique of Digital Gardens

8

min

read

A digital garden may be the solution to creative friction. But is it worth the cost?

nov

27

2022

Google's and Facebook's Software
Notes: Google: high latency, high bandwidth TF vs Pytorch Tensorboard vs Whatever FB’s was Angular vs React

1

min

read

nov

27

2022

When Lists Don't Work
This is one note I’d like to just turn into a normal post. Webrings https://macmenubar.com/ Why? Something about lack of...

1

min

read

nov

27

2022

Website Redesigns
Worklist [x] nav [x] desktop [x] color themes [x] mobile [x] footer [x] desktop [x] color themes [x] mobile [x] new h...

2

min

read

nov

26

2022

My Media Snapshot

3

min

read

I’m keeping lots of notes while traveling. But I’m trying not to write about travel in the blog (i.e., what you’re...

nov

13

2022

Sleeper Train to Sapa

2

min

read

Hello, I write to you from the sleeper train from Hanoi (Hà Nội) to Lao Cai (Lào Cai). The journey from the capital will...

nov

04

2022

Blank Screen Manifesto

3

min

read

This is something I hope to rework into a proper post someday. It’s crazy how much visual distraction there is by...

oct

30

2022

New tech time budget
Starting a new project, each new technology you use adds a time cost for figuring out how it works. You really notice...

2

min

read

oct

15

2022

Producing lots of work
One of the core things I believe about doing good work is that you first need to produce a lot of (probably bad) work in...

2

min

read

oct

15

2022

Get the Picture

4

min

read

We’re staying near the Dongdaemun Design Plaza, this enormous swoopy blob of a multi-building complex that looks like...

oct

10

2022

Just Moving and Making

3

min

read

This is the first time I’ve used the “post before 6am Monday” to its extreme. (That’s our deadline for weekly posts.)...

oct

03

2022

Climate and Schedule
A couple little notes so I don’t owe Max C $5 this week. Gotta feed the blog machine. Climate I’m spending more time on...

4

min

read

sep

18

2022

Edinburgh

10

min

read

Ahh, back to the motherland, where I finally get the respect and admiration I deserve as bishop. It was a strange...

sep

05

2022

Infrastructure

5

min

read

The Recurrent Agony of Naming Things I feel guilty naming this post “infrastructure” because it’s such a good word. I...

aug

28

2022

Writing vs Blogging

4

min

read

Meeting some new folks and talking about our travels, I mentioned I wrote a blog. I only then realized this is lightly...

aug

21

2022

On Neon White
I never play FPSes, and I never (anymore) try to 100% games. So why I am I so hooked on Neon White, and achieving all...

7

min

read

aug

17

2022

Mo Photos Mo Problems
Some notes—hope to expand further—on the surprising number of additional website issues I faced when trying to include...

1

min

read

aug

14

2022

3D Notebook: Topic: Level of detail
What’s interesting is that voxel resolution isn’t the same thing as level of detail used. This goes both ways. There are...

1

min

read

aug

10

2022

Aix-en-Provence

5

min

read

Just call it “Aix,” pronounced like the letter X. I felt like I didn’t quite connect with Aix. It’s hard to judge cities...

aug

07

2022

Lyon

3

min

read

Lyon was my favorite French city we visited. I would love to go back. The city is beautiful—w/ the river Rhône running...

aug

07

2022

Montpellier

3

min

read

We spent three weeks visiting cities we hadn’t seen before in France. (Okay, plus Paris.) Top priorities were to eat...

aug

07

2022

Paris

1

min

read

Ultra light entry on Paris. What struck me the most this visit was basically any district we went to, there was a ton of...

aug

07

2022

Image size test page
Due to preliminary pixel density tests in the image layout test page, I've been exporting my images assuming an @3x device pixel ratio and a moderately large screen (939 CSSpx height).

4

min

read

jul

29

2022

Image scroll test page
Attempting resolution of issue seen in recent photo blog posts: scrolling down, or even back up, results in Chrome...

1

min

read

jul

28

2022

WebP test page
A quick test to see whether folks' browsers are able to display this (somewhat) new image format called "WebP."

0

min

read

jul

24

2022

3D Notebook: Study: Ryu (BoF III): II

1

min

read

I tried another version with a much lower voxel resolution. Critique Good Size +level of detail much better than last...

jul

19

2022

Image layout test page
I want to experiment with wider layouts, so want to have HTML/CSS formulas for breaking out of the normal content flow....

23

min

read

jul

10

2022

Small communities
Visiting climbing gyms that are just getting their legs under them—usually in smaller cities—is bittersweet. It’s lovely...

1

min

read

jul

07

2022

Spectators
Public vs Private Spaces I’m interested in the difference between public and private spaces (/ groups) (/ communities)....

3

min

read

jul

07

2022

weatherspread

2

min

read

When you're figuring out where to go, or when to go there, remember that a great shadow force will shape your experience. The weather.

jul

03

2022

Slovenia

6

min

read

Mentioning Slovenia, a few friends have said, “oh I’ve heard it’s really beautiful and still undiscovered!” I regret to...

jun

28

2022

Croatia

4

min

read

Dubrovnik We arrived in Dubrovnik and immediately realized with sinking hearts: the entire walled city is a tourist...

jun

20

2022

Crete

4

min

read

We visited Crete, the biggest Greek island, for one week. After a brief stopover in Heraklion, we stayed in Chania and...

jun

10

2022

Naxos

1

min

read

Among tourist destination islands (probably all of them?), this one seemed laid back. Accordingly we did almost nothing....

jun

03

2022

Athens

2

min

read

Gritty and sprawling. Anarchist enthusiast youth districts. Generous seafood, meat, and salads, especially in the outskirts.

may

31

2022

Seattle in May

3

min

read

Back across the pond for about a week. Seattle is so green. It’s sooooooo green. I think what we lack in sun we make up...

may

26

2022

Madrid

1

min

read

We popped by Madrid for a couple days. We both liked Madrid much more than we expected! I’m not sure why we thought we...

may

18

2022

Basque Country

6

min

read

Basque is a culture, language, and cultural region spanning a chunk of northern Spain and southwest France. I hadn’t...

may

16

2022

Peneda-Gerês National Park

1

min

read

Second big day trip from Porto. Also couple hours way, north / northeast. Pretty park, might be the big nature reserve...

may

07

2022

Douro Valley

1

min

read

Back in Porto, this is one of a couple day trips we took. Huge wine region, ~1–2hr drive east out of Porto. Wine grown...

may

05

2022

Córdoba

1

min

read

Córdoba was a wonderful change of pace from other Andalusian towns. Large streets, parks, water, greenery, great for...

may

04

2022

City maps with prettymaps
This is my devlog for working with the prettymaps library to try to generate maps for cities that I visit. I ran into a...

10

min

read

may

02

2022

Granada

1

min

read

How much of the Alhambra is original vs rebuilt to be like the original? Does it matter? Would it matter if it was...

may

01

2022

3D Notebook: Topic: Lighting

1

min

read

Lighting is everything. MagicaVoxel I changed some other stuff here (some more objects, floor texture, some...

apr

28

2022

3D Notebook: Topic: Projections

1

min

read

Spent a ton of time a while back trying to finally really understand the difference between different projections to...

apr

28

2022

Sketch: Wood Shelf Room

0

min

read

Hello, this is a sketch of mine, please enjoy

apr

27

2022

Nerja

1

min

read

Beach vibes. So many Brits here signs outside bars like “Liverpool match at 15:00.”

apr

27

2022

Málaga

2

min

read

I was surprised how many tourists are here! (Also, please forgive how much I seem to complain about tourists.) I think...

apr

24

2022

Seville

2

min

read

A lovely feature of Spanish cities seems to be big public plazas you can go and hang out in. Art and water features make...

apr

21

2022

Porto

3

min

read

Porto was, like Lisbon, completely flooded with tourists. But its bigger streets and more open public spaces left us...

apr

18

2022

Lisbon

2

min

read

Without knowing locals or speaking the language, it feels like you can go a mile wide but will remain an inch deep.

apr

11

2022

Sketch: Red Wine

0

min

read

Hello, this is a sketch of mine, please enjoy

apr

05

2022

Washington, D.C.

1

min

read

D.C. felt vibrant and friendly in a your-favorite-block-in-NYC kinda way. Plus this kind of New England brick...

apr

03

2022

Mandelbrot

2

min

read

I finally read about the Mandelbrot set and tried implementing it. Above image generated live in your browser at page...

mar

21

2022

Rewrites and replants

1

min

read

What I’ve been up to: I rewrote my website from Jekyll/Liquid into Eleventy/Nunjucks. It was somewhat painful and...

mar

13

2022

Shader stress test

1

min

read

Answering maybe a silly question: how many shaders can we run?

feb

05

2022

Building an ECS in TypeScript: Deeper Dive: Systems

9

min

read

We’ve already covered the basics of how Systems work. Here I’ll touch on four advanced topics: ordering, disabling,...

jan

24

2022

Pixi.js graphics stress test

0

min

read

How many rectangles can pixi.js' Graphics API smoothly draw per frame?

jan

23

2022

3D Notebook: Three.js: Cube confusion

1

min

read

I’m having an issue with slowdown where the same number of cubes renders quickly when arranged in a plane, but slowly...

jan

18

2022

Generative voxel world editor

1

min

read

A voxel experiment.

jan

11

2022

Building an ECS in TypeScript: Aspects

7

min

read

Disclaimer: I’m not sure whether “Aspects” are really a standard thing for ECS. (Or, if they are, whether my usage is...

jan

03

2022

3D Notebook: Study: Ryu (BoF III)

1

min

read

HAHAHA, he came out so terrifying. Look at this thing LOOK AT HIM I think I made him too big for the amount of detail...

dec

31

2021

3D Notebook: MagicaVoxel: Layer vs Outline
I think Layer doesn’t determine draw order, but Outline does. Manipulating the order with the Outline is awkward. In...

1

min

read

dec

30

2021

3D Notebook: MagicaVoxel: Project Objects to Ground
(The actual ground may be a terrain — i.e., not just z=0.) Have different color voxels underneath, then run drop shader...

1

min

read

dec

30

2021

3D Notebook: MagicaVoxel: Shaders
For me it’s not immediately obvious how to use them, sometimes even after reading about it. Brush grass - shader mode...

1

min

read

dec

30

2021

3D Notebook: MagicaVoxel: Terrain
Turns out Perlin noise is great, much nicer than what I can do by hand. Run shader tergen (or tergen2 for selected area...

1

min

read

dec

30

2021

3D Notebook: Study: Ocean Floor

1

min

read

Part 1 I experimented with the grass shader to make some underwater… uh… grass? Kelp? The kelp right on the boundary...

dec

23

2021

Building an ECS in TypeScript: What is an ECS?

2

min

read

Preface This series is intended to be a simple walkthrough of building an ECS-based game engine in TypeScript. It’s...

nov

25

2021

Ways of looking
A personal example catalog Unintentional Caffeine filling the brain — Optimism about current and potential endeavors...

1

min

read

nov

16

2021

3D Notebook: Topic: Colors

1

min

read

Postprocessing Colors Funny enough, I have the same problem with my renders as I do my photos: the colors aren’t that...

nov

15

2021

3D Notebook: MagicaVoxel: Importing

1

min

read

How to import You can just drag’n’drop a .obj file into MagicaVoxel to import it. Need to paint, though. Importing...

nov

15

2021

3D Notebook: Study: Chicken

1

min

read

Notes The first one is cute. It’s modeled after a simple chicken from a game (Breath of Fire III), and I think it...

oct

19

2021

Sketch: Chicken

0

min

read

Hello, this is a sketch of mine, please enjoy

oct

19

2021

Misclicking Live Search

3

min

read

This post is about problems with search-as-you-type features, like search on an iPhone or Spotlight on macOS. An Example...

oct

18

2021

Building an ECS in TypeScript: Dirty Component Optimization

13

min

read

Backstory: Crates A while into development, my co-developer Cooper made a level with a ton of objects. Specifically,...

oct

17

2021

Who Has Been Speaking?

2

min

read

For years, I have wanted a simple pie chart to be visible during meetings that plotted how much time each person has...

oct

11

2021

Sketch: A

0

min

read

Hello, this is a sketch of mine, please enjoy

oct

09

2021

Figure Creation Tutorial: Making a Figure 1

11

min

read

.bg-rot-blue { background-color: D0DFF4; } Intro One of the things I think our lab01 does well is that we put a lot of...

sep

30

2021

The Power of Lists

1

min

read

I often find it extremely helpful when people simply enumerate all of the options for something. Here are some examples....

sep

13

2021

Building an ECS in TypeScript: Deeper Dive: Components

11

min

read

As with Entity, our Component implementation is also quite minimal. /** * A Component is a bundle of state. Each...

sep

12

2021

Building an ECS in TypeScript: Deeper Dive: Entities

2

min

read

Our Entity implementation is about as simple as can be. /** * An entity is just an ID. This is used to look up its...

sep

07

2021

Building an ECS in TypeScript: Tests

4

min

read

The one time I ever wrote tests in making the game Fallgate was after writing the ECS at the very beginning of the...

sep

05

2021

Building an ECS in TypeScript: A TypesScript ECS in 99 Lines of Code

7

min

read

Without further ado, this post is a minimal but complete TypeScript implementation of an ECS. Overview Here’s a brief...

sep

04

2021

Building an ECS in TypeScript: Why build an ECS? Why TypeScript?

8

min

read

There are several questions we should ask ourselves upfront: Why build an ECS? Why build a game engine at all? Why use...

sep

01

2021

Bézier basics

1

min

read

Illustration of cubic Bézier curve constructed using De Casteljau’s algorithm, inspired by this wonderful Bézier video...

aug

29

2021

Personal infrastructure graveyard

2

min

read

I think it’s important to create experiments and prototypes, and also to let them go. To celebrate these, I’ve created a...

aug

24

2021

Benefits of creating prototypes that fail
This is a commonly held belief in the tech world, so I’m writing this really for myself. Creating prototypes that fail...

1

min

read

aug

23

2021

Video game graveyard

1

min

read

I think it’s important to create experiments and prototypes that don’t end up working out. To celebrate these, I’ve...

aug

23

2021

Website graveyard

3

min

read

I think it’s important to create experiments and prototypes, and also to let them go. To celebrate these, I’ve created a...

aug

23

2021

Critiquing Internet use
It feels silly and trivial to talk about any bad aspects of the Internet. Specifically that it allows us access to huge...

1

min

read

aug

22

2021

Does k-means on an image's colors make a good palette?

3

min

read

I was trying to come up with a color palette for an illustration, and I came across this image: source For whatever...

aug

22

2021

Reducing creative friction: starting a new project
I’ve written about creative friction before. But I just realized a new source: how much effort it takes to start a new...

1

min

read

aug

22

2021

Spirit of discovery
The spirit of discovery is wanting to figure something out for yourself rather than look up the answer. While it feels...

1

min

read

aug

22

2021

Simulation: Basic street

1

min

read

// No easy CSS I can find to set height based on width, so using JS. function setHeightToWidth() { const c =...

aug

15

2021

Force Click for Layer Selection

3

min

read

Force Click Apple’s recent trackpads have a feature where you can press harder on them and get a “deeper” click. This...

aug

04

2021

Animating SVGs from Sketch with anime.js

7

min

read

Animating SVGs is great, it makes posts more lively. Animating SVGs, at least in the pipeline I’m using (Sketch and...

jul

31

2021

Stupid things I do constantly in Python
Output a string with "{value}", run the whole thing again and make it f"{value}". Misspell a command...

1

min

read

jul

30

2021

Creation and virality
When I’m creating something, a nonzero portion of my thoughts are about whether it will become big and successful. This...

1

min

read

jul

28

2021

Cultural Wisdom
Let me take a crack at defining what I mean by cultural wisdom right at the start. Cultural wisdom Wisdom you get for...

3

min

read

jul

27

2021

Fixing Mobile Page Layouts

8

min

read

/* "ScreenShot" */ .sc { border-width: .125rem; border-style: solid; border-color: 565656; } .br5 { border-radius: 2rem;...

jul

22

2021

Causes and conditions
This is a mode of thinking that looks at the web/cloud/set of causes and conditions leading up to—and surrounding—an...

1

min

read

jul

20

2021

Omitting negative results precludes thinking in reverse
In science—or at least in machine learning—we have a culture of rewarding positive results and omitting (or...

1

min

read

jul

20

2021

Thinking in reverse
I read about this idea in the context of Charlie Munger’s process for drawing good maps for pilots: Think about all the...

1

min

read

jul

20

2021

Summer 2021 website goals
I didn't finish, but they helped a lot.

2

min

read

jul

15

2021

Working blocks
Working blocks are periods of focused work.01 Benefits Getting started. You can do anything for twenty-five minutes....

1

min

read

jul

15

2021

Working process
Over many years of independent work during the PhD, I’ve pieced together components of a process for getting work done...

1

min

read

jul

15

2021

Deciding and following
“The mind is a great servant but a terrible master.” – proverb One tendency I struggle with is how to balance two modes:...

1

min

read

jul

11

2021

Deeper ideas in pocket
I wrote about this quote in Hot, but I wanted a way to reference it later. When you’re new at something, you get excited...

1

min

read

jul

11

2021

Hot
It is very hot in Seattle right now. Today was the hottest day in recorded history. Tomorrow is supposed to be hotter. I...

2

min

read

jun

27

2021

Notes on fragment shaders and p5.js
createGraphics() makes a new <canvas> I thought I had a bug with resizeCanvas() because a bunch of extra...

2

min

read

jun

27

2021

Teachers are responsible for multiple perspectives
If you’re not a teacher, and you need to figure out how to do something challenging—like lose weight, reach a high depth...

3

min

read

jun

25

2021

Tension between discovery and intentional creation
Especially when inexperienced with a medium, it can be difficult to pick which creative ideas to pursue. If you just let...

1

min

read

jun

25

2021

Home base feeling
The home base feeling is when you are comfortable enough with what’s going on that the idea of embarking on a new quest...

1

min

read

jun

24

2021

Tiny naming woes
“There are only two hard things in computer science: cache invalidation and naming things.” – Phil Karlton The word...

1

min

read

jun

24

2021

What is the garage?
The garage01 is a new experiment (starting June 2021) with “working with the garage door up.” It’s inspired by Alex’s...

3

min

read

jun

22

2021

The Distant Rumble of Change
Even just writing a “blog post” and calling it a “blog post” feels like a cop-out. But this is actually exactly what I...

5

min

read

jun

20

2021

"Every PhD Is Different"

14

min

read

I heard this phrase a handful of times when I started my PhD. Like most platitudes, I immediately dismissed it.

jun

13

2021

Sketch: Cube Room

1

min

read

Hello, this is a sketch of mine, please enjoy

apr

21

2021

Sketch: New Damien Who Dis

0

min

read

Hello, this is a sketch of mine, please enjoy

apr

14

2021

Voxel Web Renderer Ft. Bar Table

1

min

read

Hello, this is a sketch of mine, please enjoy

apr

13

2021

Sketch: Bar Table

0

min

read

Hello, this is a sketch of mine, please enjoy

apr

10

2021

Sketch: Mimyc

1

min

read

Hello, this is a sketch of mine, please enjoy

apr

07

2021

Sketch: City Parts

0

min

read

Hello, this is a sketch of mine, please enjoy

apr

06

2021

Sketch: Lighting Height Study

0

min

read

Hello, this is a sketch of mine, please enjoy

apr

05

2021

Sketch: Material Study

0

min

read

Hello, this is a sketch of mine, please enjoy

apr

05

2021

Sketch: Symmetry Tools Study

0

min

read

Hello, this is a sketch of mine, please enjoy

apr

05

2021

Sketch: Taco

0

min

read

Hello, this is a sketch of mine, please enjoy

apr

04

2021

Sketch: Tiny Red Truck

0

min

read

Hello, this is a sketch of mine, please enjoy

apr

02

2021

Sketch: Wide Blue Truck

0

min

read

Hello, this is a sketch of mine, please enjoy

apr

02

2021

Sketch: Coffee Bowl

0

min

read

Hello, this is a sketch of mine, please enjoy

apr

01

2021

Sketch: Coffee Mug Scale Study

0

min

read

Hello, this is a sketch of mine, please enjoy

apr

01

2021

Sketch: Green Screen

0

min

read

Hello, this is a sketch of mine, please enjoy

mar

30

2021

Don't Justify Web Text

3

min

read

In print, or when typeset with a good program, justified text is beautiful. All of the academic writing in my field is...

mar

29

2021

A Modest Proposal: Let’s Stop Lying To Each Other in Our Research Papers

8

min

read

I was reviewing for ACL01 last week, and it was a particularly depressing time. It was depressing because it made me...

mar

26

2021

Fragment Shader on iPhone

0

min

read

A tiny project to put a fragment shader on my iPhone

feb

17

2021

Sketch: Stars

1

min

read

Hello, this is a sketch of mine, please enjoy

feb

17

2021

Software: python-utils ↗
My helper functions for python.I add this tiny library as a dependency to all my projects. It contains little functions I kept writing over and over....

1

min

read

dec

02

2020

Appropriate Quality

4

min

read

One skill I have avoided learning for years is doing work at the appropriate level of quality. My default is to try to...

sep

02

2020

Creative Reading
A little bit ago, I spent a weekend by a lake. We rented a cabin. I passed two days cooking and soaking in nature’s...

3

min

read

aug

27

2020

Smaller Posts
I’m going to try writing some smaller posts. Each time I’ve tried to write something small recently, it’s become quite...

2

min

read

aug

26

2020

Use Examples

15

min

read

Examples vastly improve communication. Teaser: Examples take significantly more effort to make, but they are densely...

aug

18

2020

Sparking Joy with Python: Conventions Are Small Magic

8

min

read

Adapted from photo by RISE, CC BY 2.0. I have started following a few simple rules when I write Python that helps me...

jul

21

2020

Sparking Joy with Python: Static Typing Is the Key to Joy

7

min

read

Adapted from photo by RISE, CC BY 2.0. Static typing is the main point of this series of posts. Static type checking,...

jul

20

2020

Sparking Joy with Python: Decluttering with Tools

4

min

read

Adapted from photo by RISE, CC BY 2.0. Use a code formatter to wash away all of your stupid opinions about how your code...

jul

20

2020

Sparking Joy with Python: Why

4

min

read

Adapted from photo by RISE, CC BY 2.0. I’ve been writing Python for about eight years. When you come from Java, Python...

jul

20

2020

Deeply Knowing

3

min

read

I think the most important distinction in knowledge is whether you intellectually understand something to be true, or...

apr

08

2020

Sketch: Limes

1

min

read

Hello, this is a sketch of mine, please enjoy

feb

18

2020

Sketch: Follow Me

1

min

read

Hello, this is a sketch of mine, please enjoy

feb

05

2020

Sketch: Color World

1

min

read

Ping

feb

04

2020

T-Shirt: Monologue

1

min

read

Hello, this is a sketch of mine, please enjoy

jan

21

2020

Sketch: Primitives

1

min

read

A digital sketch on some visual transformation primitives.

jan

14

2020

Calorie Counting × Meal Planning

15

min

read

I made a really simple calorie counting × meal planning web app. It’s open-source, and you can use it here if you’d like...

nov

26

2019

Software: food ↗
A simple Desktop-only app for calorie counting and meal planning.I wrote this to use it myself. You can read much more about it in my post on Calorie Counting × Meal Planning.

1

min

read

oct

21

2019

Sketch: Thinking

0

min

read

A digital sketch about thinking.

sep

16

2019

Sketch: Circles

0

min

read

A digital sketch featuring some circles.

jun

29

2019

Creative Friction

9

min

read

I made a new website. (You are probably on it right now.) It’s been over five years since I made my last one.01 I made...

may

27

2019

Fallgate

3

min

read

Fallgate is a game my friend Cooper and I made as a hobby project. It is a pixel-art action-adventure game about...

jan

04

2019

Procedural City Layout Generation with GANs

16

min

read

Preface This was my project for a computer graphics class I took back in 2017. (I’m writing this now in 2021.) I was...

dec

15

2017

Ordinary least squares, ℓ² (ridge), and ℓ¹ (lasso) linear regressions

6

min

read

Delightful derivations all in one place, plus pytorch implementations.

nov

21

2017

Downloading books from Project Gutenberg
Note: I wrote this in 2016, and am posting it now in 2021. Others have found it helpful. In case it’s still a bit...

3

min

read

nov

22

2016

Paralysis

5

min

read

During the past seven years I have struggled immensely to produce independent creative work. Today I realized one reason...

apr

23

2016

Making Plots Pretty

2

min

read

Preface Back in 2014, I gave this talk to my robotics lab on how to make good looking plots / figures. I’m posting it...

apr

24

2014