Time Tracking in 2020

While working on my goals and my annual theme for 2020, I decided that I’m going to give time tracking another try. When I was working full time as a consultant I used to track all of my time because the companies I worked for mostly billed by the hour. When I started Radical Application Development in 2015 I knew that I didn’t want to bill by the hour. Why? That’s for another post some time… or you can just read this to find out a lot more than I will ever explain.

Even without relying on billable time, I have at certain points used time tracking in my business. I find it helpful to set goals for myself such as:

  • “Work at least X hours on Project Y per day”
  • “Spend no more than X hours on product Z”

I’ve built my own time tracking apps in FileMaker and in 2016 I attempted to build one in Swift (it went badly…) I’ve also used a number of third-party apps and service. The problem is that I hate every single one of them, and all for the same reasons. The time part of time tracking. When I say I want to track my time, what I really mean is that I want to track the duration or amount of time I spent on an activity. I don’t want to track start and end times, I don’t want to punch a clock, and I really dislike the idea of having timers running while I work.

What I really want is a place where I can list out all of the activities that I would track time against, and then a super simple interface to enter a block of time for an activity and day. On Sunday I decided take another attempt at building my own time tracking app in Swift. This time I’m using SwiftUI and Core Data, along with all of the lessons that I learned building Retrospective Timelines. I talked through some of my ideas with my friend Dave and wrote out a short punch list. I decided to build something as fast as possible so I could start using it on Jan 1.

Yesterday I worked out some of the details around the schema. I setup Core Data CloudKit so I can use the app on multiple devices. I make a few simple placeholder views and started working on data entry. Today I kept working on the UI and got it far enough along that I can use it to log time against a list of activities. It’s really really basic, but it will serve my needs for at least a few weeks. I can work on adding small features to it in my spare time.

My time tracking app as of 2019.12.31

I have no idea if I’m going to try to turn this into a product or not. I think I’d like so, but I’m not sure how many other people think about time tracking in the same way that I do, without the need to enter clock time or use timers.

If this is something you are interested in please get in touch. Use the contact form or reach out to me on Twitter.

My Device Log

The core purpose of Retrospective Timelines is to help you keep track of the most important dates in life. I use it to keep track of my sobriety, places I have lived, and my professional life. I’ve also found it helpful as a tool to track less emotional data such as the computers and devices I’ve used over the years.

Over the last week or so I’ve build a Timeline in my copy of the app that can hold a list of all of my computers and devices. For the most recent devices all I had to do was look around my apartment to see what I’m using. For older devices I found that my email accounts help a treasure trove of data that I could use. I have receipts for the original orders of almost everything I own and I had a lot of emails containing info about when I sold or donated old devices. Another good source of data was my photos library, as I’m the kind of dork who takes photos of new computers when I get them.

Initially I started with a single Timeline called “Computers & Devices”. I started adding event records to this timeline for each device. I used date ranges to keep track of the date I received and got rid of each device. For things I still own, I used the Ongoing toggle on the End Date section. After working with the data for a couple of days I decided that I didn’t want to mix gaming/personal devices in with the list of computers. I ended up making three Timelines: Computers, Gaming Devices, and Virtual Reality Devices.

Timelines and my Computer Timeline

A couple of weeks ago I built a filtering feature for Timelines and the special report lists, but I had to remove the Timeline version of filters before shipping version 1.0 because a weird bug. As I was working with this data I realized that I wanted to add those filters back to the Timeline view. After working out the issues I released version 1.0.2 this week.

There are two new filter options that help me view my device history in different way. By default, the Computers timeline has a list of all dates for all events. This includes the start date for each item and the end date where applicable.

Filter: Hide End Date

The filtered called “Hide End Date” is a quick way to hide the end date rows for events with date ranges. In this case, it leaves me with a list of start dates/events for each computer on the list.

The other new filter is called “Only Show Ongoing Events” this does just that. It filters out all of the events except those that are marked with an Ongoing date range. This is a great way to show just the devices that I currently own and use.

Here is a short video describing how I use these lists and these new filters.

Finding the right work

When I started Radical Application Development in 2015 one of my core goals for the business was to get into app development. At that time I had built a number of business systems and databases and I was eager to make a consumer product. I didn’t have time to pursue this goal full time but throughout 2016 I learned a lot about Swift and iOS development.

Time and again I ran into issues with the apps I wanted to make. Most of my ideas seemed like they would be achievable but ended up being far beyond my skills. I vastly underestimated how complex iOS development was. Each time I ran up against what I could do I gave up instead of pressing on. For example, I built a really awesome time tracking app using Core Data but when I tried to sync the data between devices I had nothing but issues. I lacked the skills and confidence to write my own syncing engine so I put the project on hold and never picked it back up.

Toward the end of 2016 my friend (and later podcast co-host) suggested that I check out SpriteKit. I had never even considered making a game, but I worked through some tutorials and decided to give it a shot. I spent most of November that year building a small game called Random Arrow. I released the app into the iOS app store in December 2016.

