<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://cdf1982.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://cdf1982.com/" rel="alternate" type="text/html" /><updated>2026-10-17T04:14:09+00:00</updated><id>https://cdf1982.com/feed.xml</id><title type="html">cdf1982.com</title><subtitle>Ciao, I’m Cesare. I&apos;m an indie Mac and iOS developer and this is the home for my apps and blog.</subtitle><author><name>Cesare Forelli</name></author><entry><title type="html">Why Italian politics is “a bit of a mess”</title><link href="https://cdf1982.com/2026/10/17/italian_politics_is_a_bit_of_a_mess.html" rel="alternate" type="text/html" title="Why Italian politics is “a bit of a mess”" /><published>2026-10-17T00:00:00+00:00</published><updated>2026-10-17T00:00:00+00:00</updated><id>https://cdf1982.com/2026/10/17/italian_politics_is_a_bit_of_a_mess</id><content type="html" xml:base="https://cdf1982.com/2026/10/17/italian_politics_is_a_bit_of_a_mess.html"><![CDATA[<link rel="stylesheet" href="/assets/css/italy-politics-2026.css" />

<div class="itpol" id="itpol">
	<div class="itpol-scroll"></div>
	<p class="itpol-hint">Scroll sideways to see the whole chart →</p>
	<div class="itpol-positions"></div>
	<div class="itpol-callout"><strong>Why 42% matters:</strong> at the next general election, the coalition that reaches 42% of the vote is expected to get a majority bonus.</div>
	<div class="itpol-key"></div>
	<p class="itpol-source">Source: Only Numbers poll by A. Ghisleri, 14–15 October 2026, presented on <a href="https://www.facebook.com/Realpolitikofficial/videos/intenzioni-di-voto-alle-elezioni-politichei-sondaggi-di-alessandra-ghisleri-a-re/1629165375280246/">Realpolitik</a>. Party shares are of voters who expressed an intention; undecided/abstaining respondents shown separately.</p>
</div>
<script src="/assets/js/italy-politics-2026.js"></script>

<p>Lately I’ve found myself trying to explain, more than once, why I describe the Italian political landscape as <em>“a bit of a mess”</em>. Truth is, that’s an understatement: <strong>more than half of Italians who express a voting intention plan to vote for parties with horrible positions</strong>.</p>

<p>So, I asked Claude to make me the chart above <em>(sorry if it’s not really mobile-friendly)</em>.</p>

<p>You can say it’s my opinion, but my opinion is that if you disagree that dropping support for Ukraine is playing Putin’s game, you are wrong and, worse, not very bright.</p>

<p>The bar shows the latest voting intentions, party by party, arranged from left to right and grouped by coalition; hover to learn how bad things are. 😭</p>

<p>The annotations around it make my point: <strong>on the left there are parties with multiple antisemitic stances</strong> <em>(yes, really, I’m not saying Pro-Palestine though they like to mask it that way: they hold positions that are actively against Jewish people)</em>, <strong>on the right parties with multiple racist stances against Muslims</strong> <em>(starting from the pretty common around the world “nationals first” position of the current leading party to the really unhinged positions from this moronic retired army general that somehow gained traction outside the current government coalition)</em>, and scattered <strong>across the whole spectrum an undue Russian influence</strong>.</p>

<p>I realize there are probably other horrible (or just plain stupid) positions I haven’t mapped here, and that such a gathering of idiots most likely expresses racism toward other minorities too; but these are the main positions that push more than half the voters in two to shout <em>“Mine! Mine!”</em>.</p>

<p>A disclaimer: the numbers come from a single poll, and polls are polls. But it changes very little if a party is overestimated by one point or underestimated by two; the shape of the problem stays exactly the same.</p>]]></content><author><name>Cesare Forelli</name></author><category term="politics" /><summary type="html"><![CDATA[One chart to explain why, as an Italian voter, I struggle to find a side I can stand behind.]]></summary></entry><entry><title type="html">700</title><link href="https://cdf1982.com/2026/03/18/700.html" rel="alternate" type="text/html" title="700" /><published>2026-03-18T00:00:00+00:00</published><updated>2026-03-18T00:00:00+00:00</updated><id>https://cdf1982.com/2026/03/18/700</id><content type="html" xml:base="https://cdf1982.com/2026/03/18/700.html"><![CDATA[<p>Today <strong>GlanceCam reached 700 Mac App Store ratings</strong>.</p>

<p>My personal celebration has been shipping <em><a href="/glancecam/glancecam-release-notes">a few good updates</a></em> recently, plus the significant and progress I’m making with the new GlanceCam app for iPhone, iPad, Apple Watch and Apple TV that will arrive as a separate product later this year.</p>

<p>But the occasion requires to actually stop coding and for me to take a moment to thank all Users who joined me in this journey, that amazingly started over 8 years ago: you’ve provided great support, suggestions and encouragement, and GlanceCam would not exist without you!</p>

