<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Clean Labs</title>
    <description>The latest articles on DEV Community by Clean Labs (@cleanlabs).</description>
    <link>https://dev.to/cleanlabs</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4121055%2Fa638666f-39bc-4676-a1b7-e487b920c818.png</url>
      <title>DEV Community: Clean Labs</title>
      <link>https://dev.to/cleanlabs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cleanlabs"/>
    <language>en</language>
    <item>
      <title>What I Learned Building Reliable Android Reminders</title>
      <dc:creator>Clean Labs</dc:creator>
      <pubDate>Thu, 24 Sep 2026 21:51:36 +0000</pubDate>
      <link>https://dev.to/cleanlabs/what-i-learned-building-reliable-android-reminders-92j</link>
      <guid>https://dev.to/cleanlabs/what-i-learned-building-reliable-android-reminders-92j</guid>
      <description>&lt;p&gt;Building a task app with reminders taught me something I didn't fully appreciate at the beginning:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A reminder is not a single Android feature. It is a chain of systems that all have to work together.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The user sees one simple thing:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Remind me at 3 PM."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Behind that, Android may be dealing with alarms, background execution, battery restrictions, notification permissions, notification channels, device-specific behavior, and time zones.&lt;/p&gt;

&lt;p&gt;After working through these problems while building Wumilo, I started thinking about reminder reliability very differently.&lt;/p&gt;

&lt;h2&gt;
  
  
  A reminder is a chain, not an API call
&lt;/h2&gt;

&lt;p&gt;It is tempting to think about reminders as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;task time → alarm → notification
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In reality, there are several points where things can go differently from what the user expects:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User creates reminder
        ↓
App stores the reminder
        ↓
App schedules the system event
        ↓
Android decides when the event can run
        ↓
The app handles the event
        ↓
Android delivers the notification
        ↓
Notification settings determine how it is presented
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That distinction matters when debugging.&lt;/p&gt;

&lt;p&gt;If a reminder doesn't appear, the problem isn't necessarily the scheduling code.&lt;/p&gt;

&lt;p&gt;The alarm may have been scheduled correctly while the notification was blocked.&lt;/p&gt;

&lt;p&gt;Or the notification may be configured correctly while Android delayed background activity.&lt;/p&gt;

&lt;p&gt;Or everything may work normally until the phone enters a deeper idle state.&lt;/p&gt;

&lt;p&gt;Once I started looking at reminders as a delivery chain, debugging became much more useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exact alarms solve one part of the problem
&lt;/h2&gt;

&lt;p&gt;One of the first Android concepts that becomes important when building time-sensitive reminders is the exact alarm system.&lt;/p&gt;

&lt;p&gt;An exact alarm is about &lt;strong&gt;when Android should trigger a scheduled event&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That is important for something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Remind me at 3:00 PM."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But an exact alarm does not automatically guarantee that the user will see a notification at 3:00 PM.&lt;/p&gt;

&lt;p&gt;There are still other parts of the system involved.&lt;/p&gt;

&lt;p&gt;Notification permission, notification channels, Do Not Disturb, lock-screen settings, and device-specific restrictions can all affect what the user experiences.&lt;/p&gt;

&lt;p&gt;I wrote a separate explanation of this distinction here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://wumilo.app/blog/android-exact-alarms-reminders/" rel="noopener noreferrer"&gt;Understanding exact alarms and Android reminders&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The important lesson for developers is simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Precise scheduling and successful notification delivery are related, but they are not the same problem.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Battery optimization is another layer
&lt;/h2&gt;

&lt;p&gt;Android's power-management features make sense from the phone's perspective.&lt;/p&gt;

&lt;p&gt;A phone that allows every application to run freely in the background would waste battery quickly.&lt;/p&gt;

&lt;p&gt;The challenge is that a reminder application is specifically asking the operating system to do something later.&lt;/p&gt;

&lt;p&gt;That creates a tension between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;saving battery&lt;/li&gt;
&lt;li&gt;limiting background activity&lt;/li&gt;
&lt;li&gt;running scheduled work&lt;/li&gt;
&lt;li&gt;delivering time-sensitive events&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Doze and App Standby are part of Android's power-management model, while some manufacturers add their own restrictions on top.&lt;/p&gt;

&lt;p&gt;This means two phones running the same Android application can behave differently.&lt;/p&gt;

&lt;p&gt;A developer can have a reminder that works perfectly during development and still receive reports from users whose devices handle background activity more aggressively.&lt;/p&gt;

&lt;p&gt;That's why I stopped treating battery optimization as a simple "bug."&lt;/p&gt;

&lt;p&gt;It is often part of the environment in which the application is running.&lt;/p&gt;

&lt;p&gt;I documented the Android side of this separately:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://wumilo.app/blog/android-battery-optimization-reminders/" rel="noopener noreferrer"&gt;How battery optimization can delay Android reminders&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Samsung made the problem even more interesting
&lt;/h2&gt;

&lt;p&gt;Testing on one Android phone is not enough.&lt;/p&gt;

&lt;p&gt;Samsung devices have their own battery-management behavior and settings around apps that can be put to sleep.&lt;/p&gt;

&lt;p&gt;That can be especially relevant for applications that need to do something later without the user actively opening them.&lt;/p&gt;

&lt;p&gt;This was one reason I ended up separating general Android battery behavior from Samsung-specific guidance.&lt;/p&gt;

&lt;p&gt;The general Android concepts are useful everywhere.&lt;/p&gt;

&lt;p&gt;The device-specific settings are not.&lt;/p&gt;

