Clean and Simple Meditation
Latest Blog Posts
My most recent blog posts. Head over to my blog to see all posts and filter them by topic.
Black Friday Sale: Save 50% on Zenitizer+ Yearly
Friday, 24 November, 2023
Hey everyone! As part of the Black Friday Indie App Sales, I’m currently offering Zenitizer+ yearly with a 50% discount. Note: the discount is valid for new and for existing customers 😉
Claim the discount by using the code
BLACKFRIDAY2023 inside the app or simply by tapping this link.
Over 400 amazing indie apps with great discounts are participating in the sale so I would highly recommend you to browse the whole list. I personally already found a couple of gems that I am happy to have discovered there 🤓
Zenitizer Is Now on the App Store
Thursday, 25 May, 2023
After months of beta testing and continual refinement, Zenitizer is now available to download on the App Store. It’s a clean and simple meditation timer that’s designed to feel at home on your Apple devices. It is focused on the core meditation timer experience with customizable interval bells, soothing soundscapes and deep OS integration and great Apple Watch support. You can find out more here.
I am incredibly grateful for all those who have helped beta test Zenitizer over the last couple months and provided valuable feedback and words of encouragement.
The Road Ahead
In order to actually ship version 1.0 I needed to push out a few features and improvements that I originally had planned for the initial release. One such feature is full iCloud sync for meditation streak data as well as custom meditation routines. I also have a number of interesting innovative ideas in mind but want to await WWDC announcements before announcing a roadmap. I’ll probably want to adopt some of the new functionality that is announced for iOS 17 so this will have to be taken into account for prioritization and planning.
If you’d like to follow along, make sure to subscribe to any of Zenitizer’s social media channels or the RSS feed for this blog! And if you have any specific feature wishes or suggestions, please don’t hesitate to let me know 😊
Guided vs. Unguided Meditations - My Journey
Tuesday, 23 May, 2023
In this article, I am sharing my own thoughts about guided and unguided meditations and a few details about my own meditation journey which led me from the former to the latter and eventually to building my own app for unguided meditations.
Start Of My Meditation Journey
After growing up in rural Germany (we’re talking really rural… population of my village being ~500, if you count the cows, that is), I moved to London (population: ~9 Million) for my first full-time job after university. Suffice it to say, it was a very exciting time of my life: both the “good kind of exciting” but I also got my fair share of the “overwhelming and stressful kind of exciting”.
I remember the day, I was sitting on a bench in Queens Park, London thinking to myself: “maybe you should try one of these meditation apps that seem to be all the rage these days. Certainly could use something to calm you down in this hectic big-city lifestyle you’ve gotten yourself into”.
So that’s what I did. I went straight on the App Store and downloaded one of the “big meditation apps” and got started with an introductory mindfulness course consisting of short, guided meditations. This was a key moment for me, because as I was continuing the course over the following weeks, I learned strategies that would help me be more present and balanced and made a notable difference in my life.
Transition To Unguided Meditations
As I kept up a semi-regular meditation practice over the years, I noticed that I naturally wanted to use guided meditations less over time. The app that I was using at the time was designed around providing a large catalogue of guided meditations and similar content but it also had a few “unguided” sessions with just interval bells or very few spoken instructions every couple minutes.
I learned to appreciate the simplicity of those but the problem is that everything about the way the app was designed tried to nudge me towards a new series of guided content while the “simple timer experience” I’ve come to appreciate felt very limited.
In Search Of An App
This is when I started looking for more simple alternatives that focus on the core timer experience instead of guided content and there certainly are a number of great options out there. However… (and I know this sounds cliché and is the start of literally every “scratch-my-own-itch I should build an app for that” story ever) none of the existing options quite worked, looked and felt the way I had envisioned them.
One thing I really liked about the “big meditation app” that I got started with is that it had the notion of a “streak” feature. This was always very motivating for me to keep up a regular practice so that’s something I was looking for in a minimal meditation timer app, too. In addition to that, while I often meditate silently these days (just using haptic notifications on my Apple Watch), I also really enjoy a calming background soundscape from time to time so backgrounds sounds was another important feature for me.
Lastly, I wanted my ideal meditation timer app to be deeply integrated with the Apple ecosystem. Storing and retrieving data from Apple Health, for example. I know some apps allow storing mindful minutes in Apple Health but will not take minutes recorded by other meditation apps into account for their own in-app streaks feature. This forces users to keep using one particular app if they want to keep up the streak - which is of course what these apps want you to do but it always felt bad to me. I felt locked-in and I did not like that.
Another area of system-integration that is extremely well-suited for meditation apps is Shortcuts support. If you know me, you’ll know that I’m a big Shortcuts fan and I certainly use Shortcuts in totally over-engineered and weird ways but for a meditation app it really makes so much sense. Just being able to ask Siri to start a meditation, for example - or automatically doing so when you wake up - or setting a scene in your smart home during a meditation - or automatically turning on the “Do not Disturb” Focus Mode… The list goes on and once you think about these opportunities it feels so incredibly limiting not to have them.
Building My Own App
Unable to find an app that ticks all the boxes and has the right look and feel for me, I arrived at the conclusion that… well: I just gotta build it myself. How hard could it be (famous last words 😅).
It’s been an ongoing project for over half a year, now. As I was also involved in freelance projects, I did not work on it 100% full time, but I definitely spent a significant chunk of my time on Zenitizer. I needed to learn all of the steps involved in building and shipping an app for the first time (basically everything except the coding part and even that involved many new learnings due to using so many frameworks and APIs for the very first time and diving much deeper into SwiftUI than I ever did before).
During that time I learned a lot and had the incredibly rewarding experience of interacting with wonderful beta testers who have given me thoughtful, constructive feedback and so many kind words of encouragement along the way.
Launch Date Confirmed 🚀
As of writing this, the app has been approved for submission on the App Store and the launch date is confirmed: May 25th 2023 - that’s just two days from now. I am very excited to finally be able to share with the world what I’ve been working on all this time and keep growing and improving Zenitizer from here (hopefully for a very long time to come).
Unguided vs. Guided Mediations - Which One Is It Now?
Well, as someone who has developed an app for unguided meditations I am - of course - biased. I personally think that spoken instructions can be a source of distraction and may result in actually being less in the present moment. On the other hand they can be a great learning resource and act as a great ritual to get into the right mindset.
Ultimately, it’s a very personal choice and I encourage you to try for yourself to see what works best for you. And you should keep evaluating this along your journey. Maybe you prefer unguided meditations right away? Or, like me, over time you learn to appreciate them and prefer them over guided meditations? Or you will simply always prefer guided meditations?
Whatever you find to be effective and enjoyable for yourself, Zenitizer will take your mindful minutes in Apple Health recorded by other apps into account (so you can use multiple meditation apps and still grow your Zenitizer streak) and even allows manually logging meditations so you could, for example, visit a guided session in your local meditation/yoga studio or watch one on YouTube and later just record 15 minutes in Zenitizer. I want you to be able to mix-and-match meditation styles, tools, techniques and apps in whichever way works best for you ❤️
Trying Zenitizer For Yourself
Streaks Feature, Updated Widgets and Core Data
Tuesday, 18 April, 2023
I just pushed a Zenitizer update to TestFlight earlier today which includes a brand-new feature that I hope to be a great source of motivation for your regular meditation practice: “Meditation Streaks”
Each day you hit your meditation goal, your streak grows. In order to keep your streak, it is sufficient to simply meditate as little as one minute a day - even if this is below your goal. While this will not increase your streak it will prevent breaking the streak. Only if you do not meditate at all on a given day the streak will be reset to 0.
With this behaviour, I was hoping to find a good compromise between motivating you to build a regular practice but without putting too much “pressure” on “achieving goals” (mindfulness meditation should be calming and not adding more stresses to your life, after all 🧘).
I’d love to know what you think about this approach and how the feature works for you personally, so please don’t hesitate to reach out and let me know!
New Streak View + Updated Widgets & Complications
The screenshot above shows the new UI elements for displaying streak progress in various forms and contexts. The “week view” is a custom SwiftUI view that can (and will in a future update) be extended to show larger time spans (e.g. one month at a time). This will allow revisiting the meditation history laid out like a calendar.
I wanted the
StreakView to have a “call for action” title like “Grow your 42 Day Streak” or “Keep Your 42 Day Streak” (unless you already reached your daily meditation goal). The week view primarily serves to see at a glance how you’ve been doing this week (+ may allow revisiting previous days’ meditation history details in the future) and there’s a small indicator of your personal record to date.
After a couple of design iterations I’m pretty happy with the result but I’m sure I’ll make tons of tweaks before Zenitizer makes it to the App Store 🙈 Please let me know if you have any suggestions or questions about the feature as well as the design!
Under The Hood & New Learnings (Core Data)
The majority of the work, however, was focussed on what is not visible: the underlying data and persistence layers! So far, all of Zenitizer’s persistence needs were covered by
NSUserDefaults as all the meditation history itself was exclusively written to and read from Apple Health.
Now in order to properly support streaks and efficiently query meditation history and streak data I needed my own on-device persistence solution and after a bit of research I decided to go with Core Data.
You can tell that the framework has its roots in the “Objective-C days” and I personally prefer Swift
structs and other value types as well as Swift’s strict handling of Optionals in favour fetching and passing around
NSManagedObject references because the former will often force you to address issues at compile time instead of (hard to find?) runtime issues you may get with
NSFetchRequests… In the end of the day though, each framework, tool or solution has its pros and cons and, all things considered, CoreData is working really well for me and I am definitely starting to embrace it… 🤓
Donny Wals’ book Practical Core Data was a fantastic resource on my journey to familiarize myself with Core Data. I bought it quite a while ago and it was just sitting in my Gumroad library because I never got around to reading it… Finally, I was forced to work my way through it and it has really helped a lot!
In addition, I would also highly recommend this Apple developer video to anyone getting started with Core Data in modern apps!
Building a ChatGPT App With the Help of ChatGPT
Thursday, 29 December, 2022
When I started prototyping Chatterbox for ChatGPT, I decided - as an experiment - to utilize ChatGPT in the process. I know, so meta, right? Here are some of my observations, thoughts and takeaways from that experiment.
I wanted to build the native UI with SwiftUI (+AppKit where necessary) and I knew I’d want to embed the actual ChatGPT website in a
WKWebView. I asked ChatGPT how to interact with HTML elements from the surrounding Swift code and learned about the
WKWebView class. This allowed me to prototype the app and start experimenting with different ideas and features.
ChatGPT as a Mentor 🧑🏫
As I was building the prototype, I continued to ask ChatGPT in order to learn about topics, I have not encountered before (while most of my SwiftUI experience was transferable to macOS, I did learn quite a few new things about AppKit in the process). In a way, ChatGPT played a role in the development of Chatterbox - it helped me learn the skills and techniques I needed to bring the app to life. When it worked, it got me there faster than searching Google and/or Stackoverflow, but I will say that, quite often, it gave results that were either slightly wrong or completely wrong and made up.
The first case is not an issue (IMO) because I only consult it for pointers on “how to get started with something” rather than copying and pasting whole blocks of code verbatim, so fixing minor issues on the fly while implementing a solution is easy enough most of the time. The problematic part is when ChatGPT gives a completely false and made up answer but does it in a way that sounds fully confident and professional. On some occasions it hallucinated completely non-existent APIs (which sounded plausible enough). There’s something particularly disappointing about that experience because I always get my hopes up about this “super convenient magical API that would be a perfect fit for my problem” 🥲
ChatGPT as a Rubber Duck 🐤
Are you familiar with the term “rubber duck debugging”? If not, you should read up on it because it is an absolutely brilliant technique! While developing Chatterbox, sometimes I would ask ChatGPT for help when encountering errors or problems. While the responses where often pretty generic and not too helpful, sometimes the mere act of formulating my question and seeing it reflected in ChatGPT’s response was enough for me to realize what the problem is 💡
Will ChatGPT become my go-to rubber duck debugging companion? No, because:
- Formulating questions in writing is tedious (I enjoy typing and think I’m pretty fast too, but just “talking to myself” is quicker)
- Anika the Radar Plushy (one of my dearest “souvenirs” from my time at Apple) would be really sad to be replaced by an AI chatbot. She’s such a loyal coding companion, never complaining and always listening to me blabbering on about all the random issues I encounter during my work ❤️
Ultimately (like many of you, I’m sure), I have come to the conclusion that ChatGPT is quite impressive and can be very useful, but it is just a tool after all - and a flawed one at that. Used as a research, learning and debugging companion (while reflecting critically about its output) it can speed things up and make you more effective. But it can also be distracting and outright confusing by “teaching you” things that don’t actually exist while sounding absolutely confident, often requiring to “manually double check with Google” after all…
It has certainly earned its place in my toolset (and is always at hand with Chatterbox’s global hot key) and I’m curious to see how it develops and how I and others will continue to find creative uses for it and ways to integrate it into our workflows. Feel free to reach out if you’d like to share any cool use cases for ChatGPT that you discovered for yourself.
New Side Project: A Native Mac App for ChatGPT
Thursday, 29 December, 2022
I’m excited to share with you a new side project that I recently launched: Chatterbox, a native macOS app that makes it easy to interact with the ChatGPT website from your desktop*
It all started when ChatGPT was released. Like many of you, I was excited to try out the new website and start chatting with the Open AI’s Chatbot. But as I was using it, I found myself frustrated by the fact that I had to stitch together multiple screenshots to share conversations with my friends. I also wanted a more convenient way to use ChatGPT on my Mac, with better OS integration and a global hotkey (kind of like “Spotlight for ChatGPT”). That’s when the idea for Chatterbox was born.
Features and Design
One of the standout features of Chatterbox is the ability to easily take screenshots of your entire conversation with a single button press or keyboard shortcut (
⌘ S). And if you want to quickly delete or export those screenshots, the in-app screenshot manager makes it a breeze with drag-and-drop functionality.
But that’s not all - Chatterbox also comes with a global hotkey (
⌥ Space, or a custom hotkey of your choice) that allows you to summon ChatGPT from anywhere, just like Spotlight. Plus, there are convenient keyboard shortcuts for all the important actions, such as
⌘ N for “New Chat.”
The app’s UI elements are fully designed to look and feel right at home on your Mac and it even includes automatic dark mode switching based on your system settings.
I’m sharing Chatterbox for free on Gumroad. If you feel like supporting the app, you can share it with your friends or on social media, or consider leaving a tip on Gumroad.
I hope you enjoy using Chatterbox as much as I enjoyed creating it. Stay tuned for more updates on this and my other projects.
The app has actually been available for over two weeks, but I have not gotten around to writing an appdate blog post for it yet 😅. I’ll try really hard to post here more regularly going forward (#newyearsresolutions 🙃)