GlanceCam 2.10 with auto-reconnection & other neat tricks

June 7, 2020

I really need to start writing my announcement posts as soon as I hit submit in App Store Connect, because App Review did it again: GlanceCam 2.10, which I finished working on Saturday night, is already available for download as a free update.

I know this is not the multi-windows upgrade many Users are waiting for (I am very sorry, GlanceCam 3.0 is not 100% ready yet), but I didn’t want to hold back on some helpful features:

  • GlanceCam now tries to detect if the connection to a camera is disrupted and, instead of leaving a deceitful frozen image on-screen, it tries to reload the video stream 3 times over the next 90-ish seconds; if the connection cannot automatically be re-established, the User will know because the window will remain grey, with a small red warning, until it is manually reloaded. I think this is much better than believing a camera il working when it is not, and in the tests that myself and a few Users have done since January, it has worked very well, so the feature is on by default.

  • There are now “expert tweaks”, all coming from Users’ feedback and requests in the past few months (as Frasier would say, “I’m listening”), available in the app’s Preferences. These are not settings most Users will need to adjust, but can be very helpful for special setups and are especially neat because they don’t affect the entire app behaviour, but only specific cameras:

  1. For mirrored images, it is now possible to flip the stream vertically or horizontally (or both).

  2. By default, GlanceCam uses the RTSP over UDP protocol, which is perfect for most cameras and Users. For few Users who regularly experience some significant delay when initiating the connection to the camera, or for those who cannot establish a connection over a VPN (working from home, anybody?) or through a particularly aggressive firewall, I have added the option to enable RTSP over TCP, which in tests that myself and some Users have conducted in the last few months, could make a remarkable difference for both issues.

  3. For 4K camera Users who notice some frames dropped while being on a good reliable connection (LAN or fast WiFi, as dropped frames at 4K via Internet could be caused by the line speed), then it’s possible that increasing the video buffer could help keep the frame rate smooth at 4K. Now this option is available, though it won’t be necessary (and it is not recommended, because it necessarily increases the memory used by the app, even though GlanceCam remains super-efficient) for Users with 1080p or lower-resolution cameras, and also for 4K cameras with already smooth playback.

As always, feedback is more than welcome at support@cdf1982.com. Oh, 5 star reviews are great too 😃, if you are so inclined!

100

November 9, 2019

I feel like celebrating! 🎉

Today my IP camera viewer for macOS, GlanceCam, received its 100th rating in the App Store, a 5-star review:

For such a nerdy app, that requires Users to have some knowledge of their network and to customize URL strings in order to connect to almost every brand and model of IP camera out there, I think it’s a great average (and it the US App Store it’s even better at 4.2 stars with 45 ratings).

The 1-star reviews sting a lot, to be honest, but are to be expected because the app is not really plug and play, as I try to make clear before the purchase, in the App Store description.

To help make the camera manual configuration process easier, I reply to all reviews and support requests, usually in less 24 hours, volunteering to research the proper string for the specific camera a User owns; sometimes I can’t find it because the camera does not support standard protocols, other times people don’t get in touch at all, and in a few cases they didn’t read the app description in the first place and expected a different product, but hey, that not only happens in the App Store, but with every kind of product sale everywhere. In all these situations where I can’t help, I immediately point discontent Users towards Apple refund procedure, but the return rate for GlanceCam is very low, again a great result for this kind of application.

Overall I think GlanceCam has the most generous and supportive customers possible: having had a 100 people take the time to rate the app, and 36 of them to actually write a review, is such a privilege for an indie app developer, and I wanted to take the time to acknowledge that.

P.S. Today’s 5-star review renews GlanceCam’s most frequent feature request: “Really hoping the ability to view multiple cameras at the same time comes soon”. I’m not really ready to give a timeline for it (I’m trying to learn a page or two from this blog post from Brent Simmons), because work on this feature has proven time and again to be a lot longer and difficult than I expected, but I have a decent prototype working on my Mac, and GlanceCam 3.0 will certainly include multi-windows support when it ships, hopefully not too far in the future. Sorry I can only promise that it will come, but not how soon!

GlanceCam 2.9

October 28, 2019

GlanceCam 2.9 is now available in the App Store, less than a week after that version 2.8 shipped.

This release adds the ability to export your list of cameras and actions (Glances, in GlanceCam’s parlance) for backup and also for deploying the same set of cameras on multiple machines quickly and easily.

Obviously, since you can export, you can also import those files later or on different machines running GlanceCam; please, store your backups files safely, as they will include your devices IP addresses and credentials in human-readable format.

You can find Import Glances and Export Glances in the File menu and inside the app Preferences.

Under the hood this version also adopts a newer version of Swift, to future proof things even more.

A lot of work is going into GlanceCam’s development: this is the 16th free update in around a year and a half!

This week I also updated the app’s mini-site to streamline the description a bit and make it clear that DVR/NVRs are not supported; finally, I began writing a FAQs to help clarify some doubts perspective customers might have.

If GlanceCam provides you value, please consider leaving a 5 star review and, maybe, sending a tip (you can do so from the app Preferences). Thanks!

GlanceCam 2.8

October 24, 2019