&lt;p&gt;For developers, this is a good reminder that "Android" isn't always a single environment in practice.&lt;/p&gt;

&lt;p&gt;An application can use the same APIs while the surrounding system behavior differs between manufacturers and device configurations.&lt;/p&gt;

&lt;p&gt;For the Samsung-specific side, I keep a separate guide:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://wumilo.app/blog/samsung-sleeping-apps-reminders/" rel="noopener noreferrer"&gt;Samsung Sleeping Apps and Android Reminders&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Notifications are a separate failure point
&lt;/h2&gt;

&lt;p&gt;Another lesson was not to assume that an alarm and a notification are the same thing.&lt;/p&gt;

&lt;p&gt;Modern Android has its own notification system, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;notification permissions&lt;/li&gt;
&lt;li&gt;notification channels&lt;/li&gt;
&lt;li&gt;notification importance&lt;/li&gt;
&lt;li&gt;Do Not Disturb and other interruption controls&lt;/li&gt;
&lt;li&gt;lock-screen notification settings&lt;/li&gt;
&lt;li&gt;device-specific notification controls&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Android 13 also introduced the &lt;code&gt;POST_NOTIFICATIONS&lt;/code&gt; runtime permission for many apps.&lt;/p&gt;

&lt;p&gt;So when someone says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"My reminder didn't show."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There are several questions worth asking.&lt;/p&gt;

&lt;p&gt;Did the scheduled event happen?&lt;/p&gt;

&lt;p&gt;Did the application handle it?&lt;/p&gt;

&lt;p&gt;Was a notification created?&lt;/p&gt;

&lt;p&gt;Was the notification channel enabled?&lt;/p&gt;

&lt;p&gt;Does the app have notification permission?&lt;/p&gt;

&lt;p&gt;Was the phone suppressing or hiding the notification?&lt;/p&gt;

&lt;p&gt;Those questions lead to much better debugging than simply checking whether the reminder was saved.&lt;/p&gt;

&lt;h2&gt;
  
  
  Time zones turned out to be a product problem
&lt;/h2&gt;

&lt;p&gt;Time zones were another area where the technical details quickly became product decisions.&lt;/p&gt;

&lt;p&gt;Suppose someone creates a reminder for 9:00 AM and then travels somewhere in a different time zone.&lt;/p&gt;

&lt;p&gt;What should happen?&lt;/p&gt;

&lt;p&gt;There isn't one universally correct answer.&lt;/p&gt;

&lt;p&gt;A reminder can represent a particular instant in time, or it can represent a local clock time that should follow the user.&lt;/p&gt;

&lt;p&gt;Those are different concepts.&lt;/p&gt;

&lt;p&gt;For a task application, the expected behavior matters more than simply converting a timestamp.&lt;/p&gt;

&lt;p&gt;This is why time-zone handling needs to be considered part of the reminder model, not just something added to date formatting later.&lt;/p&gt;

&lt;p&gt;I ended up documenting the behavior separately because it is easy to overlook until users actually travel:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://wumilo.app/blog/android-reminders-time-zones/" rel="noopener noreferrer"&gt;Android Reminders and Time Zones&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Restarting the phone is an important test
&lt;/h2&gt;

&lt;p&gt;One of the simplest tests is also one of the easiest to forget.&lt;/p&gt;

&lt;p&gt;Create a reminder.&lt;/p&gt;

&lt;p&gt;Restart the phone.&lt;/p&gt;

&lt;p&gt;Wait for the reminder.&lt;/p&gt;

&lt;p&gt;It sounds obvious, but rebooting changes the lifecycle of the application and the Android environment.&lt;/p&gt;

&lt;p&gt;For a reminder app, I also want to think about scenarios such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the app hasn't been opened for a while&lt;/li&gt;
&lt;li&gt;the screen is locked&lt;/li&gt;
&lt;li&gt;the device is idle&lt;/li&gt;
&lt;li&gt;battery-saving features are active&lt;/li&gt;
&lt;li&gt;notifications have been restricted&lt;/li&gt;
&lt;li&gt;the device has been restarted&lt;/li&gt;
&lt;li&gt;the user changes time zones&lt;/li&gt;
&lt;li&gt;the user changes notification settings&lt;/li&gt;
&lt;li&gt;the reminder is scheduled far into the future&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A reminder system isn't really finished when it works immediately after pressing "Save."&lt;/p&gt;

&lt;p&gt;It needs to work when the application isn't currently in front of the user.&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing the whole delivery chain
&lt;/h2&gt;

&lt;p&gt;This changed how I think about testing reminder features.&lt;/p&gt;

&lt;p&gt;A unit test can tell me that a reminder time was calculated correctly.&lt;/p&gt;

&lt;p&gt;It cannot fully reproduce what happens when Android, the device manufacturer, battery management, and notification settings all get involved.&lt;/p&gt;

&lt;p&gt;So I find it useful to think about testing in layers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Application layer
&lt;/h3&gt;

&lt;p&gt;Does the task store the correct reminder information?&lt;/p&gt;

&lt;p&gt;Does editing or deleting the task update the scheduled reminder correctly?&lt;/p&gt;

&lt;h3&gt;
  
  
  Scheduling layer
&lt;/h3&gt;

&lt;p&gt;Was the system event scheduled for the expected time?&lt;/p&gt;

&lt;p&gt;What happens when the reminder is changed?&lt;/p&gt;

&lt;p&gt;What happens when it is deleted?&lt;/p&gt;

&lt;h3&gt;
  
  
  Device layer
&lt;/h3&gt;

&lt;p&gt;What happens during idle?&lt;/p&gt;