<p>To the next 100 ratings, I’ll do my best to make them all 5 stars!</p>]]></content><author><name>Cesare Forelli</name></author><category term="glancecam" /><summary type="html"><![CDATA[Today GlanceCam reached 700 Mac App Store ratings.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://cdf1982.com/assets/images/blog/2026-03-18-700/700-glancecam-ratings.png" /><media:content medium="image" url="https://cdf1982.com/assets/images/blog/2026-03-18-700/700-glancecam-ratings.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">GlanceCam 4.6 with Minimalistic GlanceGrids and more</title><link href="https://cdf1982.com/2026/02/11/glancecam_4_6.html" rel="alternate" type="text/html" title="GlanceCam 4.6 with Minimalistic GlanceGrids and more" /><published>2026-02-11T00:00:00+00:00</published><updated>2026-02-11T00:00:00+00:00</updated><id>https://cdf1982.com/2026/02/11/glancecam_4_6</id><content type="html" xml:base="https://cdf1982.com/2026/02/11/glancecam_4_6.html"><![CDATA[<p><strong><a href="https://www.glancecam.app">GlanceCam 4.6</a> is <a href="https://itunes.apple.com/us/app/glancecam-ip-webcam-viewer/id1360797896">out now</a></strong>, and this update (the 43rd free one since launch in 2018) is packed with features and improvements!</p>

<p>I’ve kept busy, and the <a href="/glancecam/glancecam-release-notes#4_6">release notes</a> include all the details. Here I’ll go over what’s new quickly.</p>

<p>This update includes one of the most requested features: <strong>GlanceGrids now support the Minimalistic user interface style</strong>. GlanceCam Pro’s “Minimalistic” UI option (in <em>Settings</em> &gt; <em>Appearance</em>) hides the titlebar and window controls, leaving just the camera feed on screen; it’s been available for single camera windows for a years and Users love it. Now it works with GlanceGrids too: move your mouse into the grid window and the titlebar and controls appear; move it out and they hide again, leaving just your camera image unobstructed. It works seamlessly with full-screen mode, InstaZoom, Roll-Up, window snapping, and dynamic resizing.</p>

<p><strong>Custom window size</strong> is another addition I’m really pleased with: you can now save your preferred window dimensions (<em>Window</em> &gt; <em>Save custom size</em>) and quickly apply them to any camera window or GlanceGrid with Cmd-4. It’s one of those small things that makes your daily setup so much smoother.</p>

<p>A few more things I want to call out:</p>

<ul>
  <li>
    <p><strong>Smarter settings reloads</strong>: saving Settings no longer reloads <em>every</em> camera when it doesn’t need to; only the cameras you actually edited get refreshed.</p>
  </li>
  <li>
    <p><strong>GlanceGrid audio button</strong>: grid tiles now show a dedicated audio button in the bottom right corner, so you no longer have to rely on the contextual menu.</p>
  </li>
  <li>
    <p><strong>Shorter Cycle mode intervals</strong>: the minimum interval has been reduced from 10 to 5 seconds (recommended only for cameras on the local network).</p>
  </li>
  <li>
    <p><strong>Prevent screensaver</strong>: a new option in Settings &gt; Behavior lets you prevent the screensaver and display sleep while GlanceCam is running. My recommendation is to leave it off for the scary (valid!) reasons explained in the alert when you try to enable it, but it’s there if you need it and understand the risks.</p>
  </li>
  <li>
    <p><strong>StoreKit 2 under the hood</strong>: this is a big change that keeps offline installations of GlanceCam Pro on Tahoe more reliably unlocked. One consequence is that GlanceCam now requires macOS 10.15 Catalina.</p>
  </li>
  <li>
    <p>A <em>long</em> list of <strong>GlanceGrid reliability improvements and bug fixes</strong>: better tile positioning, more consistent resizing, fixes for Roll-Up and InstaZoom edge cases, and more.</p>
  </li>
</ul>

<p>As you can tell, a lot of this release was shaped by your feedback and suggestions. <strong>I want to thank Keith, Mark, James, Rob, Martijn, Nicholas, Suzanne, Darren, Edo, Craig, Geraint, Jay and Eric</strong> for their feature requests, detailed reports and patience. That’s what I love about working on GlanceCam: it’s a conversation between me and the people who use the app every day.</p>

<p>Speaking of what’s next: with 4.6 out the door, my focus for the coming months will be on <strong>GlanceCam for iPhone, iPad and Apple Watch</strong>. I’ve been working on this new separate app for a long time now, and it’s shaping up really nicely. I can’t wait to get a great 1.0 on the App Store later this year.</p>

<p>Of course, GlanceCam for Mac isn’t going anywhere and will keep getting better! I already have a packed list of things I want to add in 4.7, and who knows, maybe I’ll be able to put out a quick update with a few niceties before getting back full time on the new app… so much to do, so little time!</p>

<p><strong>If you haven’t already, <a href="https://itunes.apple.com/us/app/glancecam-ip-webcam-viewer/id1360797896?l=it&amp;ls=1&amp;mt=12">download GlanceCam 4.6</a></strong> and, if you have a moment, a 5-star review would mean the world to me. Pro upgrades and tips are also very appreciated and keep development going. And please, tell a friend who might find GlanceCam useful!</p>

<p>As always, if you have suggestions or need assistance, I’m <a href="mailto:support@cdf1982.com">here</a> for you.</p>]]></content><author><name>Cesare Forelli</name></author><category term="glancecam" /><summary type="html"><![CDATA[GlanceCam 4.6 is out now, and this is one of the most feature-packed updates in a while. The 43rd free update since launch in 2018!]]></summary></entry><entry><title type="html">Best of 2025</title><link href="https://cdf1982.com/2025/12/31/best_of_2025.html" rel="alternate" type="text/html" title="Best of 2025" /><published>2025-12-31T00:00:00+00:00</published><updated>2025-12-31T00:00:00+00:00</updated><id>https://cdf1982.com/2025/12/31/best_of_2025</id><content type="html" xml:base="https://cdf1982.com/2025/12/31/best_of_2025.html"><![CDATA[<p>Quite at the last minute, I’m keeping my <em><a href="https://cdf1982.com/tag/best-of-the-year">tradition</a></em> to compile a list of some of my favorite media items I’ve enjoyed in the last 12 months.</p>