GlanceCam 2.8 is now available in the App Store and brings improvements to the app’s automation capabilities:

  • The already existent URL scheme (glancecam://?camera=01, where 01 is the camera number as ordered in the app Preferences) now also works when the app is not running: it launches GlanceCam and then selects the camera you specified in the URL scheme.
  • There’s also a new action available via URL scheme: glancecam://?fullscreen=true (or false) sets the fullscreen mode of GlanceCam on and off; please be advised that this is not a toggle: if GlanceCam is already fullscreen and you ask it to enter it again, by design nothing will happen.
  • You can also combine multiple URL scheme actions in a single string: glancecam://?camera=02&fullscreen=true selects the second camera AND enters fullscreen… how convenient!
  • GlanceCam now supports AppleScript too, both for switching cameras and setting the fullscreen mode:
    tell application "GlanceCam"
      select camera 2
      set fullscreen true
    end tell
    

Shipping this update took longer than usual due to some hiccups in my code related to tips… a warm thank you goes to the very patient person (or persons) of Apple’s App Review who very gracefully waited for a bug to be squashed and to Matt, who once again helped me when I found myself out of my depth. Go take a sneak peak at his amazing Go editor for macOS, Chime! As much as you’ll want to, you can’t lay your hands on it yet, because it’s still in closed beta, but it looks amazing and it will be worth the wait.

GlanceCam compatibility issues with beta 8 of Catalina

September 14, 2019

Update 3 - Tuesday, September 24
Great news! macOS 10.15 Catalina beta 9, launched yesterday, completely fixed the compatibility issue that affected GlanceCam and other apps relying on OpenGL since with the previous beta 8.

Everything is fine as the currently shipping version of GlanceCam, 2.7, is already 100% compatible with macOS 10.15 Catalina; I’m so happy that the post below is now obsolete… 🥳

The past two weeks were a bit of a rollecoaster 🎢, but thanks to Apple fixing that scary beta 8 bug in no time, and also the help of friends old and new (a special thanks to Steve 🙏, he knows why), not only my app is now back to the usual reliability and compatibility (and I am proud that GlanceCam is compatible not only with the latest - even future - OSes, but that it also keeps support back to OS X 10.11), but it is in a much better position to leave behind OpenGL in a future release.

Just this morning, before knowing that beta 9 resolved the crash at its root, I had a breakthrough in the implementation of an alternative, Metal-based, engine for GlanceCam. I will keep working on this major migration, thankfully without the pressure of an upcoming crisis, but keeping it at high priority: I still see great value in leaving OpenGL behind before Apple decides that it really is time to let it go.

The fact that my app is 100% ready for Catalina is what I am here to write about, but there are a couple more thoughts I’d like to share:

  • Friends, file radars Bug Reports! I wasn’t very hopeful that a 🐛 appeared in beta 8 was going to be resolved before the official launch of Catalina, and obviously the fact that Apple applications were crashing helped a lot, but I’m sure that my report, together with the many others I’ve seen filed in the last ten days or so, helped significantly in escalating the priority of this crash.

  • Since in my previous update I mentioned an emergency app update I submitted to Apple to warn users before the launch of Catalina, I think it’s only fair to let you know that it did not pass App Review, as I honestly expected even before submitting it: you can’t mention a future release of macOS, no exceptions; you also can’t wait for the new OS to ship, because an app would not be approved if it crashes with the shipping version of macOS. Quite a catch 22, uh? But the App Review person I interacted with was very kind (dare I say he or she felt my pain? I dare, because they clearly did!) during the whole process, and it sparked an extended and helpful conversation 💯.

I’m leaving the original post and update 1 and 2 “for archive purposes”, but below this line, everything is now obsolete.


Update 2 - Wednesday, September 18
I have updates on multiple fronts about the crash described in the original post below:

First, I am aware of multiple Bug Reports filed to Apple in addition of mine (FB7276584): FB7253859, FB7283002, FB7265136, FB7281945. One of these reports yesterday received the following, somewhat encouraging, comment in Feedback Assistant:

Recent Similar Reports:More than 10
Resolution:Potential fix identified - For a future OS update

From that feedback we can think that Apple is aware of the issue and it is possible that a fix is coming, though it is unclear when (next beta? later?). It’s an encouraging development, but I still need to figure out something myself (VLCKit team, on their forum, also seemed “in stand-by” for a solution from Apple) in case the “future OS update” is too much in the future for my Users.

So, tonight I submitted GlanceCam 2.7.1 to App Review, which contains an explicit alert to users in the app description, the release notes and, most important, inside an in-app warning that will appear the first time users will launch GlanceCam after updating:

I am not sure App Review will approve an app that a) acknowledges the existence a future version of macOS and b) mentions the fact that it is currently incompatible with it. But I had to try, at least to start the conversation with the always kind and open to communication, in my experience, App Review Team and will let you know how it goes.

Third, I’m moving my first, timid steps with SGPlayer, the ffmpeg and Metal library that was recommended to me and seems very promising; a couple of days ago I did build a small prototype working with local videos, but not with RTSP yet, so there’s still a lot of work to do before I can know if this is a viable replacement of VLC, and honestly I wanted to get 2.7.1 out of the door first.

Last thing, I’m extracting the FAQs at the bottom of the original post below and move them, updated accordingly to the new informations that became available in the last few days, to a specific FAQs page, which is now also explicitly mentioned inside GlanceCam’s product page, so that prospective customers are informed in advance of the pending issue, before making a purchase.