&lt;p&gt;What happens after reboot?&lt;/p&gt;

&lt;p&gt;What happens when battery restrictions are enabled?&lt;/p&gt;

&lt;h3&gt;
  
  
  Notification layer
&lt;/h3&gt;

&lt;p&gt;Does the notification appear?&lt;/p&gt;

&lt;p&gt;Is the notification channel enabled?&lt;/p&gt;

&lt;p&gt;What happens when notification permission is denied?&lt;/p&gt;

&lt;h3&gt;
  
  
  Time layer
&lt;/h3&gt;

&lt;p&gt;What happens when the device time zone changes?&lt;/p&gt;

&lt;p&gt;What happens when daylight-saving rules are involved?&lt;/p&gt;

&lt;p&gt;The more layers I tested, the more obvious it became that "the reminder code works" isn't the same as "the reminder feature works."&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't solve everything by telling users to disable battery optimization
&lt;/h2&gt;

&lt;p&gt;There is also a temptation to make troubleshooting simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Disable every battery restriction."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That can sometimes make a particular problem disappear, but it isn't a great universal solution.&lt;/p&gt;

&lt;p&gt;Battery management exists for a reason.&lt;/p&gt;

&lt;p&gt;Users shouldn't have to turn their phone into a permanently unrestricted environment just to use a task app.&lt;/p&gt;

&lt;p&gt;A better approach is to understand which restriction is actually relevant, explain what it can affect, and give users targeted guidance when necessary.&lt;/p&gt;

&lt;p&gt;That also makes support documentation more useful.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Android is killing the app."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can explain what the relevant Android or manufacturer setting does and why changing it may help.&lt;/p&gt;

&lt;h2&gt;
  
  
  The biggest lesson: reliability is partly a UX problem
&lt;/h2&gt;

&lt;p&gt;The most interesting thing I learned is that reminder reliability isn't purely an engineering problem.&lt;/p&gt;

&lt;p&gt;It is also a communication problem.&lt;/p&gt;

&lt;p&gt;The user doesn't care which Android subsystem caused the failure.&lt;/p&gt;

&lt;p&gt;They care that they asked their phone to remind them about something and whether they can trust it.&lt;/p&gt;

&lt;p&gt;That means a reminder app needs more than scheduling code.&lt;/p&gt;

&lt;p&gt;It needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sensible defaults&lt;/li&gt;
&lt;li&gt;predictable behavior&lt;/li&gt;
&lt;li&gt;useful diagnostics&lt;/li&gt;
&lt;li&gt;clear settings&lt;/li&gt;
&lt;li&gt;good testing&lt;/li&gt;
&lt;li&gt;honest limitations&lt;/li&gt;
&lt;li&gt;troubleshooting guidance that matches the actual device&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The more complicated the operating system becomes, the more important that last part gets.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would do differently on a new reminder project
&lt;/h2&gt;

&lt;p&gt;If I were starting another reminder application today, I would think about reliability much earlier.&lt;/p&gt;

&lt;p&gt;I'd define the reminder lifecycle before implementing the UI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create
  ↓
Persist
  ↓
Schedule
  ↓
Survive lifecycle changes
  ↓
Trigger
  ↓
Notify
  ↓
Verify / troubleshoot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I'd also test on more than one Android device and treat manufacturer-specific behavior as something to investigate rather than something to assume away.&lt;/p&gt;

&lt;p&gt;Most importantly, I'd avoid designing the system around the assumption that one Android API controls the entire experience.&lt;/p&gt;

&lt;p&gt;It doesn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical checklist for developers
&lt;/h2&gt;

&lt;p&gt;Before calling a reminder feature "done," I'd want to be able to answer these questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the reminder stored reliably?&lt;/li&gt;
&lt;li&gt;Is the scheduled time calculated correctly?&lt;/li&gt;
&lt;li&gt;Does the scheduling mechanism match the precision the feature requires?&lt;/li&gt;
&lt;li&gt;What happens when the device is idle?&lt;/li&gt;
&lt;li&gt;What happens after a reboot?&lt;/li&gt;
&lt;li&gt;What happens under battery restrictions?&lt;/li&gt;
&lt;li&gt;What happens on manufacturer-customized Android versions?&lt;/li&gt;
&lt;li&gt;Does the app have the notification access it needs?&lt;/li&gt;
&lt;li&gt;Are notification channels configured correctly?&lt;/li&gt;
&lt;li&gt;What happens when notifications are suppressed?&lt;/li&gt;
&lt;li&gt;What happens when the user changes time zones?&lt;/li&gt;
&lt;li&gt;Can users understand what to check when something goes wrong?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If several of those answers are unknown, the reminder system probably isn't finished yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final takeaway
&lt;/h2&gt;

&lt;p&gt;Building reliable Android reminders changed my mental model of the feature.&lt;/p&gt;

&lt;p&gt;I started with something that looked simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Schedule something for later.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I ended up with something closer to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Store the user's intention
        ↓
Schedule it at the right time
        ↓
Work within Android's power-management model
        ↓
Handle the device lifecycle
        ↓
Trigger the event
        ↓
Deliver a notification
        ↓
Make the result visible to the user
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is a much bigger system.&lt;/p&gt;