<p>This year, for the first time, I’m not awarding some categories (best song, best album, best book) as I don’t feel anything stood out particularly, or maybe I just didn’t have the time to enjoy those things enough. And as always, no affiliate links: this is mostly for myself, to look back and rediscover things in a few years, but maybe you can pick up some interesting stuff you might have missed.</p>

<p><strong>Best movie</strong>: <a href="https://www.imdb.com/it/title/tt32376165/?ref_=rt_t_7">A House of Dynamite</a>; runner up, <a href="https://www.imdb.com/it/title/tt12908150/?ref_=rt_t_17">The Life of Chuck</a>. Both are wonderful movies, and they couldn’t be more different from each other.</p>

<p><strong>Best TV show</strong>: <a href="https://www.imdb.com/it/title/tt9253284/?ref_=nv_sr_srsg_1_tt_4_nm_3_in_0_q_andor">Andor</a>; runner up <a href="https://www.imdb.com/it/title/tt3581920/?ref_=fn_t_1">The Last of Us</a>. Funny, two second seasons that in some ways surpassed the first ones; not funny how depressing both are, but again very good and recommended.</p>

<p><strong>Best podcast</strong>: <a href="https://thisiscriminal.com/episode-301-guns-grenades-and-100000-24-1-2025/">Criminal - Guns, Grenades, and $100.000</a>.</p>

<p><strong>Best article I read</strong>: <a href="https://www.theatlantic.com/family/archive/2024/11/dog-lamb-chop-toy-obsession/680691/?gift=jkTYBwPCF5hbqxWTKTI6-_JpYHU2P958ft2LeFKUfK4">Why Are Dogs So Obsessed With Lamb Chop?</a>… and no, Milla did not care one bit when I got her one.</p>

<p><strong>Best Mac app</strong>: <a href="https://www.codeweavers.com">CrossOver</a> for enabling me to play some pretty amazing games on my Mac; I thought of awarding <a href="https://windsurf.com">Windsurf</a>, which was a pretty transformative tool for me this year, but a. it’s just a VSCode fork and there’s no way I’d celebrate a non-native app, plus b. there’s nothing particularly unique about it, clearly AI-powered IDEs are here to stay, but I’m not sure this one in particular will be the winner in the long run.</p>

<p><strong>Best iOS app</strong>: Once again, Shortcuts, for unlocking amazing automations. Runner up(s): <a href="https://getdrafts.com">Drafts</a> and <a href="https://www.omnigroup.com">OmniFocus</a>, because without them I would not function.</p>

<p><strong>Best videogame</strong>: This is a hard one: in the last week I’ve been putting <em>a lot</em> of hours in <a href="https://www.expedition33.com">Clair Obscur Expedition 33</a> and it’s clearly a masterpiece, deep, challenging and with amazing (mind blowing, really) graphics, but it’s really fresh in my mind and incredibly exciting. So I’ll suspend my judgement until I’ve completed it, and will award it in 2026. Which means that 2025 goes to <a href="https://www.rockstargames.com/it/reddeadredemption2">Red Dead Redemption 2</a>, which might be a few years old, but I’ve only played this year and remains the most vast and compelling videogame world I’ve ever experienced, and I don’t even like western movies.</p>

<p><strong>Best video</strong>: What a gloomy year! I was scrolling my YouTube likes of the year and it’s so tainted by the disgrace leading America that I really struggled to find something inspiring, so I’ll finish things up by letting you have a laugh at <a href="https://www.youtube.com/watch?v=5gNT0SWf3Ls&amp;list=LL&amp;index=35">this ad from a few years ago</a> which I only discovered in 2025, because the Internet let me down.</p>

