Finally, Custom Views

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

  1. Click the “All Views” button which opens a pane on the right side of the app
  2. Switch to the “Custom” section of the pane
  3. Click “+New Custom View” at the bottom of the pane
  4. Set all of the details as you want them and click “Done”
  5. 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.

Joe

Deep Dive: “Why can’t I see ink from other views on the current view?”

Users have asked this question a couple of times. If you have ink on a day in the month view, then switch over to the week view, shouldn’t you be able to see what is written on the month view? Currently there is no mixing between views and this was a design decision but also a technical/UX roadblock.

Design Decision

The way I use Ink Calendar drove the way I designed the app. Year view represents my long term planning. When will I be traveling, when holidays land and how I’m going to use my vacation time. I use month views for daily tracking, jumping quickly between months and looking at what’s coming up in a couple weeks.

Week view is for hour by hour planning of the work week or weekend. When to expect things to come and go. Day view is used when I need to nail down a specific agenda for a day. Like there is a lot going on and I need to know where people are going to be and what is going on.

By these standards I have no need to see all of the different views overlapping each other. Generally I view Ink Calendar as a way to organize my thoughts and plans quickly and easily. When I need to share an event with someone or let it span views, then I add an appointment to my calendar.

Distraction and clutter free planning has always been a core design intent of Ink Calendar. I want to make it easy to jot down timelines and move them around. Overlapping ink from all different views on to a single view would not mesh with this design. Views would become extremely crowded and busy.

Technical and UX Roadblocks

Currently Ink Calendar relates one view to one ink file. Each ink file is loaded into an InkCanvas control. If I were to show week view ink on top of month view ink then any new ink would be added to the week view ink file. Parsing user intent on where they expect the ink to save and load gets complicated and nearly impossible to disentangle.

If the InkCanvas views were not overlapping, but laid out in some sort of side by side arrangement then there would need to be an InkCanvas control for each view. This could work, but it would make for a confusing user experience where a single pen stroke could not span the different views.

Ink Calendar currently can use a lot of RAM from loading views to the right and left of the current view. If one view contained the ink of four different views, then the RAM needs would be much larger. Since I typically use Ink Calendar on a Surface Go, I have no expectation that it would preform well, especially if there is a lot of ink.

It may be possible to have a merged view which shows all of the different views for a particular day. I have been looking into how to render views out as .jpg files. This could help the performance problem and give a unified view to show what is going on at every level for a single date.

Continuous Improvement

If you are reading this and believe I have completely missed something or have a novel idea on how to solve this tricky situation then please let me know. I am going to experiment with adding ink between different views in different ways to see how it feels and looks, however I do not know how it will turn out.

Finally, throughout the development process decisions get made at every fork:

  • Should the ink be editable in a different InkCanvas or just view only?
  • Should year view ink be shown in the day view calendar?
  • Should I add a truncated week to the top of the week view?
  • What about the partial weeks at the end of a month, merge or overlap them?
  • Show the view-only ink as transparent?
  • Could users ink over the view-only ink?
  • Should that ink get shown on the month view?

All things considered this is a tricky problem where every users might have unique expectations. I’m not ruling this out as a possiblity, but I do not want to spend hours and hours on this feature which is only important to a small set of users. My time will probably be better used working on a cloud sync service or some other more broad appeal feature.

Please let me know what you think about all of this, and as always thanks for using Ink Calendar!

Joe