I'm Ben and this is my website and dumping ground. I'm interested in the climate crisis, open source software, photography, interior design, and video games.

Find me at Mastodon, LinkedIn, or [email protected].

My most recent posts are below.


Brown Note

published 2024 May

I've been working on an iOS app recently, which is new for me. The app is called Brown Note and it is a food journal designed to solve the biggest problem I have had with other food journal apps: logging entries is so complex that my brain unconsciously stops doing it.

Customer Need

I'm slow to realize biological correlations. There are several weird things about my body, so it's not always obvious that when I eat A it causes poor experience B. Lots of things cause poor experience B, and also poor experiences C, D, and E, so I'm not always on the lookout.

It took me months just to realize that I didn't always have "stomach issues", a phrase I'll use as a shorthand for some combination of urgent, painful, and/or frequent poops, and that they might be fixable.

When my doctor suggested food journaling, I was diligent about looking for a high-tech solution in the form of a mobile app, and I found several.

Thus started a cycle:

  1. I choose a fantastic mobile app to use for food journaling.
  2. I use it to log every meal and poop.
  3. ?
  4. Weeks later, I realize I have stopped logging and completely forgetten about it.
  5. Repeat from 1.

As I tried more apps this way, and became more conscious over time about my falling off the wagon, I realized my issue was the friction of log entry. I would be eating among friends, or sitting down in pain, and a lightweight thought of "I should log this" would brush over my arm only to be dismissed"I'll log it when I'm free". Only when later came, it was still too heavy a process (and too delayed a gratification) to convince myself to do.

I realized I needed to remove as much friction from the process as I could. I would simplify my process so much that that light brushing over my arm would be a strong enough signal to log immediately.

Product Discovery

I carried a pen and a folded up piece of paper in my pocket, writing down everything that went into and out of me, occasionally copying them into a spreadsheet by hand, and doing some eyeball analysisand later some Python scriptingto find problem foods.

I did this because the physical pen would literally poke me whenever I sit down to do my business, but there was something magical about how the small size of the folded piece of paper forced each log entry to be brief. That magic allowed me to build a routine around it.

Version 2 was opening the aforementioned spreadsheet on my phone and directly logging there, but this slog quickly led me to version 3, an iOS Shortcut placed on my Home Screen that prompts for a single line of text, which it appends to the spreadsheet.

Simple Works

All I'm entering in these lines is plain text like "Good poop", "Bad poop", or a few words describing a food item. In some iterations, I didn't even include a date; order was enough.

  • Bad poop
  • Mango lassi
  • Chinese
  • Taco Bell
  • CookUnity
  • Soylent
  • Good poop
  • Taco Bell
  • Whiskey
  • Good poop
  • Chinese
  • Bubble tea

An excerpt from my v2 spreadsheet.

I'm not separating "foods" and "poops" into two categories of thing. I'm not typing out a bunch of tags or ingredients with every food item. If I zero in on a food that's too ambiguoussay, "pizza"only then will I start logging its components: cheese, bread, tomatoes. Until and unless that happens, simplicity wins. Keeping the routine going is more important than anything.

Into Swift

In the background of all this I'd become more and more interested in native iOS development, for several unrelated reasons.

After stalling out trying to make an unrelated app with a lot of complexity, I figured this was the perfect do-over to start simple. I started learning Swift and SwiftUI again, this time with SwiftData too.

The result is Brown Note.

A screenshot of Brown Note showing how a specific food, chai in this case, impacts poops, including percentages of good vs. bad poops that come after.

It was insanely easy to get Brown Note to a stage where I can use it for personal logging. The complexity all lies in the analytics and insights, which aren't part of its everyday use cases and so didn't block me from onboarding myself as a user.

A screenshot of Brown Note showing the user some meals they have tracked.

This helped immensely with design, as I would personally use the app several times a day, noting every rough edge and feature need.

A screenshot of Brown Note showing the user a poop they have tracked, and the estimated inputs (recent meals) to that poop.

I'm still in constant development, but the simple use cases are covered. As I build out more advanced ones, I'm being cognizant about keeping the logging experience dead simple.

For example, the app can understand food components (e.g. latte contains milk and coffee) but I'm shielding the logging experience from being impacted by it. When the app needs more info, it asks asynchronously.

A screenshot of Brown Note asking the user for the ingredients of saag paneer.

Let me know what you think, or join the TestFlight group to give me some feedback before proper release.


Wholesome Great Filters

