End of Retrospective Timelines (and app development)

As of today, I’m giving up on my half-baked plans to make consumer software. I just took Retrospective Timelines off of the App Store and I don’t plan on renewing my Apple developer account. There are a number of reasons I’m making this decision. I’ll try to list a few here.

While I enjoyed the process of developing the app, it’s become clear to me that I will *never* actually do any of the marketing steps needed to promote a consumer product. I’ve made grand plans many times and at the end of the day I just refuse to do the work.

From the coding side, working with Apple APIs has been the most frustrating experience of my career. SwiftUI is a mess and I want nothing to do with UIKit. Core Data and CloudKit are needlessly complex for very little gain over using something else.

From a business aspect, it just doesn’t make sense for me to continue spending time on app ideas and other consumer products (games, VR apps, etc.). It is clear to me that my skills as a software and business consultant are far more valuable than any app I’ll ever make.

I may end up changing my mind someday when I have some hairbrained idea for an app (especially for AR headsets) but for now my time and energy are better spent working on projects that have a clear payoff, and a clear end.

On a personal note, my RSI is getting worse and worse. I can’t afford to do any “hobby” development like I used to. There is a limited time I can spend using a computer and I must spend that time on productive work.

Summer Planning for Retrospective Timelines

I am beginning the planning process for Retrospective Timelines 2.0. Below I listed some of the areas that I want to focus on this summer. My hope is that the latest round of updates to SwiftUI, iOS 14, and iPadOS 14 will enable me to make significant improvements to the app. I have only just started to learn about the new features, so I do not know which of these items are possible yet.  

Modal Windows / Views 

The current version of Retrospective Timelines uses sort of a hacky solution to be able to present the data entry screens in a modal mode. There were some weird bugs with SwiftUI sheets last year where onDismiss was not always called. Are these issues solved? Can I now present modal views where the user must use the Cancel and Done buttons to close the view? 

Alternatively, can I rethink my design entirely to omit this type of data flow? Currently I am using modal views to validate the data before the user saves the record. Perhaps I should rethink this process and save each change that the user makes on the data entry screen. 

Toolbars 

The current implementation of toolbars is a real mess. I found a lot of issues with buttons when placed in a navigation view (some of them having to do with opening and closing modals). Can I use the new toolbar features in SwiftUI 2 to replace all this stuff?  

Navigation Structure and List Views 

The current navigational structure of the app is less than ideal. It looks fine on an iPhone but on an iPad it is really quite bad. I would love to make a three-column interface for iPadOS. I think I might be able to use the new Sidebar APIs to accomplish this. 

I also want to use a new feature in List to group my main list view. The new child keypath feature could let me place all three top level elements in one list. Those are Reports, Active Timelines, and Archived Timelines. 

Something that annoyed me on iPad was the lack of a readable width setting for list views. Has this been added? It might not be as important if I can get the three-column interface working. 

Other stuff

  • Data Entry: TextField in SwiftUI 1.0 is bad. I mean really really bad. It has so many issues that I think nobody should be using it in a shipping app. Because of all of the bugs and missing features I ended up rewriting all my data entries screens in UIKit. I would love to write these in SwiftUI if I can. 
  • Grids: SwiftUI 2 has a new grid feature. I think I can use this to replace my hacky solution for the color and icon pickers for timelines.  
  • Accent Color: I did this the hard way last year. I am going to use this new method for the next version of my app. 
  • SwiftUI now has a feature for opening URLs. I can remove my hack for this as well. 
  • Core Data: I would love to learn some new ways to work with Core Data and CloudKit in SwiftUI. The approach I took last year has a lot of limitations and issues. 

As you can probably tell, I have no idea yet what is possible and what is not. I have a lot of work cut out for me over the next few weeks. I’m going to start a new branch in my repo and dive in. I’m also going to try a whole new code path in my project. Rather than try to update my current views, I’m going to start with a new top level view and work my way through reimplementing each core feature of the app, with an emphasis on learning the new APIs along the way.

Retrospective Timelines 1.0.4

A new version of Retrospective Timelines is rolling out now. This version adds a handful of new features

  • New Settings to control formatting for dates and durations. Select these settings to apply them across the app.
  • Redesigned share view with new formatting options for dates and durations.
  • Events can now have text notes. Enter notes on the Event Edit screen. Notes are viewable on Events Detail.

There is also a new bonus feature on the Event Detail screen. Now that the app supports multiple format types for dates and durations, I decided it would be awesome to switch between these with a simple tap. When you are viewing an Event on the Event Detail screen, just tap a date or duration to cycle through the available format options. Doing so won’t effect the defaults that you can set on the settings screen.

Retrospective Timelines 1.0.3

A new update is rolling out now with improvements to the data entry screens for Timelines and Events. These screens have been completely rewritten to support user interface features common to iOS apps.

Retrospective Timelines 1.0.2

Retrospective Timelines version 1.0.2 is now available on the App Store. This update adds a new Filtering feature to the list of Events on your Timelines. Filter out End Date Records when working with date ranges, and also filter the list to only show Ongoing Events. This version also fixes a bug that could cause the iPad version to crash when exporting data as a CSV.

Reminder: Retrospective Timelines is on sale for $1.99 USD from now until Dec 31, 2019.

Retrospective Timelines 1.0.1

The first app update for Retrospective Timelines is hitting the App Store today.

Features

New color options when sharing an Event as an image.

  • Select from 10 colors
  • Colorful background with white
  • Light background with colorful text
  • Dark background with colorful text

Small changes

  • Added a “dismiss keyboard” button that show up when a text field is active. You can also dismiss the keyboard with the “Return” on the iOS keyboard.
  • Added links to the website “How To” and “Contact” pages
  • Minor bug fixes

Without a splash

Just over a week ago I launched Retrospective Timelines in the App Store. In fact, “launched” may be too strong of a word. I released the app on Sunday Dec 1, 2019 with little fanfare and even less of an idea of what I was doing. Over the months leading up to version 1.0 I had a lot of ideas about how the launch could go. I thought about trying to build up some excitement for the app and I considered reaching out to press in advance.

Every time I thought I was close to shipping the app something would change that would cause a delay. Sometimes a SwiftUI update would break something I had previously finished. Other times I would start to think about solving a problem in a new way. Knowing myself pretty well, I began to recognize that I could keep working on version 1.0 indefinitely without ever shipping a thing. I needed get something out and I needed to do it soon.

In early November I decided that I had to ship something by Dec 1 and I began to work backwards from that. I did everything I could to finish the features I was building, although I had to pull a few things at the last minute. By the time had the app in a suitable state for shipping I was running out of time on my deadline. I knew that I had no chance of getting attention on such short notice so I decided not to even try.

Retrospective Timelines hit the App Store and I mentioned it on Twitter. Aside from that, there was no launch.

Over the next few months I hope to get some attention on the app. I’m convinced that a lot of people could benefit from thinking accomplishments and I hope to get the app in their hands. As I add new features I’ll continue to talk about the app on Twitter and on my podcast Project Update.

In the future maybe I’ll be able to learn how to launch the “right way” but for now this will have to do. At least it’s out there and in some weird way that’s the most important thing right now.