The next update to this post will probably be published after Apple reviews version 2.7.1. As always, please don’t hesitate getting in touch at support@cdf1982.com.


Update 1 - Sunday, September 15
A slightly better day, thanks first and foremost to the warm support of nice people on Twitter! Steve Troughton-Smith in particular brought me hope with something actionable to try, pointing me to SGPlayer, a ffmpeg and Metal library that on paper seems a good candidate for replacing VLCKit.
Also important, given how soon Catalina will be in the hands of end-users, I’ve filed radar Feedback FB7276584 to Apple, with attached crash reports and a sample project that “reliably” crashes on Catalina beta 8, but is stable on previous versions of macOS. I really, really hope someone at Apple has time to look at it.


TLDR: Yesterday I found out that, in the latest beta 8 of macOS 10.15, my app GlanceCam crashes when switching camera stream. My tests show that this is caused by Catalina’s OpenGL support; I read online that the same crash is happening to other apps using OpenGL.
Below I try to describe all details of this complex situation in the most transparent way I’m capable of, and at the bottom of the post there’s a FAQ that every GlanceCam user or prospective customer should read.
This post and the FAQ will be updated whenever new details are available.
Hopefully I’ll be able to find a solution soon. In the meantime, I deeply apologize to all GlanceCam users. Please know that I am trying my best to resolve the issue, but it’s not clear to me how and when (days? weeks? worse?) I’ll be able to if Apple did actually intentionally disrupt OpenGL support and won’t fix it in the next release.
For any questions you might still have after reading this post, please get in touch at support@cdf1982.com.


This is not an easy post to write.

Soon after Apple introduced the first beta of macOS 10.15 Catalina, I installed it and thoroughly tested GlanceCam, my app that makes possible to monitor IP webcams directly from your Mac and works with almost every camera model without using their (often horrible) web interfaces. With much relief, after those tests I could confidently report that GlanceCam was compatible with the next release of macOS.

This remained true at least up to Catalina beta 5, in the early days of August: with each beta release, I kept testing GlanceCam and everything kept working properly.

Why test with every new beta? A new release of macOS was a bit stressful for me because:

  1. Just one year ago another app I introduced six months earlier, ContactsAMI, was basically put out of its misery by the fact that macOS 10.14 Mojave removed support for Contacts.app plugins, which were the way the app was providing most of its functionality.
  2. With Mojave, Apple announced that OpenGL support was deprecated in favor of their own framework Metal; under the hood, GlanceCam relies on VLCKit for the video playback, which in turn uses OpenGL, so I was on the lookout for possible problems. I was cautious, but wasn’t necessarily expecting any issue in this update cycle, since in most cases a deprecation does not mean that some functionality is immediately taken away: usually deprecated code keeps working for many years, and I was confident that in the meantime the amazing team behind VLCKit could figure out a transition to Metal (and I still am).

So, when I saw that 5 betas in a row did not break my beloved app, I relaxed a bit and got back to work on my long-term project for GlanceCam, multi-windows support, that I felt could come in version 3.0 as soon as mid October, after many months of development (I’m a self-taught programmer with a day job in a completely different field, so most coding for me happens very early in the mornings, in brief stretches).
Inspired by ATP’s episode 340 talk about RSI, a few weeks ago I also started a new project, TameTime: Mac awareness timer, that as of yesterday was planned to launch this month; it’s a tiny menu bar app that alerts you with multiple configurable visual and acustic clues when you sit at your computer for too long.

And sitting at my computer for a very long time is indeed something I now see in my future, because Friday I got a very kind email from a GlanceCam user reporting that, with macOS Catalina beta 8 introduced on September 10, GlanceCam was launching properly, but crashing as soon as he switched to a different camera.

Friday night I immediately installed Catalina beta 8 and was able to reproduce the crash when switching cameras. Every single time. And always with the same error in the crash report:

assertion failure: “((void *)0) == tsd->NSCurrentOpenGLContext” -> %lld

Test on Mojave? Everything’s fine.

I did not despair, though. I downloaded and compiled the newest release of VLCKit and built GlanceCam with it, using the latest Xcode beta, which is actually the Golden Master, just to be safe.

Same crash.

And it’s a bad one, because Xcode’s debugger does not point anywhere in my code, it just logs that the app was killed with one of the most generic and obscure error messages: “terminated due to signal 9”. Sometimes this error refers to memory leaks, but I’m 100% sure it’s not the case here, and actually the error 9 seems to just be a generic feedback that the app was terminated by the OS.

At this point I started feeling really uneasy; first I digged through the console for clues about the crash (something you do with signal 9 errors), finding none, and then I Googled that crash report error message, landing on a unique result for my search: a 4 days old post on Apple forums where users complain about the same crash in many other apps, starting with Apple’s own Final Cut Pro, and in general confirming my suspicion that the issue is with OpenGL compatibility in the latest beta 8 of Catalina.