&lt;p&gt;And that is probably the most useful lesson I've taken from building Wumilo:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When a mobile feature depends on something happening later, don't test only whether you can schedule it. Test whether the entire chain can deliver it.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>android</category>
      <category>mobile</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I’ve Been Building Money For My Beer Since 2019. Here’s What I’ve Learned</title>
      <dc:creator>Clean Labs</dc:creator>
      <pubDate>Mon, 21 Sep 2026 22:59:41 +0000</pubDate>
      <link>https://dev.to/cleanlabs/ive-been-building-money-for-my-beer-since-2019-heres-what-ive-learned-3b1</link>
      <guid>https://dev.to/cleanlabs/ive-been-building-money-for-my-beer-since-2019-heres-what-ive-learned-3b1</guid>
      <description>&lt;p&gt;In September 2019, I started a website with a pretty straightforward idea.&lt;/p&gt;

&lt;p&gt;I wanted to find legitimate ways to make a little extra money online.&lt;/p&gt;

&lt;p&gt;I called it &lt;strong&gt;Money For My Beer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The name was intentionally a little silly. The idea wasn't to get rich. It was about finding practical opportunities that could give you a bit of extra breathing room. Maybe enough for dinner, a weekend trip, a hobby, or, yes, a cold beer after a long week.&lt;/p&gt;

&lt;p&gt;Six years later, the site has become something quite different from what I originally imagined.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.moneyformybeer.com/" rel="noopener noreferrer"&gt;Money For My Beer&lt;/a&gt; is still about money and side hustles, but it has gradually grown into a place where I research and write about technology, business, SEO, security, reviews, travel, gardening, beer, and practical how-to topics.&lt;/p&gt;

&lt;p&gt;And because I'm a developer and technical architect by profession, I’ve realized that running the website itself has become almost as interesting to me as writing for it.&lt;/p&gt;

&lt;h2&gt;
  
  
  From a Side-Hustle Blog to Something Bigger
&lt;/h2&gt;

&lt;p&gt;The original concept was simple.&lt;/p&gt;

&lt;p&gt;Find an opportunity.&lt;/p&gt;

&lt;p&gt;Try to understand it.&lt;/p&gt;

&lt;p&gt;Explain it.&lt;/p&gt;

&lt;p&gt;Help someone decide whether it might actually be worth their time.&lt;/p&gt;

&lt;p&gt;That philosophy is still there, but my interests expanded.&lt;/p&gt;

&lt;p&gt;I started writing about things I was already curious about. Technology. Websites. SEO. Security. Business ideas. Practical problems. Things I had learned myself. Things I wanted to understand better.&lt;/p&gt;

&lt;p&gt;Eventually, Money For My Beer became less about one narrow topic and more about &lt;strong&gt;useful information from the perspective of someone who likes figuring things out&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That change wasn't planned as some grand content strategy.&lt;/p&gt;

&lt;p&gt;It happened naturally.&lt;/p&gt;

&lt;p&gt;And I think that's one of the most interesting things about running a website for years. You can start with one idea and discover that the project becomes something completely different along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  I'm Not an Expert on Everything
&lt;/h2&gt;

&lt;p&gt;One thing I've become more conscious of over the years is the difference between writing about something and actually being an expert in it.&lt;/p&gt;

&lt;p&gt;I'm a technical architect. I work with software, apps, websites, and digital systems. Those are areas where I have professional experience.&lt;/p&gt;

&lt;p&gt;That doesn't mean I automatically know everything about investing, taxes, cybersecurity, gardening, travel, or every other subject that might appear on the site.&lt;/p&gt;

&lt;p&gt;So my role is often less about saying, "I'm the expert," and more about saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Here's what I found. Here's what the reliable sources say. Here's how I understand it. And here's what you should probably verify for yourself.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For topics where accuracy matters, I try to use authoritative sources, distinguish facts from opinions, and update articles when information changes.&lt;/p&gt;

&lt;p&gt;That's especially important when you're publishing anything involving money, security, products, services, or technology.&lt;/p&gt;

&lt;h2&gt;
  
  
  SEO Changed How I Think About Content
&lt;/h2&gt;

&lt;p&gt;Running Money For My Beer has also given me a completely different appreciation for SEO.&lt;/p&gt;

&lt;p&gt;It's one thing to read an SEO guide.&lt;/p&gt;

&lt;p&gt;It's another thing to publish hundreds of pages and then watch how real people discover them.&lt;/p&gt;

&lt;p&gt;I spend a lot of time looking at Google Search Console, search queries, impressions, clicks, click-through rates, indexing, internal links, titles, descriptions, and the overall structure of the website.&lt;/p&gt;

&lt;p&gt;Google's own documentation emphasizes creating helpful, reliable, people-first content rather than producing pages primarily to manipulate search rankings.&lt;/p&gt;

&lt;p&gt;That's something I've increasingly tried to take seriously.&lt;/p&gt;

&lt;p&gt;Search Console is particularly useful because it lets me see what people actually search for and which pages Google is showing them.&lt;/p&gt;

&lt;p&gt;And sometimes the search data tells you something completely different from what you expected.&lt;/p&gt;

&lt;p&gt;That's one of my favorite parts.&lt;/p&gt;

&lt;p&gt;You publish something thinking people will find it through one topic, and months later you discover that they're finding it through a completely different question.&lt;/p&gt;

&lt;p&gt;That becomes another opportunity to improve the article.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hard Part Isn't Always Writing
&lt;/h2&gt;

&lt;p&gt;Writing an article is relatively straightforward.&lt;/p&gt;

&lt;p&gt;Maintaining a website isn't.&lt;/p&gt;

