GlanceCam 2.1

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

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 to 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

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 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

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!



How to symbolicate macOS apps crash logs

Alternate title: TIL Xcode does not symbolicate Mac applications .crash files, that only works for iOS apps.

I made a pretty obscure mistake in GlanceCam 1.3 that lead to a crash during its app review.

I'm very sorry for wasting app review some time (they have been amazing, both understanding and allowing an hedge-case for sandboxing and giving GlanceCam lighting fast reviews, usually less than a day!) , but they have been so kind to attach a crash report and I had to symbolicate it ("Symbolication replaces memory addresses with human-readable function names and line numbers").

Having done that a few times in the past directly in Xcode, I went straight there, but as I mentioned above, no luck. There's plenty of resources online on how to do that "by hand", but I want to point out a couple, very useful, solutions for other fellow developers:

  • Bob Matcuk's gist perfectly describes all the steps to manually symbolicate a crash report, including checking the build number; this involves using the atos command in Terminal, which is not bad at all, but it can get a bit repetitive if you want to check more addresses (lines).
  • Tomaz's Symbolicator is a Swift Xcode project that compiled right out the box (sometimes, with Swift the language fast-paced evolution makes you work a bit before a project from the Internet actually builds) generating a very easy to use command line application that automatically fetches the DSYM files from the Xcode archives and overwrites the crash report with functions and line numbers that a simple human being like myself can actually understand.



GlanceCam 1.2

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

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! 🐣