I am now at the end of an exhausting Saturday and I have tried what follows:

  • Placed breakpoints everywhere in GlanceCam’s code to at least narrow down where the issue is; it’s now certain that it is triggered by a VLCKit method that handles playback, not by my own code.
  • Posted my experience in the same Apple forum mentioned above, asking for suggestions from other developers who also wrote there (no replies so far, everyone is just bummed because the latest beta broke their work tools);
  • Asked for help in the VLCKit forum, where I met the usual kindness, but at least for now had only a sad confirmation: since OpenGL is deprecated and they’re not sure things will improve without a Metal port that is not currently ready, there’s no immediate fix. Since we’re on a week-end, I still hope that the conversation on that forum will lead me to a solution or a temporary fix, especially given the fact that I was also able to regurarly crash VLC video player itself getting the same crash report error, so this will be a priority for them too.
  • Built the smallest video player app possible, a true VLCKit MVP just to test where the crash occurs without all the overhead that a complex project like GlanceCam obviously has; this actually helped narrow the crash at exactly one VLCKit-related command: when you stop the playback, the app immediately crashes. Thing is, you can’t have playback run forever, you need to stop when you switch to a different camera, the screensaver starts or you close the app, so I did indeed narrow down on the issue, but I’m not closer to an actual solution. If you’re a programmer, you can download the Xcode 11 MVP project here, complete with a sample video and the VLCKit library already compiled and linked, and have it crash on your instance of Catalina beta 8 as soon as you press the stop button after starting the playback; and, fellow programmer, if you have any idea, I can really use your help.

More important, I started drafting a Radar for Apple that will also include the sample project mentioned above sent Bug Report FB7276584 to Apple with attached crash reports and the sample project mentioned above: if the first betas did not present this crash, maybe they’re not planning to actually kill OpenGL off so soon; on the other hand, we’re so close to Catalina’s launch that I feel like a fix ready for the next beta or even day one is a bit unlikely.

A personal note: it is possible that I am overreacting – I’ve only been aware of this issue for less than 48 hours and I am now quite tired, so maybe I’ll figure something out soon and we’ll laught at this post – but at the time of this writing the problem appears to be quite complex: it touches the basic architecture of the operating system, not only of my app, and it seems caused by technical decisions / bugs mostly out of my control, so I feel the right thing to do is to publish this post right away, and maybe have soon good news to follow up with.


Having taken stock of the situation without sugarcoating things, the very last thing I’m doing today is to write an exhaustive disclaimer / FAQs document (that I am now posting only here on the blog, but in a few days will go on the GlanceCam product page as well if the situation does not improve) that is available and kept updated here.


Again, I am deeply sorry for any disruption this might cause to your workflow, if you were planning to install Catalina at launch or you are already using the betas. I’ll do anything I can to restore GlanceCam functionality for all users and to keep you posted.

GlanceCam and macOS 10.15 Catalina

June 6, 2019

I am happy to report that, after an extensive batch of tests on Beta 1, the current version of GlanceCam is already 100% compatible with the just announced new release of macOS, 10.15 Catalina.

🎂 GlanceCam is one year old! 🎂

March 29, 2019

One year ago today GlanceCam debuted in the Mac App Store, after just 3 weeks of very intense development at the most improbable hours (I have a day job, so most of my coding has to happen very, very early in the morning).

As I wrote back then, my second Mac app saw the light out of laziness:

…one day I found myself alone at the office and I had to get up from my chair a bazillion times, like an animal, to open the front gate. So, the most “straightforward” thing to do was to get ourselves a nice IP camera and an ethernet relay, and make them work together in a well made macOS app, so that we can keep a small window showing the gate video stream on our desktops, and open to visitors with just one clic.

I honestly did not expect many people to be interested in such a niche app, and by all means GlanceCam’s audience has not been large, but surprisingly (at least to me), there are Users out there who are looking for a well made, native Mac camera viewer: since the beginning and with no marketing on my part (I know, I know… more on this later), a few people have been buying the app almost every day and, from the feedback I receive via email, the occasional in-app tip and the reviews, they are very happy to have found an app that really solves a problem they had:

“The perfect app for keeping an eye on a webcam”

“Very nice app, works flawlessly and exelent and very quick support if needed!!”

“Finally, A Cam Viewer that Works!”

“no more stupid web interface”

“Great app and great support!”

That enthusiasm translates into a 4.0 stars overall average from 45 ratings in the App Store, and 4.2 stars in the US store. Not bad 😜 for an app that, in order to be useful, requires you to know the specific custom string and credentials to access the video stream of your camera!

I think Users particurarly appreciate that, with 16 updates so far, GlanceCam has steadily became more capable: soon after launch it got extended support for keyboard shortcuts and for audio playback, added the ability to save snapshot images and introduced multi-cameras and multi-actions in version 2.0; it then gained support for full screen, including side-by-side with other apps, and insta-zoom. Recently I added compatibility to RTMP in addition to the original HTTP(s) and RTSP protocols and implemented touch gestures to navigate between cameras. Just a couple of days ago version 2.7 added TouchBar support and an URL scheme, and in the meantime I have also implemented native Apple Script support, which will come soon in the next release.

All this while improving stability and performances… the usual “bug fixes and improvements” you read in every release note. My favourite is from version 2.1 🙃:

GlanceCam took the “always on top” preference a little too literally, and stayed actually on top of everything, including the screensaver…