<p>From me and Milla, a heartfelt wish for the <strong>Happiest and most serene 2026! 🥂</strong></p>]]></content><author><name>Cesare Forelli</name></author><category term="best-of-the-year" /><summary type="html"><![CDATA[Quite at the last minute, I’m keeping my tradition to compile a list of some of my favorite media items I’ve enjoyed in the last 12 months.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://cdf1982.com/assets/images/blog/2025-12-31-best_of_2025/Milla_sulla_neve.jpeg" /><media:content medium="image" url="https://cdf1982.com/assets/images/blog/2025-12-31-best_of_2025/Milla_sulla_neve.jpeg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">LifePace 1.1</title><link href="https://cdf1982.com/2025/09/20/lifepace_1_1.html" rel="alternate" type="text/html" title="LifePace 1.1" /><published>2025-09-20T00:00:00+00:00</published><updated>2025-09-20T00:00:00+00:00</updated><id>https://cdf1982.com/2025/09/20/lifepace_1_1</id><content type="html" xml:base="https://cdf1982.com/2025/09/20/lifepace_1_1.html"><![CDATA[<p>In case you missed my constant self-promotion on Mastodon 🙃, this week I introduced <a href="https://cdf1982.com/lifepace/lifepace.html"><strong>LifePace</strong></a>, my new habit tracker for iOS 26, iPadOS 26, macOS Tahoe and Apple Watch.<br />
LifePace is designed to give you the <strong>structure to stay consistent</strong> and build progress, one small step at a time.</p>

<p>Today I’m happy to share the first update: <strong>LifePace 1.1</strong> focuses on <strong>speed</strong> and <strong>more effective reminders</strong>, so you can keep moving forward with less effort:</p>

<ul>
  <li>
    <p><strong>Much faster performance</strong><br />
You know how they say about the best plans not resisting an encounter with reality? Turns out that Users importing a decade of data from other apps stress-test your app on a whole different level, and that’s a good thing for everyone because now scrolling through long histories, checking stats, and completing habits is smoother and more responsive for everyone.</p>
  </li>
  <li>
    <p><strong>Full-screen alarms</strong><br />
On iOS 26 and iPadOS 26, you can now enable AlarmKit-based <strong>full-screen alarms</strong> for habits you never want to miss, just like wake-up alarms.<br />
On devices that don’t support AlarmKit (like the Mac), LifePace continues to use standard notifications. By default, reminders remain gentle everywhere: you decide which habits deserve an alarm by toggling <strong>Alarms</strong> on in each habit’s configuration.</p>
  </li>
  <li>
    <p><strong>Focused Review view</strong><br />
The Review screen now shows only your <strong>active habits</strong>.</p>
  </li>
</ul>

<p>If you haven’t already, you can <a href="https://apps.apple.com/us/app/lifepace-habit-streaks-tracker/id6751773159"><strong>download LifePace today on the App Store for free</strong></a>.</p>

<p>And if you find it useful, a 5-star review really helps others discover LifePace, and <strong>LifePace Pro</strong> will let you track unlimited habits while fueling future updates.</p>

<p>Thanks for being part of this journey!<br />
–Cesare</p>]]></content><author><name>Cesare Forelli</name></author><category term="lifepace" /><summary type="html"><![CDATA[LifePace 1.1 brings major performance improvements and full-screen alarms on iOS 26 and iPadOS 26]]></summary></entry><entry><title type="html">🚀 Introducing LifePace – Build habits that last</title><link href="https://cdf1982.com/2025/09/15/lifepace_build_habits_that_last.html" rel="alternate" type="text/html" title="🚀 Introducing LifePace – Build habits that last" /><published>2025-09-15T00:00:00+00:00</published><updated>2025-09-15T00:00:00+00:00</updated><id>https://cdf1982.com/2025/09/15/lifepace_build_habits_that_last</id><content type="html" xml:base="https://cdf1982.com/2025/09/15/lifepace_build_habits_that_last.html"><![CDATA[<p>For years I wanted a <strong>habit tracker that helped build consistency without getting in the way</strong>.</p>

<p>It’s not like I strive to be a <em>quantified self guru</em>, but keeping track of some things is nice and I believe long streaks are powerful: when you have one going you think twice before breaking it!</p>

<p>The apps I tried never clicked for me: they were either slow (really long presses just to mark a habit done, distracting home screens with more marketing fluff than I can tolerate…) or unnecessarily rigid, with a limited number of habits trackable and the expectation that you never missed a day. If I forget to check off a habit one day, and you make me dig through convoluted menus to fix that, we won’t be friends for long…</p>

<p>All these annoyances lead me to build <a href="https://cdf1982.com/lifepace/lifepace.html"><strong>LifePace</strong></a>: I wanted a habit tracker that is fast to use, forgiving when life gets in the way, truly private, and always motivating. A companion designed to <strong>turn good intentions into long-lasting results</strong> by staying out of the way while being available where you need it.</p>

<h3 id="why-should-you-consider-giving-lifepace-a-try"><strong>Why should you consider giving LifePace a try?</strong></h3>

<p>You can <a href="https://apps.apple.com/us/app/lifepace-habit-streaks-tracker/id6751773159"><strong>download LifePace today on the App Store for free</strong></a>, and you really should, because <strong>consistency is the foundation of real progress</strong>.</p>

<p>Big changes don’t come from sudden leaps, but from the small steps we repeat daily; any software developer can tell you that’s very true: you show up every day and move the needle a little bit, <a href="https://www.reddit.com/r/getdisciplined/comments/1q96b5/comment/cdah4af/">no 0 days</a>.</p>

<p>LifePace is designed to make taking those daily steps easier:</p>

