What is next for Ink Calendar 2.3+

I have been working on bug fixes and planning the next slate of features for Ink Calendar.

New Features being planned and designed

  • More space for writing
  • Extra writing pages
  • Week numbers more places
  • Text on views
    • Clickable Hyperlinks
  • Surface more Custom Views
  • More?
    • Leave a comment or email me if you have another idea you’d like to see added!

Bugs or Issues being worked on

  • Appointment Management Bug in Windows
  • Use latest Microsoft Identity packages
  • Use WinUI 2.7
  • Improving defaults to be more of what people expect
  • Better explanations in the app
    • How Ink Calendar gets appointments
    • How to add or remove accounts
    • How to sync ink etc.
  • General bug fixes
    • Custom Views not updating when changing view settings
    • Reducing memory usage
    • More tests for different elements on the app
    • Better cloud sync error management

I hope Ink Calendar has been working well for you! Feel free to reach out if you have anything you’d like to share.

Joe

Windows’ AppointmentManager Bug

Windows has a bug when it comes to the AppointmentStore API. Somehow the AppointmentManager gets into a bad state which fails to acknowledge new appointments, and fails to provide updated appointment information. This means when adding an appointment Ink Calendar has no way of getting that new appointment data back from Windows 10.

How does this affect you?

When adding appointments to Ink Calendar they will not refresh or show up even when restarting the app. Ideally this is the worst case, but in some cases this bug results in Ink Calendar crashing.

What is being done about this?

I have made a separate app to demonstrate the several bugs within the AppointmentManger API but Microsoft has failed to acknowledge these bugs. When submitting a crash report through the Feedback Hub when this issues was being demonstrated Microsoft dismissed the feedback and did not provide guidance or any updates.

A post has been made to the Microsoft Q&A website on how to best “refresh” the AppointmentManager to stop getting stale data, but no progress has been made there.

What will happen?

It is unclear if this bug will ever get the attention required to be fixed. In the mean time Ink Calendar should work and not crash, but will occasionally have old calendar data. I have experienced this bug on Windows 11 as well, so the fix is not on the horizon as far as I can tell. I will continue working to find a solution, but in the mean time feel free to reach out to Microsoft, file feedback, and let the company know how this bug is affecting you.

Thanks for sticking with Ink Calendar through this pain. And if you have a fix for this bug please reach out, support at inkcalendar dot com, comment below, or tweet at me TheJoeFin.

Joe

Obsessing over bug fixes and performance

For the last several versions of Ink Calendar I have been focusing on fixing bugs. I am trying to do everything in my power to fix every single instance of crashing and performance issues. Watching every crash in AppCenter and doing what I can to understand and fix the root cause.

Stability ebbs and flows due to me rearchitecting the app to be more robust overall. One major source of crashes in the past month were related to me using a different system for triggering timers. This new system was the modern way of having reoccurring checks for new ink in the cloud and loading and syncing. I have since been able to refine my implementation and have seen crashes reduce significantly.

Another major area of focus has always been memory usage and the speed for views to load. With the next update (2.2.17) I’ll be rolling out a new cache method when switching between views. In my testing this new method is robust and reduces possible memory leaks from switching back and forth between views.

With any new addition like this the risk of bugs being introduced is high. However, the opposite is also very possible. Ideally with fewer objects hanging around in memory doing strange things Ink Calendar should be more stable. I test Ink Calendar on three devices in a variety of different ways. In addition to manual testing I write unit tests to ensure methods are robust and fault tolerant.

Hopefully you’ve stuck around over the years while I’ve been working on Ink Calendar. I want to believe the app has become a great app and delivers way more value to users. As always, I’m open to any feedback or suggestions. Just email support at inkcalendar dot com.

Joe

Is Google Ads a scam for indie developers?

It sure feels like it.

Ink Calendar is a hobby project for me. I work as a mechanical engineer for my primary income. I would love to be an indie Windows app developer full time, but it doesn’t seem like that is in my near future. I am frequently trying out new ways to get Ink Calendar in front of potential users. An easy way this can be done is use online advertising.