&lt;p&gt;Over time, you accumulate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;old articles&lt;/li&gt;
&lt;li&gt;outdated information&lt;/li&gt;
&lt;li&gt;weak pages&lt;/li&gt;
&lt;li&gt;duplicate topics&lt;/li&gt;
&lt;li&gt;messy categories&lt;/li&gt;
&lt;li&gt;broken links&lt;/li&gt;
&lt;li&gt;unnecessary pages&lt;/li&gt;
&lt;li&gt;outdated internal links&lt;/li&gt;
&lt;li&gt;URLs that no longer make sense&lt;/li&gt;
&lt;li&gt;content that seemed useful five years ago but isn't anymore&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eventually, you have to decide what deserves to stay.&lt;/p&gt;

&lt;p&gt;I've spent a significant amount of time cleaning up Money For My Beer rather than simply publishing more.&lt;/p&gt;

&lt;p&gt;I've reorganized categories, improved internal linking, rewritten older content, updated important pages, reviewed site policies, and tried to make the overall website easier to understand.&lt;/p&gt;

&lt;p&gt;It's not particularly glamorous work.&lt;/p&gt;

&lt;p&gt;There isn't a screenshot you can post on Twitter showing how exciting a better category structure is.&lt;/p&gt;

&lt;p&gt;But it's part of building a website that you actually intend to keep around.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Website Is Also a Technical Project
&lt;/h2&gt;

&lt;p&gt;Because I come from a development background, I naturally end up looking at the site as more than just a collection of articles.&lt;/p&gt;

&lt;p&gt;There is the WordPress side.&lt;/p&gt;

&lt;p&gt;There is performance.&lt;/p&gt;

&lt;p&gt;There is indexing.&lt;/p&gt;

&lt;p&gt;There are redirects and canonical URLs.&lt;/p&gt;

&lt;p&gt;There is HTTPS and security.&lt;/p&gt;

&lt;p&gt;There are structured pages, categories, internal links, metadata, and the XML sitemap.&lt;/p&gt;

&lt;p&gt;There is also the slightly less glamorous part of making sure everything still works after changing something.&lt;/p&gt;

&lt;p&gt;A content website might look simple from the outside.&lt;/p&gt;

&lt;p&gt;Underneath, there are plenty of systems to maintain.&lt;/p&gt;

&lt;p&gt;And that's one reason I still enjoy working on it.&lt;/p&gt;

&lt;p&gt;It gives me a place to experiment with ideas outside of my day job.&lt;/p&gt;

&lt;h2&gt;
  
  
  I Also Don't Want It to Become a Content Factory
&lt;/h2&gt;

&lt;p&gt;This is probably one of the biggest lessons I've learned.&lt;/p&gt;

&lt;p&gt;It is incredibly easy to look at SEO and think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I need more articles.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then you publish another article.&lt;/p&gt;

&lt;p&gt;Then another.&lt;/p&gt;

&lt;p&gt;Then another.&lt;/p&gt;

&lt;p&gt;Eventually you have hundreds of pages, but not necessarily a better website.&lt;/p&gt;

&lt;p&gt;I've become much more interested in making existing content better.&lt;/p&gt;

&lt;p&gt;Can an old article answer the question more clearly?&lt;/p&gt;

&lt;p&gt;Can two related pages be connected with better internal links?&lt;/p&gt;

&lt;p&gt;Can I remove something outdated?&lt;/p&gt;

&lt;p&gt;Can I explain a complicated concept in simpler language?&lt;/p&gt;

&lt;p&gt;Can I add useful context instead of just repeating information that already exists everywhere else?&lt;/p&gt;

&lt;p&gt;Those questions are much more interesting to me than simply trying to hit a publishing quota.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the Name Still Works
&lt;/h2&gt;

&lt;p&gt;The funny thing is that the name &lt;strong&gt;Money For My Beer&lt;/strong&gt; still makes sense to me.&lt;/p&gt;

&lt;p&gt;Not because the website is literally about beer money anymore.&lt;/p&gt;

&lt;p&gt;The beer is really the metaphor.&lt;/p&gt;

&lt;p&gt;It's about finding useful opportunities, learning something, making something, or solving a problem that makes everyday life a little better.&lt;/p&gt;

&lt;p&gt;Sometimes that means learning about a side hustle.&lt;/p&gt;

&lt;p&gt;Sometimes it's understanding a technology problem.&lt;/p&gt;

&lt;p&gt;Sometimes it's figuring out SEO.&lt;/p&gt;

&lt;p&gt;Sometimes it's researching a product.&lt;/p&gt;

&lt;p&gt;Sometimes it's just reading about something interesting.&lt;/p&gt;

&lt;p&gt;The subject can change.&lt;/p&gt;

&lt;p&gt;The underlying idea doesn't have to.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building Something That Outlives the Original Idea
&lt;/h2&gt;

&lt;p&gt;When I started Money For My Beer in 2019, I wasn't trying to build a huge media company.&lt;/p&gt;

&lt;p&gt;I wanted a place to publish things I found useful.&lt;/p&gt;

&lt;p&gt;Years later, I'm still doing that.&lt;/p&gt;

&lt;p&gt;The website has changed.&lt;/p&gt;

&lt;p&gt;The topics have changed.&lt;/p&gt;

&lt;p&gt;My approach to SEO has changed.&lt;/p&gt;

&lt;p&gt;My approach to research has changed.&lt;/p&gt;

&lt;p&gt;Even the way I think about what makes a good article has changed.&lt;/p&gt;

&lt;p&gt;But the core reason I keep working on it is surprisingly similar to when I started.&lt;/p&gt;

&lt;p&gt;I like building things.&lt;/p&gt;

&lt;p&gt;I like researching things.&lt;/p&gt;

&lt;p&gt;I like figuring out how things work.&lt;/p&gt;

&lt;p&gt;And I like taking something complicated and turning it into something another person can actually understand.&lt;/p&gt;

