<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Philosophy on Build in Public</title><link>https://build.ralphmayr.com/tags/philosophy/</link><description>Recent content in Philosophy on Build in Public</description><generator>Hugo</generator><language>en-us</language><copyright>©️ Ralph Mayr 2026</copyright><lastBuildDate>Wed, 01 Oct 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://build.ralphmayr.com/tags/philosophy/index.xml" rel="self" type="application/rss+xml"/><item><title>Use virtue signalling (but only if you’re actually planning to be virtuous!)</title><link>https://build.ralphmayr.com/posts/93-use-virtue-signalling-but-only-if-youre-actually-planning-to-be-virtuous/</link><pubDate>Wed, 01 Oct 2025 00:00:00 +0000</pubDate><guid>https://build.ralphmayr.com/posts/93-use-virtue-signalling-but-only-if-youre-actually-planning-to-be-virtuous/</guid><description>&lt;p&gt;In
&lt;a href="../90-use-friction-to-your-advantage/"&gt;Use friction to your advantage&lt;/a&gt;, I talked about ways to nudge users toward desired&amp;mdash;or away from undesired&amp;mdash;behaviours. Take this idea too far, however, and you end up with Dark Patterns: UI tricks that deliberately deceive users.&lt;/p&gt;
&lt;p&gt;E-commerce is full of bad examples:&lt;/p&gt;
&lt;p&gt;&amp;ndash; The &amp;ldquo;Only 3 Left In Stock!&amp;rdquo; badges that try to rush you into a purchase&lt;/p&gt;
&lt;p&gt;&amp;ndash; The awkward games and bonus points on the Temu app&lt;/p&gt;
&lt;p&gt;&amp;ndash; Cookie consent banners where the &amp;ldquo;Accept all&amp;rdquo; button looks like the only real option&lt;/p&gt;</description></item><item><title>Use friction to your advantage</title><link>https://build.ralphmayr.com/posts/90-use-friction-to-your-advantage/</link><pubDate>Sun, 28 Sep 2025 00:00:00 +0000</pubDate><guid>https://build.ralphmayr.com/posts/90-use-friction-to-your-advantage/</guid><description>&lt;p&gt;Amazon in general, and Jeff Bezos in particular, are famous for &amp;ldquo;reducing friction.&amp;rdquo; Case in point: One-click checkout. Allegedly, it was Bezos himself who obsessed over removing as many steps as possible from the customer&amp;rsquo;s path to purchase. Enter your shipping address? Confirm your credit card number? Validate the details? Gone. Just &amp;ldquo;Buy now,&amp;rdquo; and the goods will be in your mailbox tomorrow.&lt;/p&gt;
&lt;p&gt;For poketto.me, I applied this principle to the signup process. What&amp;rsquo;s the simplest way to enroll for a new product or service? Do you really want to enter your name (first and last), email address (twice), a password (with arbitrary security criteria), then get a confirmation mail, click the link, and finally find yourself in another browser tab (or window)? By that time, many users would surely have given up.&lt;/p&gt;</description></item><item><title>A room without a dustbin will never be clean</title><link>https://build.ralphmayr.com/posts/70-a-room-without-a-dustbin-will-never-be-clean/</link><pubDate>Mon, 08 Sep 2025 00:00:00 +0000</pubDate><guid>https://build.ralphmayr.com/posts/70-a-room-without-a-dustbin-will-never-be-clean/</guid><description>&lt;p&gt;This is a roundabout way of saying: make &amp;ldquo;good&amp;rdquo; behavior the easy choice. But there&amp;rsquo;s an interesting backstory to the saying.&lt;/p&gt;
&lt;p&gt;I come from a family of manual laborers. My dad, all of my uncles, and most of my many cousins work in trades ranging from carpentry to plumbing to house painting. And one of the first things any good craftsman does when setting up at a new site? Installing a dustbin.&lt;/p&gt;</description></item><item><title>Define what ‘done’ looks like (and stick to it!)</title><link>https://build.ralphmayr.com/posts/67-define-what-done-looks-like-and-stick-to-it/</link><pubDate>Fri, 05 Sep 2025 00:00:00 +0000</pubDate><guid>https://build.ralphmayr.com/posts/67-define-what-done-looks-like-and-stick-to-it/</guid><description>&lt;p&gt;Working solo on poketto.me &amp;mdash; without the built-in &amp;ldquo;pressure to deliver&amp;rdquo; that comes with a corporate environment &amp;mdash; comes with an interesting challenge: actually shipping stuff.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s an example. When I started building the &amp;ldquo;Share&amp;hellip;&amp;rdquo; feature, I had something super simple in mind: users should be able to create shareable links to their content, which others could view on poketto.me without logging in. I figured this would create a self-reinforcing loop: existing users share content → new people enjoy the clean, distraction-free reading experience → they sign up → save their own content → share it → and the cycle continues.&lt;/p&gt;</description></item><item><title>It’s more than a marathon</title><link>https://build.ralphmayr.com/posts/65-its-more-than-a-marathon/</link><pubDate>Wed, 03 Sep 2025 00:00:00 +0000</pubDate><guid>https://build.ralphmayr.com/posts/65-its-more-than-a-marathon/</guid><description>&lt;p&gt;I promise I won&amp;rsquo;t turn into my Strava feed. But there&amp;rsquo;s something to be said about the similarities between running long distances and building products.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;ve probably heard the &amp;ldquo;it&amp;rsquo;s a marathon, not a sprint&amp;rdquo; metaphor before &amp;mdash; but I want to add one more twist.&lt;/p&gt;
&lt;p&gt;You can approach running a marathon in very different ways. Some people go from zero-to-marathon in 12 weeks of intense training. It&amp;rsquo;s doable, but those gut-wrenching training plans&amp;hellip; you really don&amp;rsquo;t want to go through that. And often, this results in a once-in-a-lifetime, superhuman effort. It looks hard. It feels hard. Sure, you can pat yourself on the back afterwards if you make it &amp;mdash; but the risk of injury is high, the odds of repeating the feat are low, and the long-term benefits are minimal.&lt;/p&gt;</description></item><item><title>Always suspect your own code first</title><link>https://build.ralphmayr.com/posts/64-always-suspect-your-own-code-first/</link><pubDate>Tue, 02 Sep 2025 00:00:00 +0000</pubDate><guid>https://build.ralphmayr.com/posts/64-always-suspect-your-own-code-first/</guid><description>&lt;p&gt;I physically winced when a beta tester of the poketto.me Android app reported this bug:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Sometimes, adding new tags to a Save doesn&amp;rsquo;t work. I open the tagging dialog, type a new tag, click &amp;lsquo;save&amp;rsquo; &amp;mdash; the input field clears, but the new tag is nowhere to be seen.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I was able to reproduce the issue on my phone &lt;em&gt;and&lt;/em&gt; in an Android emulator.&lt;br&gt;
Gut reaction: &lt;em&gt;&amp;ldquo;Ah, must be the WebView. WebViews always behave differently than a normal browser. This will be a mess.&amp;rdquo;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Don’t generalize too soon. But do generalize.</title><link>https://build.ralphmayr.com/posts/60-dont-generalize-too-soon-but-do-generalize/</link><pubDate>Fri, 29 Aug 2025 00:00:00 +0000</pubDate><guid>https://build.ralphmayr.com/posts/60-dont-generalize-too-soon-but-do-generalize/</guid><description>&lt;p&gt;It&amp;rsquo;s generally good practice among developers to break things down into small, independent, reusable components. But, like all good things, it can become problematic when taken too far too soon.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s an example from poketto.me:&lt;/p&gt;
&lt;p&gt;A few weeks ago, I introduced colored tags. Users can choose one of eight colors for each tag to help them quickly find what they&amp;rsquo;re looking for and organize their tags visually. (Personally, I use one color for all location-related tags, another for tech topics, etc.)&lt;/p&gt;</description></item><item><title>Show. And Tell. And Write.</title><link>https://build.ralphmayr.com/posts/59-show-and-tell-and-write/</link><pubDate>Thu, 28 Aug 2025 00:00:00 +0000</pubDate><guid>https://build.ralphmayr.com/posts/59-show-and-tell-and-write/</guid><description>&lt;p&gt;The other week, a post by someone at Google went viral. The gist: PMs should focus on building prototypes that show what the product is supposed to do, rather than merely telling through written PRDs.&lt;/p&gt;
&lt;p&gt;That resonated with me.&lt;/p&gt;
&lt;p&gt;As a developer-turned-PM, I always found it limiting that &amp;ldquo;building&amp;rdquo; was considered out of my scope. I got to write specs, user stories, and requirement docs &amp;mdash; but those often failed to capture the intent behind an idea, leading to botched execution of a feature. A lot got lost in translation.&lt;/p&gt;</description></item><item><title>Passion is what gets you started…</title><link>https://build.ralphmayr.com/posts/53-passion-is-what-gets-you-started/</link><pubDate>Fri, 22 Aug 2025 00:00:00 +0000</pubDate><guid>https://build.ralphmayr.com/posts/53-passion-is-what-gets-you-started/</guid><description>&lt;p&gt;You&amp;rsquo;ve heard it before: It&amp;rsquo;s a marathon, not a sprint. That&amp;rsquo;s true for almost everything worthwhile&amp;mdash;learning a new skill, building healthy habits, nurturing relationships&amp;hellip; and yes, building, maintaining, and growing something like poketto.me, even if it's &amp;ldquo;just&amp;rdquo; a side project.&lt;/p&gt;
&lt;p&gt;Psychologist Angela Duckworth frames this through the lens of &lt;strong&gt;grit&lt;/strong&gt;&amp;mdash;not sheer &lt;strong&gt;willpower&lt;/strong&gt; (which is fleeting and highly dependent on external factors), but the combination of &lt;strong&gt;passion&lt;/strong&gt; (what gets you started) and &lt;strong&gt;perseverance&lt;/strong&gt; (what keeps you going).&lt;/p&gt;</description></item><item><title>Tackle the Monkey First</title><link>https://build.ralphmayr.com/posts/48-tackle-the-monkey-first/</link><pubDate>Sun, 17 Aug 2025 00:00:00 +0000</pubDate><guid>https://build.ralphmayr.com/posts/48-tackle-the-monkey-first/</guid><description>&lt;p&gt;I don&amp;rsquo;t remember where I first came across this metaphor, but I still love it:&lt;/p&gt;
&lt;p&gt;Suppose your task is to train a costumed monkey to recite a Shakespeare sonnet while standing on an elaborately carved wooden pedestal. Where do you start? Do you begin by picking out the wood for the pedestal? Designing the decorative motifs? Choosing which hat the monkey should wear? Or&amp;mdash;more obviously&amp;mdash;do you first figure out whether you can actually get a monkey to recite poetry in the first place?&lt;/p&gt;</description></item><item><title>Know When to Maximize—and When to Satisfice</title><link>https://build.ralphmayr.com/posts/45-know-when-to-maximizeand-when-to-satisfice/</link><pubDate>Thu, 14 Aug 2025 00:00:00 +0000</pubDate><guid>https://build.ralphmayr.com/posts/45-know-when-to-maximizeand-when-to-satisfice/</guid><description>&lt;p&gt;Just like optimism vs. pessimism, there's another spectrum that every builder, founder, or product person lives on: Maximizing vs. Satisficing.&lt;/p&gt;
&lt;p&gt;In behavioral economics, a maximizer tries to achieve the &lt;em&gt;best possible outcome&lt;/em&gt;. For example: spending hours to find the absolute best hotel for your vacation. A satisficer, on the other hand, picks the &lt;em&gt;first&lt;/em&gt; option that meets their basic requirements&amp;mdash;and moves on with their day.&lt;/p&gt;
&lt;p&gt;When developing products, it's incredibly useful to know where you fall on that scale because: There&amp;rsquo;s not simple answer when to apply which strategy.&lt;/p&gt;</description></item><item><title>The Optimism Trap (and Why You Need Its Opposite)</title><link>https://build.ralphmayr.com/posts/42-the-optimism-trap-and-why-you-need-its-opposite/</link><pubDate>Mon, 11 Aug 2025 00:00:00 +0000</pubDate><guid>https://build.ralphmayr.com/posts/42-the-optimism-trap-and-why-you-need-its-opposite/</guid><description>&lt;p&gt;I just finished
&lt;a href="https://ralphmayr.com/library/the-bright-side/" target="_blank" rel="noopener noreferrer"&gt;The Bright Side&lt;/a&gt; by Sumit Paul-Choudhury&amp;mdash;a solid deep-dive into the history, psychology, and applicability of &lt;em&gt;optimism&lt;/em&gt;. The social science is clear: overall, optimists tend to achieve better outcomes.&lt;/p&gt;
&lt;p&gt;Why? Because they &lt;em&gt;act&lt;/em&gt;. Optimists move toward a positive vision of the future, and in doing so, often stumble upon unexpected opportunities. Pessimists, by contrast, lean toward fatalism and inaction &amp;mdash; and the world rarely arranges itself in exactly the way they&amp;rsquo;d like, anyway.&lt;/p&gt;</description></item><item><title>Keep a List of ‘Low-Hanging Fruit’ for Days You’re Not Feeling It 🍒</title><link>https://build.ralphmayr.com/posts/41-keep-a-list-of-low-hanging-fruit-for-days-youre-not-feeling-it/</link><pubDate>Sun, 10 Aug 2025 00:00:00 +0000</pubDate><guid>https://build.ralphmayr.com/posts/41-keep-a-list-of-low-hanging-fruit-for-days-youre-not-feeling-it/</guid><description>&lt;p&gt;One of the perks of working independently on an early-stage product is flexibility &amp;mdash; but that comes with a risk: running out of steam. Like I said in my post about #pacing, it&amp;rsquo;s key not to overextend on the good days &lt;em&gt;and&lt;/em&gt; not to check out completely when the work feels like a slog.&lt;/p&gt;
&lt;p&gt;One trick I&amp;rsquo;ve found increasingly helpful as the codebase grows? Keep a backlog of quick wins:&lt;/p&gt;</description></item><item><title>Consistency Beats Accuracy (Part 2)</title><link>https://build.ralphmayr.com/posts/39-consistency-beats-accuracy-part-2/</link><pubDate>Fri, 08 Aug 2025 00:00:00 +0000</pubDate><guid>https://build.ralphmayr.com/posts/39-consistency-beats-accuracy-part-2/</guid><description>&lt;p&gt;The bigger your codebase grows, the more important it becomes to stay consistent &amp;mdash; in naming things and in how you use features of your programming language.&lt;/p&gt;
&lt;p&gt;Take input parameters and variables, for example. Is the ID of a &lt;strong&gt;Save&lt;/strong&gt; object sometimes named save_id, other times saveId, and occasionally just id? Is the function to load it called load_save(...), get_save(...), or fetch_save(...)? Or maybe it&amp;rsquo;s load_save(...) for saves, but get_settings(...) and fetch_tag(...) elsewhere?&lt;br&gt;
If so, confusion is only a matter of time.&lt;/p&gt;</description></item><item><title>Consistency Beats Accuracy (Part 1)</title><link>https://build.ralphmayr.com/posts/38-consistency-beats-accuracy-part-1/</link><pubDate>Thu, 07 Aug 2025 00:00:00 +0000</pubDate><guid>https://build.ralphmayr.com/posts/38-consistency-beats-accuracy-part-1/</guid><description>&lt;p&gt;As I add more UI-heavy functionality to poketto.me (not all of it public yet), I keep running into the same issue: it&amp;rsquo;s tempting &amp;mdash; but risky &amp;mdash; to constantly invent new UI patterns and elements.&lt;/p&gt;
&lt;p&gt;Case in point: On the &lt;strong&gt;Saves&lt;/strong&gt; page, each saved item has a &lt;strong&gt;&amp;ldquo;more&amp;rdquo;&lt;/strong&gt; menu with actions like &lt;em&gt;Archive&lt;/em&gt;, &lt;em&gt;Delete&lt;/em&gt;, or &lt;em&gt;Edit Tags&lt;/em&gt;. But when I worked on the &lt;strong&gt;News Feed&lt;/strong&gt;, I completely overlooked this. Instead, I gave each news item its own &lt;strong&gt;action bar&lt;/strong&gt; &amp;mdash; dedicated buttons to save the item or, once saved, edit its tags. (See Exhibit A.)&lt;/p&gt;</description></item><item><title>Know When to Explore — and When to Build</title><link>https://build.ralphmayr.com/posts/36-know-when-to-explore-and-when-to-build/</link><pubDate>Tue, 05 Aug 2025 00:00:00 +0000</pubDate><guid>https://build.ralphmayr.com/posts/36-know-when-to-explore-and-when-to-build/</guid><description>&lt;p&gt;As I dive deeper into poketto.me, I keep running into an increasingly tricky question:&lt;br&gt;
&lt;strong&gt;How much time should I spend exploring new features &amp;mdash; and how much actually building them?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Having worked as a Product Owner, Manager, and Director, envisioning exciting new features comes naturally. And with poketto.me, the possibilities seem endless:&lt;br&gt;
🎧 Personalized podcasts&lt;br&gt;
🗞️ AI-curated newsfeeds&lt;br&gt;
📝 Automatic summaries&lt;br&gt;
📬 Individualized daily digests&lt;br&gt;
🖊️ Highlights, annotations, organization tools&lt;br&gt;
🔍 Full-text search and even personal knowledge management (PKM)&lt;/p&gt;</description></item><item><title>Pace yourself!</title><link>https://build.ralphmayr.com/posts/32-pace-yourself/</link><pubDate>Fri, 01 Aug 2025 00:00:00 +0000</pubDate><guid>https://build.ralphmayr.com/posts/32-pace-yourself/</guid><description>&lt;p&gt;Working on a substantial project without real external pressure &amp;mdash; deadlines, financial run rates, etc. &amp;mdash; comes with a huge risk: you can easily run out of steam.&lt;/p&gt;
&lt;p&gt;When your only driver is your own motivation, you have to manage that resource wisely. Case in point: when I started tinkering with poketto.me, I thought I&amp;rsquo;d just replicate Pocket&amp;rsquo;s feature set and be done within four weeks. Initial success came quickly &amp;mdash; things worked the way I&amp;rsquo;d hoped, the UI kept getting better, AI coding tools helped kick-start the boilerplate work on infrastructure&amp;hellip; But then I started slacking off. I kept postponing work on the Chrome extension, the website, or the GTM strategy, and turned my attention to other side hustles instead. The initial drive I&amp;rsquo;d had simply faded.&lt;/p&gt;</description></item><item><title>You don’t need to bring out the big guns right away (but it’s good to know them anyway)</title><link>https://build.ralphmayr.com/posts/27-you-dont-need-to-bring-out-the-big-guns-right-away-but-its-good-to-know-them-anyway/</link><pubDate>Sun, 27 Jul 2025 00:00:00 +0000</pubDate><guid>https://build.ralphmayr.com/posts/27-you-dont-need-to-bring-out-the-big-guns-right-away-but-its-good-to-know-them-anyway/</guid><description>&lt;p&gt;It&amp;rsquo;s surprisingly hard to settle on a &amp;ldquo;fit-for-purpose&amp;rdquo; technology and tool stack for a modern SaaS / Cloud app.&lt;/p&gt;
&lt;p&gt;First of all, there are the technical decisions:&lt;/p&gt;
&lt;p&gt;🔀 Which frontend, backend, and persistence stack do you use? Angular vs. React, Java vs. Python, Spring Boot vs. Rails vs. Django vs. Flask, MongoDB vs. Firebase vs. MySQL vs. Postgres&amp;hellip;&lt;/p&gt;
&lt;p&gt;🔀 Do you run it on AWS (Amazon), GCP (Google Cloud), or Azure (Microsoft)?&lt;/p&gt;</description></item><item><title>Don’t attach yourself to outcomes</title><link>https://build.ralphmayr.com/posts/23-dont-attach-yourself-to-outcomes/</link><pubDate>Wed, 23 Jul 2025 00:00:00 +0000</pubDate><guid>https://build.ralphmayr.com/posts/23-dont-attach-yourself-to-outcomes/</guid><description>&lt;p&gt;This one&amp;rsquo;s a bit more philosophical&amp;mdash;but stay with me: There are things in life we can control, and things we can&amp;rsquo;t. That distinction lies at the heart of Stoic philosophy, most famously articulated by Epictetus in the first century BC.&lt;/p&gt;
&lt;p&gt;What does that have to do with product development?&lt;/p&gt;
&lt;p&gt;A lot, actually.&lt;/p&gt;
&lt;p&gt;When you&amp;rsquo;re working on a small, independent project like poketto.me, it&amp;rsquo;s easy to grow frustrated with a lack of resonance. LinkedIn posts don&amp;rsquo;t get the traction you hoped for. Journalists don&amp;rsquo;t reply. Mozilla doesn&amp;rsquo;t respond, even after you&amp;rsquo;ve tried to nudge them on all imaginable platforms,. It can feel like you&amp;rsquo;re putting something good into the world&amp;mdash;and the world is simply ignoring it.&lt;/p&gt;</description></item></channel></rss>