One year later, I am more excited than ever to be working on GlanceCam and I have an extensive list of features I want to add. The main priority going forward, both for my direct use of the app and from Users’ requests, is my personal Moby Dick 🐳: concurrent multi-camera support (either in a single window with grid/list or with multiple windows… currently you can view one camera at a time, which is fine but not what I envisioned when I started developing the app); I think I spent at least 150 hours on multi-cameras so far, and still haven’t found a way to keep the app perfectly stable because of an OpenGL bug that seems to be outside of my control (in Mojave Apple deprecated OpenGL) and that causes a lock when more than one video stream is overlayed with buttons. Nevertheless, this will be the landmark feature of GlanceCam 3.0 and I will get it to work, I simply can’t announce a launch date yet… After that, there are other nice things I’d like to add: if possible, Onvif support for camera discovery, maybe PTZ control, certainly the ability to loop through cameras, and someday the option to coalesce the HTTP GET commands from different computers (so that, when 2 people on the same network clic to open a gate, only the first command is sent).

For this to happen, the development needs to become a bit more sustainable (i.e. more Users, or a price higher that $ 2.99 before the Apple cut… I think the app would really deserve a more “niche, pro app with personalized human support” price, but I am afraid to kill growth and then become disenchanted by a lower number of downloads), and some marketing will be needed. I know I should have done something on that front already, but unlike iOS, there aren’t that many Mac software review sites I can contact for an app that serves an oddly specific need.

I guess we will see what the future holds for GlanceCam, in the meantime happy birthday 🎂 little app always sitting in a corner of my screen!

GlanceCam 2.7 coming soon

March 27, 2019

I am very excited about the new features in GlanceCam 2.7:

  • The toolbar in the upper-right corner now includes a couple of additional buttons: the first to toggle audio on and off (if the camera supports it) and the other to reload the video stream if, for any reason like a lost network connection, the playback would freeze.

  • The lucky owners of a MacBook with TouchBar can now change cameras and control the app directly from their 2170x60 magic strip.

  • GlanceCam now has an URL scheme that allows to switch camera from outside the app! Any custom application or AppleScript can call the glancecam://?camera=17 URL and switch to that video stream; just replace “17” in the example URL with the camera number you want to switch to (as listed, counting from 1, in the app Preferences). A couple of additional informations for nerds: if the camera number is out of range or the URL string is incorrect, the switch operation fails “silently” to avoid interrupting the video stream and, for now and pending additional improvements, you can only switch to a different camera if GlanceCam was already running.

GlanceCam 2.7 is currently in review by Apple and will be available as a free update in the next couple of days (or so).

GlanceCam compatibility with OC835-ADT cameras

March 25, 2019

So, there’s only little chance that this post will be seen by the person requesting informations about it, but since I have no email to reply to it’s worth a try…

mindy_support_request.jpg

Mindy, I believe there is a good chance your OC835-ADT camera will be compatible with GlanceCam using a string like the following: http://USER:PASSWORD@IP_ADDRESS/img/video.mjpeg

If, by any chance, it would prove not be compatible, then I will be able to point you in the right direction to get a refund from Apple. I am sorry I can’t give you 100% confirmation, but every camera model and manufacturer does things a little different, and the only certain way to know is to try.

I’m here if you need any further informations… thank you for your interest in GlanceCam!

GlanceCam 2.6.1

March 5, 2019

GlanceCam 2.6.1 automatically stops playback just before your Mac goes to sleep, and resumes it immediately after the system wakes up.

This helps stabilize the behavior of some camera models with the new continuous playback (an option to never pause the stream when the app is minimized or the screen is locked) introduced in GlanceCam 2.6: occasionally I did experience an issue after the Mac woke from sleep and the video stream stayed frozen for a few seconds (or, in rare cases, did not resume at all). Now the system’s sleep/wake cycle determines the stream to be properly stopped and resumed, avoiding freezes of any kind.

GlanceCam 2.6.1 is now available as a free update.

GlanceCam 2.6

February 28, 2019

GlanceCam 2.6 is now available as a free update.

This version introduces a couple of features requested by Users; being special behaviors, both are off by default and can be manually enabled in the app Preferences.

  • Swipe left/right (with 2 fingers on trackpads or 1 finger on a Magic Mouse) to switch to the previous / next camera.

  • By default, GlanceCam pauses playback when the screen is locked (i.e. the screensaver is running) or the app is minimized, but you can now enable continuous playback and never pause video/audio playback; if you enable this feature, on some camera models it might take a while before playback resumes when you wake your Mac from sleep (if you experience delays longer than 15 seconds after waking up your computer, would you please let me know?).

If you need help with anything, please get in touch at support@cdf1982.com and, if you have time, I would be incredibly grateful if you’d leave a review.

App updates and a freebie!

January 23, 2019

I like that this January I am being able to spend a little more time in Xcode than my usual, but I should probably apologize because all my posts are product announcements… I promise the next time you’ll read me I will cover more entertaining topics!

First, an announcement: starting tomorrow and for a week only, one of my first apps, Always There, will be completely free to download. The app allows you to put a special photo in Notification Center, both on iPhone and iPad, and is perfectly useful even with the latest Apple devices. Always There usually costs $ 1.99 (it’s my only iOS app paid upfront), but I’m trying to understand if there’s potentially a wider market with a different business model: I have ideas for new features, but I need to understand if spending a significant amount of time on them makes at least some sense. If you’re curious, tomorrow check Always There out and tell your friends about it!

And now, the app updates…

A few days ago Apple approved GlanceCam 2.5, with support for the RTMP protocol. I can hear you scream “booooring”, but it’s a useful compatibility update if your camera didn’t support RTSP or HTTP for streaming.