In early May of 2021 I launched a Google Ads campaign for Ink Calendar. The ad directed people to this blog InkCalendar.com where the “Get From Microsoft” button is right at the top eager to be clicked. I ran the campaign for 3 weeks and spent $179 for around 883 clicks and 55k impressions.

To judge the ads performance I used the stats from WordPress, and initially I was impressed… then I dug a little deeper. Here are the WordPress stats around the time of the ad campaign:

Week ofViewsVisitors
3/1/20217444
3/8/202110374
3/15/202110258
3/22/20219765
3/29/20218660
4/5/20219461
4/12/2021180103
4/19/20219453
4/26/20218048
5/3/20217750
5/10/2021 (campaign begins)308350
5/17/2021477388
5/24/2021 (campaign ends)495390
5/31/20219358
6/7/202111658

At first look these stats are impressive! The weeks during the ad campaign had on average 6x more traffic! Exactly what I wanted! However I did notice there was not a similar increase in app downloads, so I checked to see if these new visitors were clicking on the link to get the app. Here are those numbers:

Week ofViewsVisitorsStore Clicks% of visitors click
3/1/202174441023%
3/8/2021103742128%
3/15/2021102581729%
3/22/202197651218%
3/29/202186601118%
4/5/202194611525%
4/12/20211801031717%
4/19/202194531325%
4/26/202180481123%
5/3/20217750714%
5/10/2021 (campaign begins)308350216%
5/17/2021477388195%
5/24/2021 (campaign ends)495390154%
5/31/20219358712%
6/7/2021116581424%

These numbers were pretty shocking to me. The weeks during the ad campaign had no significant change in store link clicks. In fact when looking at what percentage of visitors clicked the store links the ad campaign had terrible performance.

I am aware advertising for Ink Calendar is not the same as general business advertising. Plumbers or restaurants in an area use ads to win customers from their very similar looking competition. I’m still not completely sure what is going on with this or what to make of these numbers. But here are the things I know for sure:

  • I am no closer to being a full time indie dev
  • I will never use Google Ads to promote Ink Calendar again

A side anecdote, I would wake up around 6:00am Central Time and by that time there were already a large number of views to Ink Calendar for that day. The ad only ran in the US and the new traffic to this blog was also only from the US. I cannot understand why I’d have a couple hundred of view before the day had even begun. Very suspicious in my opinion.

Let me know what you think, either in the comments below or on twitter @theJoeFin

Joe

Fixes and Efficiencies

An updated was submitted to the Microsoft Store yesterday which contained a few key fixes bringing efficiencies to Ink Calendar. A newly discovered issue with Ink Calendar happened to be the way the Appointment Store was being used. Now I am calling a single instance of the Appointment Store which improves loading speed, memory usage, and appointment reliability.

There is more work to be done in this area and there are still strange behaviors with the Appointment Store API surrounding change notifications. I am trying to figure out what might be causing duplicate notifications when an appointment is added to the calendar.

Work to be done

I discovered today that adding appointments to the Windows calendar does not work well without an internet connection. Ink Calendar in the future will not enable appointment adding if the internet is not available. This should improve the experience as a whole because today the API simply fails with no warning or error.

Extra writing space has been a requested feature for some time, and it is a feature I have experimented with. Also adding text and hyperlinks to the canvas will eventually make its way to Ink Calendar.

As always thanks for using Ink Calendar!

Joe

Great Features in 2.2

Add images to your calendars alongside your inking! This feature has been on my roadmap for years. Finally I focused on the feature and got it working.

To add images to the canvas click the “Add Image” button after tapping the canvas

Add Image Button

To modify the images click the Enter Image button. Once in Image Mode use the mouse or touch to move and resize the images around the calendar.

Enter and leave image mode
Two finger move, resize, and rotate

In addition to adding images to the calendar, several bugs have been fixed.

  • Background images do not flicker
  • Changing calendar settings more reliable
  • OneDrive sync faster and better indicator

Let me know how Ink Calendar is working for you!

Joe

Roadblocks to Fixing Known Issues

Cover Photo by Ashkan Forouzani on Unsplash

I have been working on Ink Calendar since October 2017. Since then the app has grown to be much more capable and complex. When developing I expect there will be issues with my code, but as I have discovered there are also major issues with Windows APIs. In this post I plan to layout the issues I have been trying to fix for years with no success.

