Skip to content

Commit

Permalink
Deploying to gh-pages from @ 7dae707 🚀
Browse files Browse the repository at this point in the history
  • Loading branch information
glacials committed May 3, 2024
1 parent cc1f636 commit 1a682cc
Show file tree
Hide file tree
Showing 12 changed files with 710 additions and 47 deletions.
7 changes: 7 additions & 0 deletions archives.html
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,13 @@ <h2>2024</h2>



<li>

<a href="/brownnote.html">Brown Note</a>
</li>



<li>

<a href="/filters.html">Wholesome Great Filters</a>
Expand Down
37 changes: 19 additions & 18 deletions brownnote.gmi
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@


# Brown Note

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 stops doing it.
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.

=> https://apps.apple.com/us/app/core-data-lab/id6479333983 Brown Note
=> https://apps.apple.com/us/app/brown-note/id6479333983 Brown Note

## Customer Need

Expand All @@ -20,15 +22,15 @@ Thus started a cycle:
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"—and that would be the last thought I had on it.
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 initiate.
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 didn't initially mean to solve this problem for anyone but myself. My first iteration on solving it was carrying 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 analysis—and later some Python scripting—to find problem foods.
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 analysis—and later some Python scripting—to find problem foods.

I did this because I thought having a physical pen would literally poke me whenever I sit down to do my business, and it did, but there was something magical about how brief each log entry needed to be that allowed me to build a routine around it.
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.

Expand All @@ -40,7 +42,7 @@ All I'm entering in these lines is plain text like "Good poop", "Bad poop", or a

*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 ambiguous—say, "pizza"—I *then and only then* will start logging its components: cheese, bread, tomatoes. Until and unless that happens, simplicity is queen because keeping the routine going is more important than anything.
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 ambiguous—say, "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

Expand All @@ -53,25 +55,24 @@ After stalling out trying to make an unrelated app with a lot of complexity, I f

The result is Brown Note.

=> https://apps.apple.com/us/app/core-data-lab/id6479333983 Brown Note

=> /img/brownnote-home-ios-light.png A screenshot of the Brown Note app, on a screen listing a few days' worth of food journal entries.
=> /img/brownnote-enter-ios-light.png A screenshot of the Brown Note app, on a screen asking the user to input a food item.
=> https://apps.apple.com/us/app/brown-note/id6479333983 Brown Note

=> /img/brownnote-chart-ios-light.png A screenshot of the Brown Note app, on a screen showing a bar chart of good poops vs. bad poops that happened soon after chai latte entries.

*Brown Note is available on the App Store for iOS.*
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.

=> https://apps.apple.com/us/app/core-data-lab/id6479333983 App Store

It was insanely easy to get Brown Note to a stage where I can use it for personal logging. The most complex parts of the app are the analytics and insights, which aren't part of its everyday use cases and so don't block me from onboarding as a user.


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



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, I'm building a feature where 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 from you, it will ask you asynchronously.
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.



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

=> https://testflight.apple.com/join/HgAgdX48 TestFlight
=> https://testflight.apple.com/join/ww7RII5M TestFlight
107 changes: 80 additions & 27 deletions brownnote.html
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,9 @@
<nav class="primary"><div class="hierarchy">
<div class="breadcrumb">
<a href="/"><div class="nav-text">Ben Carlsson</div></a>
</div></div>
</div><div class="breadcrumb">
<a href="archives.html"><div class="nav-text">Writing</div></a>
</div></div>
<div class="breadcrumb title">
<a href="/brownnote.html"><h1>Brown Note</h1></a>
</div></nav>
Expand All @@ -64,14 +66,23 @@



<div class="publish-date">
<i>
published
2024 May</i
>
</div>


<html><head></head><body>
<html><head></head><body><p><link rel="stylesheet" type="text/css" href="/devices.min.css"/></p>



<p>I've been working on an iOS app recently,
which is new for me.
The app is called <a href="https://apps.apple.com/us/app/core-data-lab/id6479333983" target="_blank">Brown Note</a>
The app is called <a href="https://apps.apple.com/us/app/brown-note/id6479333983" target="_blank">Brown Note</a>
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 stops doing it.</p>
logging entries is so complex that my brain unconsciously stops doing it.</p>

<h2>Customer Need</h2>

Expand Down Expand Up @@ -106,22 +117,24 @@ <h2>Customer Need</h2>
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<span style="font-family: sans-serif"></span>"I'll log it when I'm free"<span style="font-family: sans-serif"></span>and that would be the last thought I had on it.</p>
only to be dismissed<span style="font-family: sans-serif"></span>"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.</p>

<p>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 initiate.</p>
I would simplify my process so much that that light brushing over my arm would be a strong enough signal to log immediately.</p>

<h2>Product Discovery</h2>

<p>I didn't initially mean to solve this problem for anyone but myself.
My first iteration on solving it was carrying a pen and a folded up piece of paper in my pocket,
<p>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 analysis<span style="font-family: sans-serif"></span>and later some Python scripting<span style="font-family: sans-serif"></span>to find problem foods.</p>

<p>I did this because I thought having a physical pen would literally poke me whenever I sit down to do my business,
and it did,
but there was something magical about how brief each log entry needed to be that allowed me to build a routine around it.</p>
<p>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.</p>