Tonight I also submitted an update for Walk More, my free iOS pedometer. I wasn’t expecting to update it so soon, but a few bugs emerged and I had to fix them right away:

  • Steps, distance and floors are again centered vertically near each bar.
  • If you ever saw days’ labels duplicated on the Y axis of the graph, rejoice: everything is back to normal.
  • Sometimes the widget crashed and showed no progress in Notification Center; now it works perfectly.

Hopefully the approval process will go smoothly and in a couple of days tops version 1.4 will be available for download.

Thanks for reading!

GlanceCam 2.4.4

January 12, 2019

Apple just approved a new update of GlanceCam; here’s what is improved in version 2.4.4:

  • Insta-zoom (the feature introduced in version 2.4 that allows you to clic and hold the right mouse button to temporarily zoom the view) works better with high-resolution streams because now the zoomed window can never resize more than the actual screen size.
  • When GlanceCam was not active, the “Save snapshot” floppy and the always on top “Eye” icons were a bit pale; now they are more defined and look better.

App updates: Walk More 1.3 and GlanceCam 2.4.2

January 7, 2019

Apple has approved a couple of app updates to help me kick off the new year in a good way.

Walk More, my iOS pedometer, got some developer love and now supports iPhone XS / XS Max screen resolutions; I also fixed a couple of bugs that sometimes affected the charts’ labels.
Walk More is now even more polished and pleasant to use and, while I’d still like to add an Apple Watch component sometimes in 2019, for the time being this update makes the app really solid for most users, who only carry their iPhone with them and don’t wear a Watch.
Walk More is still free, and is great if you’ve never used a pedometer or know someone who made a new year’s resolution to be more active, so check it out!

GlanceCam has been updated with a few minor bug fixes and the addition of its Privacy Policy to the Support menu.

I am so thankful for some of the reviews GlanceCam is getting and I found them very motivating to keep improving it:

  • “Finally, A Cam Viewer that Works!”
  • “I use GlanceCam pretty much all day”
  • “This app makes viewing all of my cameras possible from one interface and I LOVE THAT”
  • “Remarkable and instant support”

Hopefully, in January I’ll be able to ship something more, but don’t want to jinx it.

GlanceCam 2.4.1

December 11, 2018

No matter how much you test a feature, bugs find a way to sail off and keep company to your code when you ship…

GlanceCam 2.4.1 has just been approved and fixes a bug that occasionally prevented the app to enter fullscreen mode and to appear in Exposè; it happened only when visibility in all Spaces was enabled, and it turns out I didn’t test those cases well enough. Sorry!

This is a good occasion to remind you that GlanceCam has a lot of convenience features and shortcuts:

  • You can double-clic anywhere inside the camera view to enter and exit fullscreen mode (and GlanceCam is a good Mac citizen at that, properly supporting split view);
  • Holding the right mouse button down zooms the window temporarly;
  • Pressing + o - changes camera, as does the Space key… and if you already know the camera number, you can access it directly with the number keys 1 through 9;
  • CMD + 0 resizes the window at 50%, CMD + 1 at 100% and, guess what, CMD + 2 at 200%;
  • CMD + S saves a snapshot to your Pictures folder and CMD + Y toggles the “Always on top” option that keeps the app floating above all others and visible in every Space.

GlanceCam 2.4 with insta-zoom + Privacy Policy

November 30, 2018

I finally got around adding a small but very useful GlanceCam feature that I always wanted for myself 😃.

Version 2.4, currently waiting for review from Apple, is great if you usually keep a small GlanceCam window in a corner of your screen to keep an eye on a camera: you can now right-click and hold down the mouse button anywhere inside the window to temporarily zoom the camera at 2x of the natural size; when you release the mouse key, the window will return to its original size and position.

No animations, no manual resizing or keyboard shortcuts necessary: just an additional, quick way to get the most out of your cameras directly from your mouse and without interrupting your workflow.

Keep an eye to the App Store to download GlanceCam 2.4 while it’s fresh out of the oven!

I also formalized GlanceCam’s Privacy Policy, so you can have absolute peace of mind about your data.

GlanceCam 2.3 coming soon

October 3, 2018

GlanceCam 2.3, submitted today to the Mac App Store for review and hopefully available for download in the next few days, will contain some features requested by its Users:

  • GlanceCam now supports full screen mode (including side-by-side full screen with other apps); you can enter this mode by double clicking anywhere inside the app window, or with the usual green button in the upper left corner of the title bar. If you just want to maximize GlanceCam without going full screen (the previous behavior), press the ALT key while clicking the green button.

  • The Next and Previous camera actions introduced in the last update are now available also by right-clicking GlanceCam’s icon in the Dock.

  • GlanceCam pop-up list of cameras (present only when multiple webcams are configured) can now be moved to the upper left corner or at the top center of the window; that’s useful if your camera places informations like time or its name in the upper right corner, where the pop-up list used to be (and, by default, still is). You can choose your favorite position from the app Preferences.

I always appreciate Users’ feedback, and I think the features suggested recently and implemented with this update really helped improve GlanceCam in everyday use. If you agree and the app is useful to you too, please consider leaving a 5 star review and, maybe, sending a tip (you can do so from the app Preferences). Thanks!

GlanceCam 2.2 launched today

September 29, 2018