published 2024 April

The Fermi paradox is the idea that based on the number of stars in the universe, each's probability of having a habitable planet, each of those planets' odds of developing life, and so on; statistically it's virtually certain some other civilization has become obscenely advanced, far beyond our own.

If such a civilization exists we should have heard from them by now, but we haven't. That's the paradox.

The Great Filter is one solution to this paradox. It proposes that some big bad event inevitably happens in the course of any developing civilization that dooms it, and it's the same event or events for every civilization.

Usually, ideas for possible Great Filters are dramatic and looming like nuclear war, climate change, hyperintelligent AI, plague, or exhaustion of resources.

I'd like to propose some more wholesome alternatives, each a little more unhinged than the last.

Stopped Having "Happy Accidents"

When speaking about populations, replacement is when the average person produces 1.0 children. Mathematically replacement is vital to the continuation of any species. An average production of even 0.9 children per person means each generation is smaller than the last, until there is simply no next generation.

We already know that as populations develop, birth rates decline. Contraceptives, family planning, education, individual freedoms, and opportunity all work together to create more thoughtful and intentional reproduction.

Historically, reaching replacement has been easy. It has had to be. Sex is fun, and sex makes children, so children get made.

But as we approach a world that disconnects recreational sex from conception, it's possible we won't reach replacement. It's possible we won't even get close. How many couples do you know who plan to have 3+ children?

Perhaps the largest human generation ever to exist already does. It will be a fantastic thing for each individual to lead their life how they want. It might also end the species. Lack of reproductive freedom is one of the more sinister evolutionary necessities. Perhaps once a species advances enough to fix it, it's the beginning of the end.

Perhaps countless civilizations have already gone through this.

Purposefully Stopped Inventing

Humans are unique on the planet for two reasons. First, we’re toolmakers. Second, we pine for more. More everything. The richest and most accomplished among us still want more. This carnal desire has brought us far evolutionarily, intellectually, and economically.

This desire for excess is probably a prerequisite for any species to become advanced. But perhaps that desire eventually causes enough planet-scale issues that it forces the realization that it can be overcome.

A small problem is ignorable and a medium problem is annoying, but a big problem is fixed.

Maybe we’ll reach some philosophical understanding of the universe and our own nature that shuts down that desire for excess, that makes every human being happy and healthy but doesn't also advance science, or at least spacefaring science.

If so, civilizations that have those two properties necessary for growth are stopped from growing by those very same properties' eventual destructive tendencies.

Once overcome, perhaps we'll stop extraplanetary operations and live out our lives on the planet we grew up on, solarpunk style.

Perhaps countless of civilizations are currently doing this.

An illustration of a solarpunk landscape, heavy with greenery and windmills.

Stunted by our Carrier

We're only starting to understand the complexity of the gut biome. It is an entire colony of bacteriaa civilizationthat operates inside us in symbiosis.

The bacteria in the biome probably don't know that their world is inside a person, who lives in an even larger world.

Maybe we're in someone else's gut biome. In the same way a bacterium doesn't have concepts for a coffee table or a planet, we could be missing concepts much larger than usoutside the visible universe, maybethat influence our world or galaxy or universe the same way our bodies influence our gut biomes.

Maybe that larger being has some defense mechanismlike we have white blood cellsthat prevents civilizations from getting into a bad state, and intersolar operations are a bad state.

Perhaps countless civilizations have already gone through this.

Left

Maybe every civilization advanced to the point where they found a way out. Out of our universe, or our of our spatial or temporal dimensions. Maybe they discovered time travel and there’s some reason they really wanted to use it, so they time traveled their entire civilization far into the future, like past the heat death of the universe.

Maybe that’s what dark energy isplanets or star systems or galaxies that are time traveling from the past into the future, pulling the metaphorical fabric of spacetime up instead of weighing it down.

Perhaps countless civilizations will meet each other on the other side.

#nofilter

Maybe everything is perfect and many extraterrestrial civilizations exist just fine, just not in ways we can perceive, and maybe they equally cannot perceive us. Maybe they are what dark matter is.

Maybe there are entire empires spread across the galaxies thriving, but they somehow exist and have always existed in a perceptual level of the universe we don’t even know about, like how my dog doesn't know about wifi.

Perhaps countless civilizations are out there, existing among us.

Would It Be Bad to be Filtered?

Some of these Great Filters would actually be advancements. It would be great to reach fully reproductive freedom, or to re-achieve symbiosis with the resources available to us.