<ul>
  <li><strong>Human streaks</strong>: celebrate consistency without punishing the occasional skip.</li>
  <li><strong>Optional Hard Mode</strong>: for stricter goals that don’t allow slips (for instance, when fighting addiction).</li>
  <li><strong>Smart schedules &amp; reminders</strong>: customisable nudges that actually help, not overwhelm.</li>
  <li><strong>Widgets &amp; complications everywhere, plus Siri &amp; Shortcuts</strong> as first class citizens: check and complete habits everywhere, from the Lock Screen, Home Screen, Control Center, Apple Watch and embed actions into your personal automations.</li>
  <li><strong>Private by design</strong>: iCloud sync, optional Face ID unlock, no ads, no analytics.</li>
  <li><strong>Apple Intelligence</strong>: on-device summaries and habit suggestions, with a toggle to turn it off.</li>
</ul>

<p>From day one, LifePace works seamlessly on <strong>iPhone, iPad, Mac, and Apple Watch</strong>.</p>

<h3 id="the-design"><strong>The design</strong></h3>

<p>I like to say LifePace has <em>the right amount</em> of <strong>Liquid Glass</strong> and local <strong>Apple Intelligence</strong>: the interface is modern and motivating without being too much, while on-device foundation models provide summaries and suggestions you can actually use.</p>

<p>You can choose between <strong>List</strong> and <strong>Grid</strong> views, enjoy clear stats and graphs, and rely on subtle haptics and sounds that make every completion satisfying. Above all, interactions are immediate and frictionless: a single tap to complete (double-tap on grids), with quick access to your full history.</p>

<h3 id="just-the-beginning"><strong>Just the beginning</strong></h3>

<p>LifePace 1.0 launches alongside iOS 26 and macOS Tahoe on <strong>Monday, September 15</strong>.</p>

<p>It’s free to try (track 1 habit) with a fair <strong>Pro upgrade</strong> for unlimited habits: you can choose your level of commitment with a yearly subscription and a lifetime unlock.</p>

<p>Today is just the start, and I’m excited to keep improving LifePace with your feedback.</p>

<p>Launching a new app is always both exciting and a little terrifying: you spend <em>so</em> many hours designing, coding, testing, polishing… and then you press “release” and hope someone notices. If you’re reading this, it means you did, and I couldn’t be more grateful.</p>

<p>I’d love to hear your thoughts about LifePace! Feedback is <a href="mailto:support@cdf1982.com">always welcome</a>, and if you enjoy the app, a 5-stars review on the App Store goes a long way in helping an indie dev like me.</p>