GlanceCam 2.2 has just been released!

This is a minor update that:

  • Fixes little visual glitches with Mojave: now GlanceCam, which has always had a cool dark interface, looks and works great with the latest macOS.

  • Introduces useful keyboard shortcuts to switch between cameras: just press + or the spacebar to show the next camera and, you won’t believe it, the - key to return to the previous one.

Multi-camera support (meaning, multiple cameras shown at the same time in a single window) is proving a harder task than expected, and lately I haven’t been able to work on that as much as I would have liked to, but it’s still coming…

GlanceCam 2.1

May 17, 2018

GlanceCam just introduced multi-cameras and multi-actions support in version 2.0, but there’s already something new and improved for you in the 2.1 release already available in the App Store:

  • Tooltips everywhere! If you’re not sure about a button or a field, just hover your mouse and a helpful suggestion will appear.
  • When you resize the window with a keyboard shortcut (CMD + 0, CMD +1 or CMD + 2) and the new size extends outside the screen, the resized window will bounce back to be fully visible.
  • Sometimes, GlanceCam took the “always on top” preference a little too literally, and stayed actually on top of everything, including the screensaver; now that bug has been fixed.
  • Another bug fix: in Preferences, when you added a new camera, the tabulation between textfields didn’t behave properly; now everything works as expected. I’m trying to make GlanceCam the best IP camera viewer possible, and Users’ support helps a lot; if you can, please show your love with a review on the App Store or by leaving a nice tip inside GlanceCam’s Preferences. Thank you!

🚀 GlanceCam 2.0 - the multi-cameras edition

May 8, 2018

About a month ago, I shared the plan for the future of GlanceCam, my macOS app that lets you keep an eye on a webcam and optionally perform custom actions via HTTP(s) requests.

The most significant step towards that future is here today: GlanceCam 2.0, available today on the Mac App Store as a free update for existing Users (and still very low priced for new Customers at only $ 2.99), introduces multi-cameras and multi-actions support!

I’m very excited for this feature-rich release:

You can now add as many webcams as you like (Settings > Add camera). The amount of actions you can perform for every camera is doubled: you can add up to 2 buttons with separate custom actions to every webcam. You can view one webcam at a time and switch between them with a popup button, by pressing the number keys (1, 2, etc…), and by selecting the camera name from the Dock icon or the Glance menu. From the menu bar and the Dock icon, you are also able to invoke actions for a camera that’s currently not displayed. On top of that, a few bugs have been squashed. I’m trying to make GlanceCam the best IP camera viewer possible, and Users’ support helps a lot; if you can, please tell your techie friends download it, and if you’re already a User, show your love with a review on the App Store or by leaving a nice tip inside GlanceCam’s Settings (also new in version 2.0! 🤑). Thank you!

P.S. On a personal note, GlanceCam is now my most important app and, as it deserves, it is now displayed on the home page… I’m very happy to see a new product grow, but also a little sad for the apparent “demotion” of Tasktic, my first complex and somewhat successful iOS app. I still love all my children equally, though! 😉

Mac development is (not) hard

April 26, 2018

Brent Simmons perfectly described a belief I’ve had since I started Cocoa development:

“Assuming there’s a data model, maybe a database, some networking code, that kind of thing, then you can use that exact same code in your Mac app, quite likely without any changes whatsoever.

That leaves the 20% or whatever that’s user interface. AppKit is not the same as UIKit, but it’s recognizable. Same patterns and concepts, and often similar names (UITableView/NSTableView).

Given that you’ve done the hard thing — learning UIKit, Xcode, and Swift and/or Objective-C — taking the next step and learning AppKit seems like a very small thing. You’ve climbed the mountain already, after all.”
This has been exactly my experience: moving from iOS to Mac development has been absolutely painless, with most of the knowledge I acquired on iOS being useful and relevant, and with the “platform-specific stuff” absolutely learnable in the same way you understand how to use a new mobile framework. I don’t know if I’ve climbed the mountain already, but sure I am having fun climbing.

I expect to find harder topics along the way, but what I have encountered so far are myths and misconceptions that actually made me delay the transition to Mac development for reasons that, in hindsight, were simply bad.
So, here’s what I learned in my spare time (while mantaining a day job in a completely unrelated field, an information I provide just to prove that this is not something that will consume all your waking hours) since I started developing for Mac six months ago:

  • You will find tutorials and Stack Overflow answers to your Cocoa questions. Yes, there might be more resources available online for iOS development, but I find plenty of quality help every time I need it.
  • Window controllers and menus are not hard; check out any tutorial out there and, if you’ve got this far, there’s no way you won’t learn how to use them; same thing for menus, open at login capabilities, menu bar utilities and so on.
  • UICollectionView/NSCollectionView are not the same, nor are UITableViews/NSTableViews, but I never need to look up the documentation for standard implementations, and when I need something peculiar, Apple provides pretty great docs.
  • Sandboxing is not painful per se, but (big surprise) can be annoying when you’re trying to do some things. That’s the reason you can disable it: in ContactsAMI, I needed to share some files between a Contacts.app plugin and the main app and, since the plugin must be sandboxed, the only solution I found was to disable sandboxing for the app and write into the plugin sandbox. Clean? Probably not. Am I distributing the app via the App Store? Nope. The app is available for download nonetheless? Absolutely, because one of the great things about the Mac is that you can get software wherever you want.
  • I’m convinced that bindings can drastically reduce the amount of lines written, but since they looked hardly debuggable to me, I chose to avoid them completely; I’m probably writing more “iOS style” code for that reason, and I’m confident it’s fine and that you can do that too, if you feel so inclined.
  • UI is hard on every platform, it’s not just a Mac thing. This is certainly the area I’m struggling the most with, but there is a pretty good reason I feel the design of my apps is somewhat inadequate: that’s because Mac apps are so well designed, the bar is up there. Your mileage may vary, I will always feel more confident writing code than designing interfaces, but the important thing is that an iOS developer already knows the tools and has familiarity with the platform, so great native UI/UXs can be achieved.