<p>Version 2 was opening the aforementioned spreadsheet on my phone and directly logging there,
but this slog quickly led me to version 3,
Expand Down Expand Up @@ -159,10 +172,11 @@ <h2>Simple Works</h2>

<p>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 ambiguous<span style="font-family: sans-serif"></span>say, "pizza"<span style="font-family: sans-serif"></span>I <em>then and only then</em> will start logging its components:
If I zero in on a food that's too ambiguous<span style="font-family: sans-serif"></span>say, "pizza"<span style="font-family: sans-serif"></span>only then will I start logging its components:
cheese, bread, tomatoes.
Until and unless that happens,
simplicity is queen because keeping the routine going is more important than anything.</p>
simplicity wins.
Keeping the routine going is more important than anything.</p>

<h2>Into Swift</h2>

Expand All @@ -173,36 +187,75 @@ <h2>Into Swift</h2>
I figured this was the perfect do-over to start simple.
I started learning Swift and SwiftUI again, this time with SwiftData too.</p>

<p>The result is <a href="https://apps.apple.com/us/app/core-data-lab/id6479333983" target="_blank">Brown Note</a>.</p>

<p><img src="/img/brownnote-home-ios-light.png" alt="A screenshot of the Brown Note app, on a screen listing a few days' worth of food journal entries."/>
<img src="/img/brownnote-enter-ios-light.png" alt="A screenshot of the Brown Note app, on a screen asking the user to input a food item."/></p>
<p>The result is <a href="https://apps.apple.com/us/app/brown-note/id6479333983" target="_blank">Brown Note</a>.</p>

<p><img src="/img/brownnote-chart-ios-light.png" alt="A screenshot of the Brown Note app, on a screen showing a bar chart of good poops vs. bad poops that happened soon after chai latte entries."/></p>

<p><em>Brown Note is available on the <a href="https://apps.apple.com/us/app/core-data-lab/id6479333983" target="_blank">App Store</a> for iOS.</em></p>
<div class="device device-iphone-14-pro" style="zoom: 0.65; margin-bottom: 2rem">
<div class="device-frame">
<img alt="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." class="device-screen" src="/img/brownnote-correlate.png" style="margin-top: 0"/>
</div>
<div class="device-stripe"></div>
<div class="device-header"></div>
<div class="device-sensors"></div>
<div class="device-btns"></div>
<div class="device-power"></div>
</div>

<p>It was insanely easy to get Brown Note to a stage where I can use it for personal logging.
The most complex parts of the app are the analytics and insights,
which aren't part of its everyday use cases and so don't block me from onboarding as a user.</p>
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.</p>

<div class="device device-iphone-14-pro" style="zoom: 0.65; margin-bottom: 2rem">
<div class="device-frame">
<img alt="A screenshot of Brown Note showing the user some meals they have tracked." class="device-screen" src="/img/brownnote-trackmeals.png" style="margin-top: 0"/>
</div>
<div class="device-stripe"></div>
<div class="device-header"></div>
<div class="device-sensors"></div>
<div class="device-btns"></div>
<div class="device-power"></div>
</div>

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

<div class="device device-iphone-14-pro" style="zoom: 0.65; margin-bottom: 2rem">
<div class="device-frame">
<img alt="A screenshot of Brown Note showing the user a poop they have tracked, and the estimated inputs (recent meals) to that poop." class="device-screen" src="/img/brownnote-trackpoops.png" style="margin-top: 0"/>
</div>
<div class="device-stripe"></div>
<div class="device-header"></div>
<div class="device-sensors"></div>
<div class="device-btns"></div>
<div class="device-power"></div>
</div>

<p>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.</p>

<p>For example,
I'm building a feature where the app can understand food components
the app can understand food components
(e.g. <code>latte</code> contains <code>milk</code> and <code>coffee</code>)
but I'm shielding the logging experience from being impacted by it.
When the app needs more info from you,
it will ask you asynchronously.</p>
When the app needs more info,
it asks asynchronously.</p>

<div class="device device-iphone-14-pro" style="zoom: 0.65; margin-bottom: 2rem">
<div class="device-frame">
<img alt="A screenshot of Brown Note asking the user for the ingredients of saag paneer." class="device-screen" src="/img/brownnote-honein.png" style="margin-top: 0"/>
</div>
<div class="device-stripe"></div>
<div class="device-header"></div>
<div class="device-sensors"></div>
<div class="device-btns"></div>
<div class="device-power"></div>
</div>

<p>Let me know what you think,
or join the <a href="https://testflight.apple.com/join/HgAgdX48" target="_blank">TestFlight</a> group to give me some feedback before proper release.</p>
or join the <a href="https://testflight.apple.com/join/ww7RII5M" target="_blank">TestFlight</a> group to give me some feedback before proper release.</p>


</body></html>
</article>
<footer>
Expand All @@ -220,7 +273,7 @@ <h2>Into Swift</h2>
<br />

published
2024 March
2024 May


</i>
Expand Down
1 change: 1 addition & 0 deletions devices.min.css

Large diffs are not rendered by default.

Loading

0 comments on commit 1a682cc

Please sign in to comment.