<p><a href="https://apps.apple.com/us/app/lifepace-habit-streaks-tracker/id6751773159"><strong>Download LifePace today on the App Store</strong></a> and start building habits that last!</p>]]></content><author><name>Cesare Forelli</name></author><category term="lifepace" /><summary type="html"><![CDATA[LifePace is my new habit tracker for iOS 26, iPadOS 26, macOS Tahoe and Apple Watch]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://cdf1982.com/assets/images/lifepace/LifePace.png" /><media:content medium="image" url="https://cdf1982.com/assets/images/lifepace/LifePace.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">GlanceCam’s 7th birthday, a big announcement and version 4.5 with Alternate Glances</title><link href="https://cdf1982.com/2025/03/29/glancecam_is_7_years_old_and_ios_is_coming.html" rel="alternate" type="text/html" title="GlanceCam’s 7th birthday, a big announcement and version 4.5 with Alternate Glances" /><published>2025-03-29T00:00:00+00:00</published><updated>2025-03-29T00:00:00+00:00</updated><id>https://cdf1982.com/2025/03/29/glancecam_is_7_years_old_and_ios_is_coming</id><content type="html" xml:base="https://cdf1982.com/2025/03/29/glancecam_is_7_years_old_and_ios_is_coming.html"><![CDATA[<p><b>7 years ago today, an <a href="https://www.glancecam.app">IP camera viewer</a> <em>you might know</em> debuted in the <a href="https://itunes.apple.com/us/app/glancecam-ip-webcam-viewer/id1360797896?l=it&amp;ls=1&amp;mt=12">Mac App Store</a></b>.</p>

<p>Back then, I would have never imagined many were looking for a native, privacy-focused app like the one I had built, and I want to take a moment today to <b>thank you all for your support</b>: your initial purchase, nice App Store reviews, upgrades to GlanceCam Pro, tips and great suggestions made it possible for me to keep working on GlanceCam and make it better, update after update <i>(this is the 42nd, and it brings a much-requested feature, as you’ll see below)</i>.</p>

<p>Rest assured that, with your support, <b>my plan is to keep GlanceCam as the best IP camera viewer for Mac for many years to come</b>: I have so many ideas, the limit is just time!</p>

<p>And what better day for an official announcement?</p>

<p>Many of you asked for it, so in the last year I started building from scratch a <b>new GlanceCam for iPhone, iPad and Apple Watch</b> (and possibly Apple TV, we’ll see ;).</p>

<p>This new project doesn’t share a single line of code with GlanceCam for Mac: much like the GlanceCam you know is made to be an unobtrusive presence on your Desktop throughout the day, the mobile versions are designed to take advantage of their platforms, which mostly means getting in and out of them as quickly as possible.</p>

<p>I’m very proud of the work done so far, but the new app is not ready to ship yet: GlanceCam for iPhone, iPad and Apple Watch will be <b>available later this year as a single separate subscription</b>, distinct from the Mac version of GlanceCam given the independent code-bases and very different feature sets, and I think you’ll love it.</p>

<p>I also don’t want to leave a trace of doubt: <b>GlanceCam for Mac is not going anywhere and is still my main focus<b>, being the app I personally use all day, every day, to look at my cameras; there’s a lot of improvements planned for the coming months, starting today with version 4.5:</b></b></p>

<p>1 - <b>Glances can now have a designated “Alternate”.</b></p>

<p>A frequent feature request is to have a way to toggle between the SD and HD streams of the same camera.
I think what ships today is more versatile: each camera can have an optional “Alternate” - another Glance with a different configuration (like stream quality or type of network access) for the same camera. And Alternates are none other than other Glances already in your list.</p>

<p>You can quickly switch between a Glance and its Alternate by pressing the A key, or the button that appears next to the list of cameras inside the window when an Alternate has been set.</p>

<p>As mentioned, a common use case is having two Glances for the same camera: one configured for SD streaming and another for HD; by setting the HD Glance as the Alternate of the SD one, you can easily toggle between quality levels. But you get to keep two separate entries, allowing quick switching with keyboard shortcuts, use in GlanceGrids, Applescript automations, and so on.</p>

<p>This feature is also useful when you need both LAN and Internet access configurations for a camera, allowing quick switching between connection types depending on where you are.</p>

<p>Alternates are completely optional and work only in single-camera windows (they’re not available in GlanceGrids).</p>

<p>If you think they can fit your workflow, you can configure them in Settings, by clicking the Set Alternate button next to the camera name and following the simple instructions on screen.</p>

<p>When you set an Alternate relationship, it works both ways automatically - if Glance 2 is set as the Alternate for Glance 1, you can toggle between them in either direction.</p>

<p>You even have the option to switch to the Alternate automatically when entering full screen, which is kind of neat if you want to keep the low-resolution stream when the window is small, and get the maximum resolution when you double-click the window to send that camera full-screen. And I know what you’re going to ask, what about Insta-zoom? I tried, and the result wasn’t good enough: when switching to an Alternate, the camera must reload, and that takes time, so this feature doesn’t really fit that use case well.</p>

<p>2 - GlanceCam’s 1…9 single-key shortcuts are the quickest way to switch between your Glances, but are inherently limited to the first nine cameras. Now you can quickly switch to the cameras between 10 and 19 with the Shift key + the Glance number MINUS 10 (Shift-0 for camera 10, Shift-1 for camera 11, and so on); and why stop there? Control+Shift lets you access cameras 20 (Control-Shift-0) through 29 (Control-Shift-9). Hat tip to John, one of the first GlanceCam Users, for asking for a way to quickly access a large number of cameras!</p>

<p>3 - Roll-up, the niche feature of GlanceCam that resembles WindowShade on classic Mac OS, letting you, ahem, “roll-up” a window with the R key, leaving only the title bar visible until the mouse pointer enters its area, had a couple bugs in Sequoia that have now been evicted.</p>

<p><b>If you want to celebrate GlanceCam’s birthday, a 5-star review, the upgrade to GlanceCam Pro if you haven’t yet unlocked the most advanced features or a generous tip would mean the world to me and help keep development going</b>… and as always, if you have any suggestions or need assistance, I’m <a href="mailto:support@cdf1982.com">here</a> for you!</p>]]></content><author><name>Cesare Forelli</name></author><category term="glancecam" /><summary type="html"><![CDATA[GlanceCam is still the best IP camera viewer for Mac, and soon will expand to iOS, iPadOS and Apple Watch]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://cdf1982.com/assets/images/blog/2019-03-29-glancecam_is_one_year_old/glancecam_birthday.png" /><media:content medium="image" url="https://cdf1982.com/assets/images/blog/2019-03-29-glancecam_is_one_year_old/glancecam_birthday.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Your in-app purchase has been returned</title><link href="https://cdf1982.com/2025/02/27/your_in_app_purchase_has_been_returned.html" rel="alternate" type="text/html" title="Your in-app purchase has been returned" /><published>2025-02-27T00:00:00+00:00</published><updated>2025-02-27T00:00:00+00:00</updated><id>https://cdf1982.com/2025/02/27/your_in_app_purchase_has_been_returned</id><content type="html" xml:base="https://cdf1982.com/2025/02/27/your_in_app_purchase_has_been_returned.html"><![CDATA[<p>I’m re-posting here a reply I sent to a Stack Overflow <a href="https://stackoverflow.com/questions/47908871/unable-to-resubmit-in-app-purchase-for-review/">question</a> from 2017, recounting my journey after receiving <em>the most confusing</em> email from App Review:</p>

<blockquote>
  <p>Your in-app purchase has been returned. Fix the marked items and submit it again. For more information, see the Notes from App Review.</p>
</blockquote>

<p>The confusing part was the bold, wrong part below:</p>

<blockquote>
  <p>We have returned your in-app purchase products to you <strong>as the required binary was not submitted</strong>. When you are ready to submit the binary, please resubmit the in-app purchase products with the binary.</p>
</blockquote>

<p>This ordeal happened during the submission process of the 1.0 version of my new app <strong><a href="https://cdf1982.com/sussurro-whisper-ai-transcription.html">Sussurro - Speech to Yext AI</a></strong>.
I’ve yet to blog about it, but for now just know that it is useful if you want to use <strong>Whisper text transcription in the most private way possible on iPhone, iPad and Mac</strong>, and that you can already <strong><a href="https://apps.apple.com/us/app/sussurro-speech-to-text-ai/id6742109110">get it</a> for free</strong> <em>(with a very inexpensive one-time unlock in the sea of weekly subscriptions that is this category)</em> from the App Store!</p>

<p>Here’s how to resolve this rejection, copied-and-pasted from my <a href="https://stackoverflow.com/a/79471937/3765705">SO reply</a>:</p>

<hr />

<p>This question from 2017 was <strong>very much still relevant for me in 2025</strong> and I thought I’d recap what happened to my app and how I finally got to approval.</p>

<p><strong>TLDR</strong>: 7 years old @l-l suggestion to <strong>leave a note to the app reviewer</strong> still does the trick.</p>

<p><strong>Long version</strong> with every step taken, including those that are very specific to my SwiftUI multiplatform app <em>(for which, much like Catalyst, you have to send two separate submissions)</em> that will hardly be relevant to most, but can be ignored:</p>

<ul>
  <li>1.0 app submitted for review, both for iOS and macOS;</li>
  <li>New <em>(duh, can’t submit the first IAP without a new app version)</em> one-time purchase also submitted at the same time, <strong>specifically toggling its submission together with Mac app’s binary in App Store Connect</strong> <em>(on the page where you add all the metadata, screenshots, select the binary)</em>.</li>
  <li>Mac app enters review and is rejected <em>(dumb metadata mistake on my part, shocker)</em>; iOS not in review yet.</li>
  <li>At this point, I had the rejected app, so I took a chance to fix a bug and submit a new binary together with the metadata fix.</li>
  <li>Interestingly, <strong>in the same Connect page where previously I could select to <em>embed</em> the IAP with the app submission, that section was now <em>(and will be for the rest of this journey)</em> missing</strong>; I assumed the in-app purchase would be still in the reviewer’s queue and I submit the new build.</li>
  <li>The Mac app is rejected because the reviewer cannot load the IAP.</li>
  <li>I check my IAP code long and hard <em>(detour: test with both the .storekit file and, essential, in what they call “sandbox” production, i.e. a specific sandbox account you can add in App Store Connect and specify in the Developer settings of the device)</em> and all seems good.</li>
  <li>I change the IAP metadata <em>(you’ll find suggested online to edit the localisation and revert to re-enable the submission button for the IAP; that seems to work)</em> and reply to the app reviewer with a message, so the review can resume.</li>
  <li>The Mac app is rejected for a valid technical reason <em>(forgot a menu item to reopen the main window when closed)</em>, and I am not told if the IAP was there or not.</li>
  <li>I try to ask about that, but I don’t get a reply in the following hours and this is taking too long.</li>
  <li>I fix the bug and submit the third build; again, no way to specify anything about the IAP.</li>
  <li>Mac app enters review again.</li>
  <li>A couple hours later I get the same “helpful” email @gerbil got (<em>“Your in-app purchase has been returned”</em>).</li>
  <li>I check Connect and the Mac app is still in review, while the IAP section shows the most confusing error message of my life: <em>“We have returned your in-app purchase products to you as the required binary was not submitted. When you are ready to submit the binary, please resubmit the in-app purchase products with the binary.”</em>
[My confusion obviously comes from the fact that, without submitting an app binary (which indeed was in review), with a 1.0 app you cannot submit an IAP without attaching it to a new app submission, so what I was supposed to do?]</li>
  <li>Most importantly, at this stage I cannot communicate with the app reviewer because, while the app is in review, the “messages” section is not available.</li>
  <li>I looked online and found little help, apart from this SO post.</li>
  <li>So, after a few hours with the Mac app still in review, I decided to reject it myself.</li>
  <li>To avoid confusion, I also removed from review the separate iOS submission, which still had to start the review process; this <em>won’t be relevant to most people</em>, but in hindsight dealing with one app review at a time seems wise, though inefficient in terms of time.</li>
  <li>Then, I submitted the same build again, again without the ability to add the IAP from where I originally could.</li>
  <li>Most importantly, in the app review notes I wrote this: <strong>Thank you for reviewing my app and the com.xxx.xxx.ProForever in-app purchase that is ALSO currently waiting for review.</strong></li>
  <li>A few hours pass and the app enters review; minutes later, Mac app is approved, along the IAP.</li>
  <li>At this point, I re-submit the iOS app with a note for the reviewer saying the Mac app was just approved with the (shared) IAP.</li>
  <li>iOS app enters and passes review.</li>
  <li>Success.</li>
</ul>

<p>To be clear, <strong>there were mistakes on my part</strong> that lead to two appropriate rejections from app review (the metadata and menu item one).</p>

<p>Nevertheless, <strong>communication from app review is still barebones to say the least</strong>, some automated messages are downright wrong on top of confusing (I’m thinking about the one which started this SO post 8 years ago), the fact that there are moments in which you need to ask them something and can’t because the app is not rejected is downright frustrating, and the App Store Connect UI for attaching IAPs to builds is a ghost you only get to see once.</p>

<p>So, <strong>if you find yourself in a similar scenario, reject your app yourself, put the IAP back in the yellow state, and resubmit with a love letter to the app reviewer asking to also look at the IAP that is sitting in their queue</strong>.</p>

<p>Hope that knowing this is still relevant in 2025 saves a few hours to others. <em>[hence this repost on my blog]</em></p>]]></content><author><name>Cesare Forelli</name></author><category term="dev" /><category term="sussurro" /><summary type="html"><![CDATA[How I resolved an app review rejection for Sussurro Whisper speech to text AI transcription]]></summary></entry><entry><title type="html">Best of 2024</title><link href="https://cdf1982.com/2025/01/01/best_of_2024.html" rel="alternate" type="text/html" title="Best of 2024" /><published>2025-01-01T00:00:00+00:00</published><updated>2025-01-01T00:00:00+00:00</updated><id>https://cdf1982.com/2025/01/01/best_of_2024</id><content type="html" xml:base="https://cdf1982.com/2025/01/01/best_of_2024.html"><![CDATA[<p>A bit later than <em><a href="https://cdf1982.com/tag/best-of-the-year">usual</a></em> here’s my best-of-the-year post.</p>