So, if you are an iOS developer who has ever considered developing for the Mac, think about this: we may never reach the mountaintop, but we already know how to walk, we’ve trained a little in the woods nearby and already bought good shoes… we might as well continue climbing!

GlanceCam 1.3 and the road ahead

April 7, 2018

GlanceCam launch went so much better than I expected, confirming that an app I built out of lazyness is actually proving useful to others (which is simply the best thing for an app developer).

So, it’s time to take stock and plan for the future.

First and foremost,** I want to thank you for the support and kind words**. Users’ feedback, word of mouth and App Store reviews (reviews that, with the new version, you can leave directly from the Support menu inside the app) are essential, and you’re helping on all fronts! Please, don’t stop…

Starting today, GlanceCam 1.3 is available in the App Store with the following changes:

  • Some IP cameras offer both audio and video in their stream; you can now enable/disable the audio from Preferences.
  • Improved reliability of window resizing.
  • Minor user interface tweaks.

With this update, the basics of a single-camera, single-action app are mostly covered. So it’s time to start thinking, and building, GlanceCam 2.0.

The next logical step, and I have already heard some feedback confirming this, is to go from one camera to multiple webcams. Doing so requires some deep rewriting, which I started yesterday, but expect this change to take a while before showing up in the App Store app.

Since I’m in the starting phase of the redesign process, there are a few decision to make, and I’ll really appreciate your opinion about 3 possible approaches to multi-camera:

  1. Would you like GlanceCam to remain a single-window application, showing one camera at a time, and switch between cameras with buttons / keyboard shortcuts?
  2. Do you prefer to be able to open a separate GlanceCam window for each camera, rearranging and resizing them separately?
  3. You’d rather have a single window showing multiple cameras (i.e., a 2x2 layout, or 5 cameras stacked one above the other in a tall window)?

At least initially, I am probably going with #1, unless your feedback points me in a different direction: approach #2 seems nice on paper, but it can get really messy on your desktop if you have 4 cameras open in separate windows, and #3 poses some hard design challenges… a 2 camera layout should be very different from a 5, and some arrangements like the vertical stack are good for taking a glance with relatively small videos, but not great for resizing to a large view.

If you have an opinion on this, even if you’re not currently a GlanceCam user, please let me know on Twitter or via email!

I’ll do my best to build a great 2.0, wish me luck!

GlanceCam 1.2

April 4, 2018

I’m very thankful for how well the launch of GlanceCam is going: being another niche product, I wasn’t sure there would be a market for it, and instead the number of sales has so far exceeded my (modest) expectations. Thank you!

Here’s what’s new in GlanceCam 1.2, already available on the Mac App Store:

  • You can now save a PNG snapshot of the video to the your Pictures folder by hitting CMD+S, clicking the Save icon, or selecting “Save snapshot” in the File menu.
  • GlanceCam didn’t restore the window size and position between sessions; now that bug has been fixed, and it will stay just where you want it on your screen every time you launch the app.

Thank you for using GlanceCam! If you know someone who might find it useful, I’ll really appreciate the word of mouth!

🐣 GlanceCam 1.1

April 1, 2018

A quick update to GlanceCam… Version 1.1 introduces:

  • New keyboard shortcuts for resizing the window to 50% (CMD+0), 100% (CMD+1) or 200% (CMD+2) of the original stream video size.
  • A bug fix: GlanceCam 1.0 prevented the screensaver from starting; now the screensaver works as expected, and the video stream is paused not only when the app is minimized in the Dock, but also whenever the screen is locked.

You can find GlanceCam 1.1 on the Mac App Store.

Happy Easter! 🐣

GlanceCam is here

March 29, 2018

I’m glad to introduce another nerdy and niche Mac app: starting today, GlanceCam - IP webcam viewer is available on the Mac App Store.

GlanceCamIcon256.png

GlanceCam is a highly configurable app that lets you keep an eye on an IP camera (webcam) and optionally perform custom actions via HTTP(s) requests, all without a browser.

GlanceCam is a product of lazyness: one day I found myself alone at the office and I had to get up from my chair a bazillion times, like an animal, to open the front gate. So, the most “straightforward” thing to do was to get ourselves a nice IP camera and an ethernet relay, and make them work together in a well made macOS app, so that we can keep a small window showing the gate video stream on our desktops, and open to visitors with just one clic.

You can read more about what GlanceCam can do for your Internet of Things setup, and learn about its hardware requirements, here; if you’re intrigued, you can already purchase GlanceCam for only $ 2.99 on the Mac App Store.

Where am I?

In sunny Italy ☀️ 🇮🇹