Ink Analysis Crash

One of the obvious hallmarks of Ink Calendar is the inking. Inking is different than traditional computer inputs like keyboard and mouse. A powerful inking experience requires quick selection and the ability to convert from ink to text. Lucky for me Microsoft makes this very easy with an API.

However this same magical API called InkAnalysis is the single biggest source of instability within Ink Calendar. My personal guess is this API is not heavily used because it has not improved or changed since I have been using it. Also Microsoft’s documentation on how to isolate the application from the InkAnalyzer does not exist. I have been working with the team to resolve issues; so far with no success.

Calendar API Errors

The other headline feature in Ink Calendar is the Calendar part. When users ink on a day and want to add that day to their Calendar in a more formal way there is a very easy API which can be called to add the appointment to the user’s calendar. However this API is frequently and randomly broken. No good feedback on a successfully added appointment. This means as a developer I have to guess if the appointment was added or the dialog was just canceled by the user.

Within the same AppointmentManager API is getting the user’s calendar appointments to show them on the calendar. This also is broken randomly and does not provide up-to-date appointment data. This completely prevents Ink Calendar from being able to provide a seamless calendar application. There is no clear way to connect with Microsoft regarding this issue and I have tried several different avenues.

Azure Pipelines

Building UWP apps and submitting them to the Microsoft Store should be the easiest Azure Pipeline that exists, but it is such a terrible experience there is no wonder UWP was never widely adopted. When users finally get pipelines working they randomly break with totally unhelpful error messages “internal compiler error.”

Does Microsoft Want UWP Developers to be Successful?

It doesn’t seem like it. When compared to other platforms like iOS and Android, UWP devs have no advocates within Microsoft. All of the recent developer and technology investments have been made last and worst for UWP experiences. Azure DevOps, AppCenter, C# language, .NET 5, are best when not developing a Windows GUI application. UWP is ignored and abandoned. Microsoft’s own 15 year old framework WPF has gotten more support than UWP.

I want to be an independent UWP developer, but as time goes on it becomes clear UWP is the bastard child of Microsoft.

Selection Time in 2.1

Work has been going well on Ink Calendar 2.1. The major new feature is selection time. This feature is simple; on week and month views, show text of when the selected ink is. There is a dot which will highlight the exact location being picked when trying to understand the date.

I personally find this feature useful when planning out an itinerary for trips. When I’m zoomed in tight on a week view it can be hard to tell which hour is which and which day is which. Now with selection time it is obvious.

In addition to selection time 2.1 should be faster to load views, more memory efficient, and hopefully fixes a few bugs.

As always, thanks for using Ink Calendar,

Joe

Freezing and Crashing issues

Finding and fixing bugs is a constant struggle with any software. It has been a painstaking process of narrowing down exactly what and where the bug resides in code. With Ink Calendar I group crashes into a few different categories.

  • File read/write
  • Microsoft Graph
  • Unspecified Error
  • null References

Recently I was emailed by a user who mentioned OneNote was unstable until they turned off ink analysis. So in Ink Calendar version 2.0.7 there is a new toggle switch to disable ink analysis.

Turning off ink analysis should help with crashes. If you make this switch and it helps please let me know. The ink analysis is a Windows 10 API, so if there is an issue, I’ll collect what I hear from users and reach out to Microsoft.

Other than analysis issues file read/write issues are largely related to the Microsoft Graph which does the cloud syncing. I can improve the cloud service, but some things are beyond the scope of Ink Calendar.

Finally null reference errors almost all come from getting appointments from Windows 10. The Windows 10 appointments API has some issues with not getting fresh appointments. Also there maybe intermittent access issues resulting in null references. There is a helper in Ink Calendar which checks to see if Ink Calendar has access to the user’s calendars. Even though this check runs before attempting to get calendar data, the data can still return null.

If you are seeing consistent repeatable crashes with Ink Calendar I would like to hear from you so I can get to the bottom of the issue.

As always thank you for using Ink Calendar and please feel free to email me (support at inkcalendar dot com).

Joe