<p>Same categories from previous years and no affiliate links; I’m in a bit of a rush, so just the list of things I really liked this year, without comments:</p>

<p><strong>Best song</strong>: <a href="https://music.apple.com/it/album/full-of-life/1675341859?i=1675342966">Full of Life</a> from Christine and the Queens</p>

<p><strong>Best album</strong>: <a href="https://music.apple.com/it/album/the-tortured-poets-department/1736268193">The Tortured Poets Department</a> from Taylor Swift</p>

<p><strong>Best book</strong>: Lots of Micheal Connelly, Patterson and Grisham for me this year, and really no “best” award to give out…</p>

<p><strong>Best movie</strong>: <a href="https://www.imdb.com/it/title/tt15398776/?ref_=fn_all_ttl_1">Oppenheimer</a></p>

<p><strong>Best TV show</strong>: <a href="https://www.imdb.com/it/title/tt2805096/?ref_=rt_t_2">Chicago P.D.</a></p>

<p><strong>Best podcast</strong>: <a href="https://thisislovepodcast.com/episode-81-tau-10-8">This is Love episode 81 - Tau = 10.8</a></p>

<p><strong>Best article I read</strong>: <a href="https://www.theatlantic.com/family/archive/2022/09/what-dogs-know-about-people/671454/">What Do Dogs Know About Us</a></p>