&lt;p&gt;That's probably the most accurate description of Money For My Beer today.&lt;/p&gt;

&lt;p&gt;It isn't just a blog about making extra money.&lt;/p&gt;

&lt;p&gt;It's a long-running side project where I get to follow my curiosity and share what I learn.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;I don't have some giant five-year publishing plan.&lt;/p&gt;

&lt;p&gt;I'll probably keep improving the site, cleaning up older content, experimenting with SEO, writing about things that interest me, and occasionally following a completely unexpected rabbit hole.&lt;/p&gt;

&lt;p&gt;That's part of the fun.&lt;/p&gt;

&lt;p&gt;For now, you can see what I'm working on at &lt;a href="https://www.moneyformybeer.com/" rel="noopener noreferrer"&gt;Money For My Beer&lt;/a&gt;, read &lt;a href="https://www.moneyformybeer.com/about-us/" rel="noopener noreferrer"&gt;the story behind the site&lt;/a&gt;, or explore some of the newer guides and experiments.&lt;/p&gt;

&lt;p&gt;And if you're also building a small website, side project, blog, or weird little internet business of your own, I'd genuinely be interested in hearing about it.&lt;/p&gt;

&lt;p&gt;Sometimes the projects that start as "I'll just try this" end up sticking around much longer than expected.&lt;/p&gt;

&lt;p&gt;Cheers.&lt;br&gt;
&lt;strong&gt;Ryan&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>wordpress</category>
      <category>seo</category>
      <category>indiehacker</category>
    </item>
    <item>
      <title>I Built a To-Do App Because I Was Tired of To-Do Apps</title>
      <dc:creator>Clean Labs</dc:creator>
      <pubDate>Fri, 11 Sep 2026 14:17:10 +0000</pubDate>
      <link>https://dev.to/cleanlabs/i-built-a-to-do-app-because-i-was-tired-of-to-do-apps-80</link>
      <guid>https://dev.to/cleanlabs/i-built-a-to-do-app-because-i-was-tired-of-to-do-apps-80</guid>
      <description>&lt;p&gt;I have a complicated relationship with to-do apps.&lt;/p&gt;

&lt;p&gt;I love trying them.&lt;/p&gt;

&lt;p&gt;I love reading about productivity systems.&lt;/p&gt;

&lt;p&gt;I love seeing beautifully designed task lists, calendars, tags, projects, priorities, integrations, dashboards, and all the other things that promise to help me become more organized.&lt;/p&gt;

&lt;p&gt;But eventually, something always bothered me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The task manager itself started becoming a task.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create an account.&lt;/p&gt;

&lt;p&gt;Create a project.&lt;/p&gt;

&lt;p&gt;Create a list.&lt;/p&gt;

&lt;p&gt;Choose a workflow.&lt;/p&gt;

&lt;p&gt;Configure your settings.&lt;/p&gt;

&lt;p&gt;Connect your calendar.&lt;/p&gt;

&lt;p&gt;Learn how everything works.&lt;/p&gt;

&lt;p&gt;And then, finally, add the thing you actually wanted to remember.&lt;/p&gt;

&lt;p&gt;At some point I thought:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What if a task manager just let me manage my tasks?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So I built one.&lt;/p&gt;

&lt;p&gt;It's called &lt;a href="https://wumilo.app/" rel="noopener noreferrer"&gt;Wumilo&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your tasks. Your focus. Your phone.
&lt;/h2&gt;

&lt;p&gt;Wumilo is an Android task manager built around a fairly simple idea:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A productivity app should help you finish things, not give you another system to maintain.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When you open Wumilo, you can start typing immediately.&lt;/p&gt;

&lt;p&gt;No account setup.&lt;/p&gt;

&lt;p&gt;No onboarding questionnaire.&lt;/p&gt;

&lt;p&gt;No complicated workspace configuration.&lt;/p&gt;

&lt;p&gt;Just add a task.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Call Mom tomorrow at 3pm&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Instead of making you fill out several fields, Wumilo can understand the task and turn it into something with the appropriate date and time.&lt;/p&gt;

&lt;p&gt;You can also add tasks using your voice.&lt;/p&gt;

&lt;p&gt;The goal isn't to make task management smarter for the sake of being smarter.&lt;/p&gt;

&lt;p&gt;It's to make getting something out of your head and into your task list feel almost effortless.&lt;/p&gt;

&lt;h2&gt;
  
  
  I Didn't Want to Build Another Productivity System
&lt;/h2&gt;

&lt;p&gt;There are already countless excellent task managers.&lt;/p&gt;

&lt;p&gt;Some are incredibly powerful.&lt;/p&gt;

&lt;p&gt;Some are designed around projects.&lt;/p&gt;

&lt;p&gt;Some are built around calendars.&lt;/p&gt;

&lt;p&gt;Some are designed for teams.&lt;/p&gt;

&lt;p&gt;Some give you an almost unlimited number of ways to organize your life.&lt;/p&gt;

&lt;p&gt;That's great.&lt;/p&gt;

&lt;p&gt;But I wanted to build something different.&lt;/p&gt;

&lt;p&gt;The question I kept coming back to was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What is the minimum amount of friction between thinking about something and getting it into your task list?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's the experience I wanted to optimize.&lt;/p&gt;

