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.
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.
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.
For years I’ve been adding features to Ink Calendar making it more complex. At the same time I’ve been tracking and squashing bugs. This is the classic cycle of app development. With Ink Calendar 1.27 I’ve broken the UI elements into smaller chunks making it easier to reuse them and to find exactly where the bugs are happening.
Since Ink Calendar uses calendar data from Windows 10 that means many of the calendar views are drawn using async methods. Understanding failures in async methods via AppCenter can be tricky. By breaking down the rendering of each UI component into their own UserControl I’ve been able to narrow down exactly where errors are occuring.
Another way 1.27 is more reliable and robust will be in the settings page. The page loading sequence has been reordered to put the longest running tasks at the back and let data validation occur while those long running tasks are happening. Now working hours, agenda start/stop, and week start/stop times should all validate before saving bad data. This was an issue which can be hard to find on my development machine because usually the settings page loaded so fast, but personal usage on my Surface Go highlighted this problem.
The work done in 1.27 doesn’t bring any new major features to users, but should enable me to do some cool view blending in the future. Now that each of these controls are broken out on their own they can be inserted into different views in different ways. Look forward to a possible new blog post about how views could be changing.
As always, thank you for using Ink Calendar. If you encounter any issues please email support at inkcalendar dot com, and if you have any suggestions or ideas I’m always interested to hear!
Ink Calendar now makes use of WinUI with version 1.26. In addition to this new modern UI framework comes many changes and bug fixes throughout the app. One of the elements of Ink Calendar which has been improved is when tapping the canvas even when Ink is not selected the Ink Actions menu appears to make you more productive and bring information to your fingertips.
Previously tapping on the inking canvas would just select ink. Now tapping the canvas invokes the Ink Actions menu with a new day button. This button when tapped shows appointments and the ability to quickly jump to different views. The new improvement to the Ink Actions menu means you can more quickly see appointments and can more fluidly switch between days.
When in the year view tapping on any day will enable the Ink Actions menu to show appointments for that day. Quickly zoom into a view or skim a quick list of appointments. In addition to this working on the year view, it also works when tapping the month days shown on the day view. Quickly peak into another day and see what you have going on.
In addition to these changes there have been many bug fixes throughout the app. One major change is handling the way Ink Calendar interacts with the Windows 10 Calendar data. Now when Ink Calendar does not have access to the calendar data the user is notified with a list of steps to take.
If you have any feedback about Ink Calendar don’t hesitate to email support at inkcalendar.com
After releasing Ink Calendar 1.25.3 work began on bringing appointments to the custom views. No major issues were found with the custom views, but there have been nagging bugs within Ink Calendar which have been very difficult to understand what is happening. In addition to rewriting the appointment render logic I have been focusing on every error I see in Microsoft AppCenter.
Adding appointments to custom views meant writing as a patchwork of controls which held the smallest size of a appointment canvas. For example the month view shows appointments for a single day, but multi-day appointments stretch over a single day. This means there needs to be a control which displays a week of days and overlays appointments correctly.
With all new features there is the possibility of bugs and crashes. One of the more common crashes I was seeing after introducing Custom Views was “The added or subtracted value results in an un-representable DateTime.” It is unclear why or when this happens. I have several theories but none of them seem to remove this issue altogether.
The issue can be mitigated by making sure the DateTime isn’t of year 0 which would not work when adding a previous year. However maybe this issue happens because the ViewStateHistory list crashes due to File Access Violations. This is also unclear because the actual failure has nothing to do with the ViewStateHistory. What makes me think the ViewStateHistory could be involved is a blank ViewStateHistory could drive the main view constructor to start from a DateTime of 0,0,0.
All this to say bugs are tricky and the hardest part is finding what is failing. Hopefully 1.25.9 will bring an end to this bug and small improvements all over Ink Calendar. Thanks as always for reading.
From the first prototypes of Ink Calendar over two years ago I have wanted to add the ability to create arbitrary views representing specific projects or seasons. Now that time has come with version 1.25 of Ink Calendar.
Why use Custom Views?
Planning long term projects is never easy. Looking forward and plotting out when and how to get work done seems like it should be easy. Hopefully with Custom Views Ink Calendar can become a tool which makes long term planning easy and pain free.
At work I have a few long term projects which span several months. Being able to start a new view dedicated to this project enables me to see where I am and where I need to go. Not flipping through months but one unified view for everything.
Planning for a marathon? Planning travel schedules? Use a Custom View to see the schedule. Keep it as organized as you need. Be flexible and ink the way which feels natural.
How to use Custom Views
Click the “All Views” button which opens a pane on the right side of the app
Switch to the “Custom” section of the pane
Click “+New Custom View” at the bottom of the pane
Set all of the details as you want them and click “Done”
Now the view you created will open and now be visible in the All Views Pane
This is the beginning of this feature and I plan to add more details and features to custom views over the coming weeks and months. Please let me know what you are most interested in seeing what is not working.