<p><strong>Best Mac app</strong>: <a href="https://goodlinks.app">GoodLinks</a></p>

<p><strong>Best iOS app</strong>: <a href="https://github.com/fer0n/Unwatched">Unwatched</a></p>

<p><strong>Best videogame</strong>: <a href="https://store.steampowered.com/app/1954200/Kena_Bridge_of_Spirits/">Kena: Bridge of Spirits</a></p>

<p><strong>Best video</strong>: <a href="https://www.youtube.com/watch?v=w4FB9Omjn94&amp;list=LL&amp;index=85">This Beaver Dam is So Huge, You Can See It from Space</a></p>

<p>Hopefully I linked to something interesting for you to explore… <strong>Happy 2025! 🥂</strong></p>]]></content><author><name>Cesare Forelli</name></author><category term="best-of-the-year" /><summary type="html"><![CDATA[A bit later than usual here’s my best-of-the-year post.]]></summary></entry><entry><title type="html">600</title><link href="https://cdf1982.com/2024/11/04/600.html" rel="alternate" type="text/html" title="600" /><published>2024-11-04T00:00:00+00:00</published><updated>2024-11-04T00:00:00+00:00</updated><id>https://cdf1982.com/2024/11/04/600</id><content type="html" xml:base="https://cdf1982.com/2024/11/04/600.html"><![CDATA[<p>About 11 months after the <a href="https://cdf1982.com/2023/11/30/500.html">previous milestone</a>, my IP camera viewer for Mac, <a href="https://www.glancecam.app">GlanceCam</a>, <strong>reached 600 Mac App Store ratings today</strong>.</p>

<p>While the average rating in that period has been 4.47, numbers are “sticky”, so the overall average hasn’t really moved: it was and still is 4.2 stars. Which is honestly pretty good considering the niche the app is in and the technical barrier configuring cameras sometimes poses.</p>

<p>I want to thank all Users coming along for this journey, taking the time to leave such nice and encouraging reviews, and often provide great suggestions for new features</p>

<p>To the next 100 ratings!</p>]]></content><author><name>Cesare Forelli</name></author><category term="glancecam" /><summary type="html"><![CDATA[About 11 months after the previous milestone, my IP camera viewer for Mac, GlanceCam, reached 600 Mac App Store ratings today.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://cdf1982.com/assets/images/blog/2024-11-04-600/600-glancecam-ratings.png" /><media:content medium="image" url="https://cdf1982.com/assets/images/blog/2024-11-04-600/600-glancecam-ratings.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>