&lt;p&gt;Of course, Wumilo still has the features you'd expect from a proper task manager:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subtasks&lt;/li&gt;
&lt;li&gt;Notes&lt;/li&gt;
&lt;li&gt;Priorities&lt;/li&gt;
&lt;li&gt;Categories&lt;/li&gt;
&lt;li&gt;Reminders&lt;/li&gt;
&lt;li&gt;Recurring tasks&lt;/li&gt;
&lt;li&gt;Widgets&lt;/li&gt;
&lt;li&gt;Voice input&lt;/li&gt;
&lt;li&gt;Progress tracking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But features shouldn't become the experience.&lt;/p&gt;

&lt;p&gt;The basic interaction should still be:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open the app → add the task → get on with your day.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Focus Mode
&lt;/h2&gt;

&lt;p&gt;One of the features I care about most is Focus Mode.&lt;/p&gt;

&lt;p&gt;A normal task list can quickly become overwhelming.&lt;/p&gt;

&lt;p&gt;You open the app and see twenty things.&lt;/p&gt;

&lt;p&gt;Then thirty.&lt;/p&gt;

&lt;p&gt;Then fifty.&lt;/p&gt;

&lt;p&gt;Everything feels important because everything is sitting there looking at you.&lt;/p&gt;

&lt;p&gt;So instead of constantly showing the entire backlog, Focus Mode tries to answer a much simpler question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What should I finish right now?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It puts one important task in focus instead of asking you to mentally process your entire list.&lt;/p&gt;

&lt;p&gt;It's a small change, but I think there's something important about it.&lt;/p&gt;

&lt;p&gt;A task manager shouldn't only help you remember what you need to do.&lt;/p&gt;

&lt;p&gt;It should also help you decide what deserves your attention &lt;strong&gt;right now&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy Wasn't an Afterthought
&lt;/h2&gt;

&lt;p&gt;Another thing I wanted from the beginning was privacy.&lt;/p&gt;

&lt;p&gt;A task list can contain surprisingly personal information.&lt;/p&gt;

&lt;p&gt;Things you need to remember.&lt;/p&gt;

&lt;p&gt;People you need to call.&lt;/p&gt;

&lt;p&gt;Bills you need to pay.&lt;/p&gt;

&lt;p&gt;Appointments.&lt;/p&gt;

&lt;p&gt;Ideas.&lt;/p&gt;

&lt;p&gt;Work.&lt;/p&gt;

&lt;p&gt;Personal plans.&lt;/p&gt;

&lt;p&gt;I kept asking myself:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Does this data actually need to leave the phone?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If the answer is no, why should it?&lt;/p&gt;

&lt;p&gt;Wumilo is designed to work without requiring an account or cloud service just to manage your tasks.&lt;/p&gt;

&lt;p&gt;Your task manager should feel like something that belongs to you and your phone, rather than another service you have to maintain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reminders Are More Complicated Than They Look
&lt;/h2&gt;

&lt;p&gt;This was one of the biggest surprises for me.&lt;/p&gt;

&lt;p&gt;A reminder sounds simple.&lt;/p&gt;

&lt;p&gt;You create a task.&lt;/p&gt;

&lt;p&gt;You choose a time.&lt;/p&gt;

&lt;p&gt;The phone reminds you.&lt;/p&gt;

&lt;p&gt;Easy, right?&lt;/p&gt;

&lt;p&gt;Not quite.&lt;/p&gt;

&lt;p&gt;On Android, reminders can involve alarms, permissions, notifications, battery optimization, manufacturer-specific behavior, Android version differences, and operating-system decisions that can affect how reliably something fires.&lt;/p&gt;

&lt;p&gt;Then you start testing on actual devices.&lt;/p&gt;

&lt;p&gt;And suddenly, something that seemed like a tiny feature becomes an entire engineering problem.&lt;/p&gt;

&lt;p&gt;I've had users report reminders arriving late or behaving differently on their particular devices.&lt;/p&gt;

&lt;p&gt;That's when you realize that building an app isn't just about making something work on your phone.&lt;/p&gt;

&lt;p&gt;It's about making it work on &lt;strong&gt;someone else's phone&lt;/strong&gt; too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building for Real Devices Changes Everything
&lt;/h2&gt;

&lt;p&gt;One of the biggest lessons I've learned building Wumilo is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;You don't really know how your app behaves until other people use it.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;An emulator can only tell you so much.&lt;/p&gt;

&lt;p&gt;Your own phone can only tell you so much.&lt;/p&gt;

&lt;p&gt;Automated tests can verify specific behavior.&lt;/p&gt;

&lt;p&gt;But real users will find things you never expected.&lt;/p&gt;

&lt;p&gt;Different manufacturers have different battery-management systems.&lt;/p&gt;

&lt;p&gt;Different Android versions behave differently.&lt;/p&gt;

&lt;p&gt;Different settings affect notifications.&lt;/p&gt;

&lt;p&gt;Some devices aggressively optimize battery usage.&lt;/p&gt;

&lt;p&gt;Others handle background work differently.&lt;/p&gt;

&lt;p&gt;And sometimes someone sends you a message saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The reminder didn't fire."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now you're investigating Android alarms at midnight.&lt;/p&gt;

&lt;p&gt;That's indie development.&lt;/p&gt;

&lt;p&gt;You build something because you think you've covered everything.&lt;/p&gt;

&lt;p&gt;Then someone with a completely different device shows you the thing you missed.&lt;/p&gt;

&lt;p&gt;And honestly, that's one of the most useful parts of the process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Small Feedback Can Change Big Things
&lt;/h2&gt;

&lt;p&gt;One of my favorite parts of building Wumilo has been talking directly with users.&lt;/p&gt;

&lt;p&gt;Because I'm an indie developer, feedback doesn't have to pass through a product manager, a support department, an analytics dashboard, and three meetings before reaching me.&lt;/p&gt;

