September 6, 2023
When it comes to the summer period that is coming to an end, the work I was able to put into my apps was much less than I would have hoped for after WWDC wrapped up. The experience Riccardo Mori eloquently described in the first part of a recent blog post reflects mine as was as painful to read as it was to live: it’s been so excruciatingly hot in Northern Italy that I have been able to tackle much less than I usually do during the summer, instead devoting most on my energy to long, fun and very instagrammable walks with Milla early in the morning, before the sun took away my drive to do stuff.
On a professional level, the limited progress I feel I made is kind of a bummer, with the feeling of having misused many potential hours of work. Taking stock of the progress of all my projects is something that therefore makes sense for me to do right now, to hopefully have a more productive sprint before Christmas, which if we’re honest is just around the corner. If you’re interested in any of my apps, or curious about the indie experience’s ups and downs (consider this a down), this post might be of some interest to you as well.
Version 4.1 of my IP camera viewer GlanceCam is coming along and will be ready for Sonoma on day one; what matters the most to me is that the most used app I work on is already 100% compatible and reliable on the upcoming version of macOS (I’ve been running the betas on my main machine all summer to be sure there were no hiccups), but the feature-set of the next update will not be vast: a few bug fixes, additional AppleScript commands, customisable double-click behavior for GlanceGrids (send the whole grid full-screen, or just the selected camera, or again spin up a separate window for the selection) and 90/180/270° rotation support.
My hope for August was to also make progress on ONVIF support, but I haven’t been able to touch this extensive and challenging protocol.
I also had a wild dream to devote the hot months to GlanceCam for visionOS and did submit a request for a developer kit, but I haven’t heard back and that’s a sign I’m willing to accept that my focus should be devoted to more commercially viable projects in the near future.
Link HUB, my URL dashboard with widgets app, is also in a reasonably good place: I’ve been testing the app, widgets, and lock-screen widgets on iOS 17, iPadOS 17 and Sonoma and everything looks good, without the need of a compatibility update: there are scenarios, like with the Desktop widgets on macOS, where the default contrast might not be perfect depending on the wallpaper, but all widgets already offer a High contrast option that is sufficient to address those scenarios.
I’ve also thought about interactive widgets – clearly, the new shiny things this autumn – but honestly Link HUB is first and foremost a launcher, so I don’t really see a use case for them. Yet.
Thorough iOS 17 and iPadOS 17 testing also confirmed that both PhotosUpload, my niche app for uploading photos to FTP servers, and my iPhone pedometer Walk More are working fine without needing specific updates for the new OSes.
MousHero, the Safari extension to trigger URLs from the browser that I shipped just a few months ago works well on Sonoma and isn’t demanding much attention right now (or ever again? It’s basically done, which is not something I’m used to with my other projects), but I still have a challenging bug to investigate as soon as I will find the time: sometimes the contextual menu item is not displayed until the MousHero icon in the Safari menu bar is activated once, which is something I’ve never seen Safari extensions require and that doesn’t really make sense to me, happening in such random fashion.
Before discussing what’s next for my other apps, I would like to address another major hindrance to my productivity (and spirit), and something I’ve meant to write about in the hope of providing some help to fellow developers googling for a similar obscure issue: in early August I started experiencing a code-signing issue when trying to submit a minor update to one of my Mac apps (TameTime), which quickly turned into a major roadblock to shipping updates for 3 of my desktop projects, including GlanceCam!
What happened: when submitting any update from Xcode (14.3.0…15b8), the binaries successfully uploaded, but a few minutes later I systematically received an ITMS-90238: Invalid Signature + ITMS-90296: App sandbox not enabled rejection email that explicitly referred to the embedded helper app I’ve been using for years to provide a Launch at login functionality, and that obviously has always been sandboxed and signed.
I am sure this rejection is caused by server-side changes on Apple’s analysis of the binaries after submission because reverting to previously approved versions of those apps and submitting them with older versions of Xcode (i.e. 14.3.0) is still to this day causing the same delayed rejection.
This issue has been pretty scary (again, I wasn’t able to submit any updates to my apps) and demotivating, but it was also too hot to fight against a black box, so I kept circling around it hoping for a breakthrough, mostly focusing on a blog post from John Brayton that referred to a strikingly similar situation (same ITMS error codes emailed after successful uploads), even though in the end it proved to be a different problem from his.
Luckily, in the last couple of days (thanks to lower temperatures and renewed energy) I have been able to work around that rejected binaries issue: I still don’t know what changed in Apple’s SPI review process, but I figured that taking out my embedded helper app from the binaries and replacing my (established and so far perfectly fine) manual approach with a well respected and widely used library from Sindre Sorhus could help, and as a matter of fact it does; clearly the LaunchAtLogin library handles the procedure better, in a more compliant way than my previously fine – but likely borderline – approach.
This lateral success finally unlocked a couple of small updates to my other Mac apps that I had put together during my August holiday and that have been successfully approved by Apple today:
ClipBar 1.6 allows Users to manually reset the menu bar’s pasteboard preview (the utility’s purpose is to display what you last copied in the upper right corner of your screen, with some additional bells and whistles) by right-clicking on the app in the menu bar and selecting Clear ClipBar; this does not erase the content of your Mac’s pasteboard but removes the preview from the menu bar, which in some cases can be useful for privacy reasons. Special thanks to connectionfailure’s App Store review for suggesting the feature!
TameTime 1.5 also includes two new features, both recommended by Kenneth, whom I thank for helping me improve my utility to fight RSI and remember to move around: it’s now possible to manually reset the timer by clicking on TameTime in the menu bar and selecting Reset timer; most importantly, Users can now set custom and independent flash-screen messages for the Minor and Major alerts, or omit them completely and only have the 3-seconds dark screen as visual clue to take a break.
It’s a secret I cannot mention in their release notes, but both these apps also work great on Sonoma.
Sadly, though, there’s also a catch to the updates above (and most likely it will be an annoying reality that will also apply to GlanceCam 4.1): due to the fact that I needed to replace the Launch at login mechanism, Users who previously set those apps to open automatically when their Mac started will need to manually re-enable that behavior. I don’t love this, and I mention it in their release notes in the hope of causing limited disruption, but at least I was able to move past that super-worrying submission block and now these apps are “in the right section” of macOS Settings, which is more professional and therefore a welcome bonus at the end of this ordeal.
Finally, there should be another project on this list: early this summer I started working on Quee, an app that has been on my mind for years and a possible playground for improving my SwiftUI experience and especially testing out SwiftData; the idea behind Quee remains interesting to me, especially with the upcoming Journaling APIs, but I must admit development quickly stalled (the fact that SwiftData surprisingly doesn’t support inheritance didn’t help) and I have so much going on already that’s impossible to also devote time to a new project in the immediate future. Maybe if it had not been so hot…
October 23, 2022
I’m happy to announce that all my Mac apps have just been updated for macOS 13 Ventura, which launches tomorrow:
GlanceCam 3.6 works great on macOS 13 Ventura and is amazing in combination with Stage Manager, behaving exactly as you’d expect: with Always on Top enabled, your cameras remain visible in all Stages, just like they did (and do) with Spaces; if you don’t use Always on Top in combination with Stage Manager, GlanceCam behaves like all other apps, moving to the side when you switch applications… but your camera preview remains live on the left sidebar even when it’s not on the main stage!
This version also introduces an optional Zoom feature that’s been requested by some Users a while back (thank you both for the suggestion and patience, Gretar and Olof!); you can find out more about how Zoom mode works in GlanceCam in the release notes.
Link HUB 2.2.1 has been tweaked to be the best links manager and launcher on the latest version of macOS.
ClipBar 1.4.2 is a minor update – just to smooth things out for Ventura – to my utility for viewing the content of your Pasteboard from the status bar.
TameTime 1.4.2 perfects macOS 13 compatibility of my status bar utility built for reminding you of taking regular breaks, so you don’t spend too much time sitting at your computer and risk compromising your health.
And since pushing 2 GlanceCam versions in one week, plus Ventura updates for all three other Mac apps currently in my portfolio wasn’t enough, PhotosUpload 1.4.1, my FTP uploader for iPhone and iPad, has been updated for iOS and iPadOS 16 too!
November 25, 2020
To honor and show my appreciation for my American friends, this year I have decided to put 4 of my apps on sale, worldwide, for 3 days!
- GlanceCam - IP Cam Viewer is 40% off, now only $ 2.99. This is GlanceCam’s first sale since the launch 2.5 years ago and a unique opportunity to take advantage of inexpensive webcams on your Mac!
- Link HUB - URL Dashboard & NFC 1 year subscription is 50% off! At $ 1.99, this is a steal for using the app to automate URLs on iOS, iPadOS and macOS!
- TameTime: Awareness Times is also 50% off, and for only $ 1.99 is a great investment on your health, and a “must recommend” for your friends and family who sit long hours at their Mac.
- PhotosUpload - FTP uploader is the nichest app of them all, allowing you to upload photos on a FTP server you have access to from your iPhone and iPad, and so it gets the biggest discount, only $ 0.99 (67% off the regular price!).
It might take a few hours for the App Store to propagate the price changes, but the apps are on sale until Friday!
Happy and safe Thanksgiving!
November 18, 2020
🚀 TameTime now natively supports Apple Silicon and is fully at home on macOS 11 Big Sur.
TameTime is my utility for being aware of the time spent in front of your Mac without taking breaks (which are automatically detected) and can help in fighting RSI and other computer-related stress… it helps me every day!
Download TameTime now on the Mac App Store!
October 4, 2020
🚀 TameTime 1.2 debuts today in the App Store, 50% off for 1 week, to remind you to take regular breaks and avoid spending too much time sitting at your Mac at the expense of your health.
This new version adds manual pauses ⏸ for conference calls and the ability to repeat your custom alerts at multiples of your “minor” time threshold (i.e. every 10 minutes), and not only for the “major” one (i.e. every hour)!
Download TameTime now on the Mac App Store!
June 6, 2020
App Review was so fast, a new release of TameTime hit the App Store before I could blog about it.
TameTime is my utility for being aware of the time spent in front of your Mac without taking breaks (which are automatically detected) and can help in fighting RSI and other computer-related stress.
Version 1.1 adds a feature requested by a User: the app can now alert you not only when your session lasts over a certain amount of time, but also multiple times when you are so much in the zone that you keep working for 2, 3 times longer your original alert threshold. As always, alerts can be sounds, notifications, even a screen overlay, or a combination of these methods, at your preference.
November 28, 2019
So, I decided to honor the not-so-Italian tradition of Thanksgiving / Black Friday sales by discounting TameTime for a few days.
I programmed TameTime to remind myself of moving around every once in a while: my back only gives me a break if I give it a break at least once per hour, by standing and walking around. TameTime nudges me to do so with notifications, sounds and even a (brief) full-screen overlay for the times I really, really only need five more minutes on top of the last five more minutes…
TameTime can make a difference for people who suffer from computer-related stress and pain. If you or someone you know has these issue, this promo is a great way of saving 50%: until Saturday, TameTime is only $ 2,49 in the Mac App Store!
Happy Thanksgiving, and thank you for being here!
October 2, 2019
Last August, while I was on vacation and had some time on my hands, I listened to episode 340 - You Are a Computer Athlete of ATP and found myself nodding along with everything John Siracusa said about RSI; then I continued nodding while creating a new Xcode project, and here we are today.
Context: my back always hurt a little, but since 2013 things got a bit worse and I have to manage my behaviour to avoid pain: if I don’t lift heavy weights, I don’t stand in the same position for too long or sit still for hours on end I am mostly fine, but a single mistake generally means a few days of annoying pain. Overall I am lucky, lots of people have it much, much worse, but I tend to try avoiding any kind of pain, if possible 🙃.
Skipping heavy-lifting and standing still on my feets is easily accomplished, but the sitting part is a completely different beast: if you work in an office, enjoy programming in your free time and your hobby is reading, it’s not rare that you end up spending many hours in the same position, and in my experience a full hour is the longest I can sit without any consequences.
I find the Apple Watch, with its standing reminders, incredibly helpful, and I’ve been using a specific Mac application for years to track how long I’m using my computer without taking pauses, but the Watch notifications are sometimes easily missed when I’m “in the zone” and that old app is going to die in Catalina (32 bit winter is coming) and already hangs on Mojave more often than not, stopping all alerts without letting me know that something went wrong.
So, if you are a hobbyist programmer listening to a podcast discussing RSI, you obviously think: “I can build a tool to help me take care of my back! How hard can it be?”.
Honestly hard it was not, even though it took longer than I expected, because programming and also because I lost some time following a bit of a scare I had with my main app GlanceCam… but today, finally, I am happy to introduce TameTime: Awareness Timer to those who feel pain and discomfort because of the many hours spent in front of their monitor.
Honestly I’m not announcing a unique product, but what is unique these days? Execution is all that matters anyway, and the app I used before missed features I wanted, crashed and had only an annoying gong for notifications, while TameTime is exactly the better, more polished app I would have bought if it existed.
I’ll let the product page describe my new app in detail, but here’s the gist of what this 1.0 version does (obviously, I have ideas for future releases…):
- TameTime automatically tracks how long you use your Mac.
- The app lives only in the menubar and shows the active session duration in hours and minutes, with an emoji that lets you know how you’re doing… it starts happy like the all of us, but sit too long and you’ll make it cry and maybe even 🤬…
- You can set up 2 thresholds, let’s say for 20 minutes and an hour, that have different levels of alerts: a sound (with system defaults and some custom tones that I find appropriate for the task… but yes, there’s also a more pleasant gong than the one included in the app I used before), a notification and even a 3-seconds overlay of your screen; you can mix and match these alerts to your heart’s content, or disable them and only keep the timer in the menubar (the emoji can be disabled too, if you’re a sad person 👻).
- No manual interactions are required: TameTime detects pauses after a customisable delay and automatically resets its timers.
- Obviously the app can launch at login, is compatible with macOS 10.15 Catalina including support for Dark Mode (but also works on older versions of Mac OS X), and doesn’t do nasty stuff: no analytics, no network connections, no special permissions… it’s completely sandboxed; it is also very light, using almost no CPU or memory resources.
TameTime is available in the Mac App Store starting today. It’s a one-time purchase for $ 3.99, no IAPs, no subscriptions.
My app is obviously not a medical device, and I am not a doctor (just like Siracusa recommended in ATP’s episode mentioned above, please talk to a good doctor if you’re having pain or any kind of discomfort!) but I think it can help you become more aware of the time you spend at your computer, which is an important first step for reducing RSI, CVS and other causes of discomfort and pain that are caused or worsened by sitting for too long in front of a screen. It certainly is helping my back, making it the perfect kind of app to build: one that you need yourself!
But sales are good too 😁, so please share TameTime with friends and family you know can take advantage of a bit more awareness in their lives. Thank you!