It pulls at me, though, that in these scenarios the species will stop existing, because I really want us to continue existing. I'm a curious person. I'm so curious, that even after I'm dead I want others to uncover all my unsatisfied curiosities of physics and the universe, even if I won't be around to be curious about them anymore.

But that's not my choice to make. If everyone alive is happy, and our species dwindles into nothingness because of it… is that bad?

Maybe countless civilizations have already gone through it.


Effective English

published 2024 January

Like a programming language, English's purpose is to taxi ideas. As well, there are many ways to do the same job, some more effective than others.

But unlike code, English presents two roads that ideas can drive down: the spoken word and the written word. They lead the same place, but one is a windy one-lane dirt road full of intersections and backtracking. The other is a coastal highway.

When we write, we pave the highway. We put in an enormous amount of effort up front to benefit people we don't even know will come. If we instead write as if we are speaking, the highway is quickly eroded by waters of disinterest.

Here's how to pave a highway.

Leave Something Out

Laura Shapiro shares an anecdote in Something from the Oven that box cake mixesthe ones where you just add eggs and waterat one point embedded the eggs directly in the mix, dehydrated to be as shelf-stable as the rest. Consumers merely added water, but sales were low.

Psychologist Ernest Dichter suggested leaving out the dehydrated eggs and directing the consumer to add their own. Consumers felt more engaged, and sales skyrocketed.

Let the reader add their own eggs.

Writing is Code Golf

Code golf1 can be fun, but it is infamous for yielding unmaintainable real-world code. Squishing as much information as possible into as few characters as possible inevitably sacrifices reader understanding.

The better code golf would be to optimize for reader time, not character count. That is, measure density as:

\[\dfrac{meaning\,gleaned}{time\ spent\ reading}\]

In writing, this kind of density means everything. There is no compiler, scaling, or even syntax to worry about. There is only the reader. They float in orbit, moving from piece to piece until they spot something interesting to land on. Clear words are like electromagnets that pull them in.

Be Nontechnical

Technical ideas can be expressed nontechnically a lot more often than you may realize. It is a matter of time and effort.

What is a static website generator? Take ten seconds to describe it in your head before continuing.

Here is mine:

A static website generator turns documents into websites.

What is Markdown? Again, try it yourself.

Mine:

Markdown is an agreement on how to indicate rich text in plain text.

Your descriptions were probably more precise. Maybe you meandered a little and used some technical terms. The result of those actions is slightly more meaning, but it's a lot less understandable to laypeople.

Usually the trade is not worth it. Readers not in your mindset will be exhausted easily. Spend the effort to be at least one step less technical than is your instinct.

Use Imagery

Recall the seeds planted in you by your grade school training on imagery. It’s difficult to nurture the habit, but even a little thought can bloom beautiful prose.

Instill Understanding, not Correctness

\(E=mc²\) is technically wrong. The actual equation for energy is

\[E=\sqrt{m²c^4 + p^2c^2}\]

where \(p\) is momentum. \(E=mc²\) is a simplification that works well enough for human-scale speeds. But it is still taught in classrooms, all the way until reaching the point where it breaks downwhich most disciplines never reach. It is easier to teach that way.

Mold your concepts to be taught easily. Do not fret about being correct at the edges. Do not even mention the edges. They are a distraction from the teaching.

Prefer Understanding over Grammar

A grammar exists to make communication easier. But the English grammar was not constructed; it grew and grows organically. Patterns in sentence structure existed before anyone wrote them down, and new developments aren't decided by some council of elders. They're decided by popular use.

The English grammar is a description, not a prescription. Grammars and dictionaries are continually updated to match current usage, not the other way around.2

Aim to be understood. Don't let any rule get in the way.

Use Staging

Like code, the worst person to test what you've written is you. Find a friend who enjoys reviewing your work constructively, or stash the piece in some staging area and look at it in a month with fresh eyes.

You'll learn what works and what makes you bored of reading.

Give Yourself a Break

After all this, it's better to publish something 90% done than to toil away trying to reach 100% forever. Give yourself some slack and hit the button.


  1. Code golf is a form of entertainment where programmers try to solve a programming prompt in as little code as possible, however unreadable or unmaintainable the result may be.
  2. As an example of the bleeding edge between popular use and description: According to all major dictionaries, songs must have lyrics. If you go by that, the Mario theme is not a song. Much of the EDM genre is not songs.

Archives →