&lt;p&gt;Someone can simply tell me:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I think this would be better if..."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And I can actually think about it.&lt;/p&gt;

&lt;p&gt;Some of the improvements I'm working on come directly from these conversations.&lt;/p&gt;

&lt;p&gt;Better snooze options.&lt;/p&gt;

&lt;p&gt;Clearer reminder indicators.&lt;/p&gt;

&lt;p&gt;Better recurring-task interactions.&lt;/p&gt;

&lt;p&gt;Small changes to make certain screens feel less awkward.&lt;/p&gt;

&lt;p&gt;None of these necessarily sound like huge features.&lt;/p&gt;

&lt;p&gt;But when you're building an app used every day, those little details matter.&lt;/p&gt;

&lt;p&gt;A product can technically work and still feel slightly annoying.&lt;/p&gt;

&lt;p&gt;Those tiny moments of friction are often where the best improvements are hiding.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Android?
&lt;/h2&gt;

&lt;p&gt;I chose to build Wumilo for Android partly because Android gives you a lot of room to build experiences that feel integrated with the phone.&lt;/p&gt;

&lt;p&gt;Widgets.&lt;/p&gt;

&lt;p&gt;Notifications.&lt;/p&gt;

&lt;p&gt;Alarms.&lt;/p&gt;

&lt;p&gt;Voice input.&lt;/p&gt;

&lt;p&gt;Quick interactions.&lt;/p&gt;

&lt;p&gt;Different screen sizes.&lt;/p&gt;

&lt;p&gt;Different device configurations.&lt;/p&gt;

&lt;p&gt;There's also a lot of complexity.&lt;/p&gt;

&lt;p&gt;That's part of what makes it interesting.&lt;/p&gt;

&lt;p&gt;I like the challenge of making an app feel like it belongs on the device rather than simply being a website placed inside an app.&lt;/p&gt;

&lt;p&gt;A task manager is something you might open dozens of times.&lt;/p&gt;

&lt;p&gt;It should feel fast.&lt;/p&gt;

&lt;p&gt;It should feel familiar.&lt;/p&gt;

&lt;p&gt;It should get out of your way.&lt;/p&gt;

&lt;h2&gt;
  
  
  I'm Building Wumilo as an Indie Developer
&lt;/h2&gt;

&lt;p&gt;Wumilo isn't being built by a huge product team.&lt;/p&gt;

&lt;p&gt;It's something I started because I wanted a task manager that worked the way I wanted.&lt;/p&gt;

&lt;p&gt;That also means development isn't always perfectly predictable.&lt;/p&gt;

&lt;p&gt;Sometimes I have a lot of time to work on it.&lt;/p&gt;

&lt;p&gt;Sometimes I don't.&lt;/p&gt;

&lt;p&gt;Sometimes an update takes longer than expected.&lt;/p&gt;

&lt;p&gt;And sometimes a feature I really want has to wait.&lt;/p&gt;

&lt;p&gt;One question helps me make those decisions:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Would this make the app better for someone who just wants to get things done?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sometimes the answer is yes.&lt;/p&gt;

&lt;p&gt;Sometimes the answer is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"That's a cool feature, but it doesn't belong here."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And saying no to features can be much harder than building them.&lt;/p&gt;

&lt;p&gt;Especially when you're the developer, designer, product manager, tester, and user all at the same time.&lt;/p&gt;

&lt;h2&gt;
  
  
  There Is Still a Lot to Improve
&lt;/h2&gt;

&lt;p&gt;Wumilo is nowhere near finished.&lt;/p&gt;

&lt;p&gt;I don't think a productivity app ever really is.&lt;/p&gt;

&lt;p&gt;There are still things I want to improve around reminders, Focus Mode, widgets, recurring tasks, and the general experience of managing tasks throughout the day.&lt;/p&gt;

&lt;p&gt;And I'm sure users will find things I haven't even thought about yet.&lt;/p&gt;

&lt;p&gt;That's actually something I'm looking forward to.&lt;/p&gt;

&lt;p&gt;When someone says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"This part feels weird."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's useful feedback.&lt;/p&gt;

&lt;p&gt;It points to something that might not show up in analytics.&lt;/p&gt;

&lt;p&gt;There is a big difference between an app that &lt;strong&gt;works&lt;/strong&gt; and an app that &lt;strong&gt;feels good to use&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Usually, that difference isn't one giant feature.&lt;/p&gt;

&lt;p&gt;It's dozens of tiny details.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bigger Idea
&lt;/h2&gt;

&lt;p&gt;I didn't build Wumilo because I thought the world desperately needed another to-do app.&lt;/p&gt;

&lt;p&gt;There are already plenty of them.&lt;/p&gt;

&lt;p&gt;I built it because I think productivity software can sometimes forget what it's supposed to accomplish.&lt;/p&gt;

&lt;p&gt;The goal isn't to build the perfect task-management system.&lt;/p&gt;

&lt;p&gt;The goal isn't to have the most features.&lt;/p&gt;

&lt;p&gt;The goal isn't to spend an hour organizing your productivity system every Sunday.&lt;/p&gt;

&lt;p&gt;The goal is much simpler.&lt;/p&gt;

&lt;p&gt;Remember what matters.&lt;/p&gt;

&lt;p&gt;Decide what to do next.&lt;/p&gt;

&lt;p&gt;And then actually do it.&lt;/p&gt;

&lt;p&gt;That's what I'm trying to build with Wumilo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your tasks. Your focus. Your phone.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>android</category>
      <category>productivity</category>
      <category>programming</category>
      <category>react</category>
    </item>
  </channel>
</rss>
