It's finally here. The first app to beat DayCalc. It optimises your calendar and calculates dates twice as fast*. Introducing the new DayCalc, version 2.2.
DayCalc v2.2 made its way to the App Store just 3 months after the last refresh. However to me if feels like v2.1.1 was released an eternity ago. Of course this is very much a subjective impression, based on all the action that filled my life during this period. What makes the update stand out even more to me personally, are all the changes under the hood (more on that later). From this point of view this release might as well be versioned as v3.0. The length of this blog post, compared to one for the last point update, illustrates the significance quite well. Since the users on the other hand will never see these modifications, I decided to only base the versioning on the changes relevant to them.
You can now chose to hide specific calendars; handy when you have a lot of them
To the naked eye the screenshots above appear very familiar. These are of course the updated previews from the App Store. If you look closely you will however detect the new icons, which is just one of the many differences compared to the preceding iteration. The rest of the new features hide within different screens or cannot be portrayed using stills. So then what did change, exactly? Before spilling the beans, let's step back and take a closer look at what exactly happened during the past three months.
DayCalc v2.1 launched in early December 2016, quickly followed by the bugfix release v.2.1.1. At the same time I was completing a very intensive 3rd semester at HS Mannheim. Never did I have to work so hard at university, not for my Business Administration Bachelor at the University of Mannheim, nor for my Management Master in Scotland. The workload was hefty, due to tests and hand-ins that were scheduled every week. Topping it off were oral exams throughout, all followed directly by the two-week exam phase in January 2017 of course. Naturally v2.1 was all I could push out before the going got tough. I had to set my list of ideas and Xcode aside, even though especially the lack of one particular feature started to hinder my own experience with DayCalc... In order to build it in (I am talking about hiding calendars), the whole app architecture had to be redesigned. In addition to this, the very unfinished Deadlines list required a retouch urgently.
On the left: The new Deadlines list with new graphics, options and ordering
The non technical folk may want to skip this paragraph, as I want to deliver a more or less technical description on the important under the hood changes, which were the bottleneck to releasing v2.2. Basically DayCalc did not adhere to the MVC pattern prior to that. The entire code (except for objects and their instance methods) was executed directly from within the viewcontrollers. There were no services, nor any models for data storage. Furthermore classes dedicated to drawing views did not exist. That meant that there were obviously no observers but a single one. This single observer overlooked the calendar store (external to the app of course). It was quite an important one, since DayCalc needed to display real time information at any given point. As a consequence code lived in multiple places, redundantly. An absolute no-go. Of course I wasn't depressed about it. At this time I had only been programming for a just a tad over a year in my entire life. But at that point I also reached a stage, where my skills and knowledge outstripped my code base heavily. And so it was time to step up the DayCalc game. In order to lay out the foundation for my future release ambitions, I had to implement all of the above, before building new features.
After my exams I was finally able to tackle the challenge of rebuilding DayCalc from the ground up. It was time consuming, as it required me to retouch every area of the app. At the same time I was just starting a job at Stocard GmbH, which has helped me a lot in my Swift understanding. Just applying for the opening and building a demo app as part of the selection process taught me a lot already! At Stocard I learn something new every day. On top of that the company culture is amazing! As a result I do have a lot of energy to push DayCalc forward in the evenings, after a full work day. When you do what you love you don't get tired! I was able to accomplish all my goals and then some during the last couple of weeks. With the updated architecture from now on implementing meaningful new features in a frequent manner will be much easier.
Updates notes from the App Store, a very condensed overview of what has changed
You probably already skimmed through the change log in the above screenshot. But that list does not include all that was altered or added. On top of that these bullet points are obviously just a summary.
Let's begin with the Calendar. It is now possible to hide calendars from being displayed. You saw that one in the update notes, but what you did not read there was how exactly it works. First of all the related settings panel is accessible from either the Calendar itself or via the Settings tab. When deactivating a calendar, this information is immediately passed to the widget and the watch app. The app does not reload the data from the system calendar at this point, but reorganises the already fetched information. DayCalc still holds all of the calendar events, so they can stay available via search and do not need to be re-downloaded in case a calendar is turned back on. This of course makes the app run more efficiently. When creating a new calendar event, you will now get a notice whether the operation succeeded or not (which it will, unless there was some fatal error with the operating system).
Deadlines also received a major overhaul. Gone are the grey and orange colours. Also gone is that option to flag them. That really was just a leftover from a previous version of DayCalc where the Deadlines List was the Events List. Now you can set them as done or open, just like you would expect from a todo list. Just like with calendars you can also set visibility options (hide completed and/or expired deadlines). Finally the countdown has made it's way to Deadlines also. For current day todo's a timer will display the chronological remainder, so you can get a move on when you are pushing these boundaries. Lastly, as long as you have denied calendar access to DayCalc, the export to calendar function will not be visible.
In an effort to clean up the tab bar, the date calculator modules have moved homes. They are no longer available via the tab bar individually. Instead there is a new Calculations tab. On the one hand an incredible upcoming feature (it will work like magic) will soon occupy this space. On the other hand new calculator modules will be added in the future, so space would not suffice anyway. While touching on the date calculator modules, let's also look at the Weekday Calculator itself. You will no longer get access to the recent results list, as long as no calculations have been performed yet.
DayCalcs new Settings section
The Settings section, mentioned in this post multiple times already, is entirely new. It is home to the About section, which will tell you what app version you are using. Additionally it provides useful links for example to send suggestions and requests for future releases. It will help to engage with the user more (in fact it already did). The Settings section also houses the Calendar and Deadlines settings, if you prefer to access them that way. Lastly a convenient touch is the deep link to the iPhone settings, where you are able to directly alter DayCalcs access rights.
Finally there were a few bugfixes and interfaces changes. Previously I already touched on the new icons. Something less noticeable is removing the selection highlighting from table row cells (meaning that grey highlighting, which appears when you tap on them), that have no function. Furthermore cells that notified you for example of your deadlines list being empty are no longer swipeable. In the past the app tried to produce table row actions for them, which was not possible, leading to an instant crash. A convenient element that made its return to DayCalc is the keyboard being auto-invoked, when composing new calendar events or Deadlines.
Afterall this update brings DayCalc one significant step closer to being a full fledged calendar app. The hooks for the next wave of features are in place!
*Well, I didn't benchmark it and really I just wrote to stay true to the reference, which hopefully you'll get 😉
About the Author