While Random Arrow never took off I gained something valuable from it. Working in SpriteKit and Swift on a simple game gave me the confidence I needed. Despite having no idea how game engines worked, and little “real” programming experience I was able to produce and ship something. Looking back at Random Arrow now I think it’s sort of a silly idea, but I’m still glad I made it. The confidence I gained from that project lead me to expand my consulting services beyond FileMaker. I starting making web applications in PHP–which has paid the bills ever sense–and I started learning Unity and Unreal Engine.

In early 2017 Dave and I decided to attend a local game development meetup. I wanted to share Random Arrow and was eager to meet some “real” game developers. While we were at the meetup Dave tried the Oculus Rift. He was pretty impressed by it and so was I. I didn’t actually try it at the meeting as I kind of nervous that I would look silly. I purchased a VR headset and a PC to use it with and turned my focus to VR development. I’m not going to go into details here but I spent the next two years with my attention focused on VR. You can get most of the story from VR Hermits.

As with the early iOS projects I got in way over my head with VR development. While I learned a ton about Unity, C#, 3D modeling, animation, and AI, I never shipped a consumer product. I kept my business running during this while with consulting work, mostly FileMaker or PHP projects, but I spent almost all of my time and energy on VR. At one point I was working so much that I actually did a lot of damage to my hands and wrists–damage which I’m still dealing with.

In spring of 2019 I finally decided to step away from VR development, at least where games are concerned. I know enough about game development now to know that I’ll never make a great game. I’m more than capable of using the tools and doing the development, but I lack the type of vision and creativity needed to make a great game. If I really wanted to I could make some bad games, but I’m not interested in doing that.

I’ve spent my time since then working on FileMaker, WordPress, and PHP consulting projects. I also started working on a new iOS app–something that will be the focus of this blog over the next few months. After nearly two years of trying to get good at something I’ll never be good at, I rediscovered that I am good at some things. I have a lot of skill when it comes to problem solving, user interface design, data modeling, and I’m going to spend my time and attention on those skills from now on.

I may revisit VR development someday, but not as a game developer. I’d love to create some productive applications in VR and AR, possibly even expanding on the projects I’m building now. Now that this little side quest into VR is over I’m making real progress on iOS development. Some of the concepts that baffled me in 2016 are easy to grasp now. There are also a lot of new APIs and advancements in iOS and Swift. I could even pick up my time tracking app again, as Apple had made new APIs for working with Core Data and CloudKit. For the first time in years I feel like I’m on the right track.

New Podcast: Project Update

In spring of 2018 Dave and I put VR Hermits on hiatus. Dave had some interesting work he wanted to focus on and I needed to spend some time on a few consulting projects. We had planned to resume in the fall but I think somewhere along the line Dave realized that Virtual Reality development was not what he wanted to do. It took me a lot longer to come to the same conclusion. Despite this, I kept pestering Dave to start recording again. I really missed the weekly calls where I could bounce my ideas off of him and hear about what he was working on.

A couple of months ago we finally decided to get pack to podcasting. We initially had no idea what the show would be about and even considered a return to Massively Unqualified Development. Regardless, we started recording some beta episodes in May of 2019 and we eventually settled on a new format. Those beta episodes may never be published, but the result is out new podcast called Project Update.

Joe and Dave discuss the progress of their respective projects, delving into the challenges, successes, and failures of being commercial software developers, periodic game developers, and general technology enthusiasts. Project Update is about our projects and lives, but we’ll also be bringing in other creators to talk about their projects and lives. In some ways we’re all dealing with the same issues, and in others we’re dealing with a problem space uniquely our own.

About the show, Project Update

In this new podcast we talk each week about our software development projects–among other things. Dave is building developer tools for the FileMaker community and I’m creating an iOS app in addition to my FileMaker and Web consulting work. As of the time of this post we have recorded four episodes, including an episode with our first guest.

Updating my website

Sometime last year allowed myself to get away from working on this site. I was never “complete” to begin with, but it got to the point where the content on this site was no longer relevant to the work I do. Today I decided to spend some time trying to clean things up.

I started with some new branding colors, the most important of which is HEX #5D28A7. I’m using that color heavily in an iOS app I’m working on and I plan to incorporate it into some additional products down the line. My site is powered by WordPress so the next step was to select a theme. I recently worked with Ascend on a consulting project and was impressed how customizable it was without having to dive into to the code. I installed the premium version and got to work. After selecting a layout, changing some colors, making a menu, and adjusting some settings I managed to make something that I like. I have a lot of work to do on it but I’m happy with the progress so far.

Something I had a lot of trouble with was writing a short blurb or description about myself or my business… I think for now I’ll let the site speak for itself. Perhaps I’ll add something later. I used to stress out about this sort of thing but I’ve been in business for four years now and I have never had a customer mention my website to me. It seems like all of my consulting business has been based on referrals from other customers.

Someday I’d like to get a logo made for the business and the website. I have no idea what that would look like or what I would want it to say about me.