Today I ... free personal logger for iOS and MacOS

23 Jun 2020

Summary:

I wrote a simple app for capturing sentences with time, date and weather on iOS using iOS Shortcuts, and just the text and timestamp on MacOS using a bash script. The journal lives in iCloud, so it stays synchronised between devices. Here it is:

For iOS, grab the ‘Local Info Strings’ and ‘todayi’ Shortcuts and learn how to add them to your iPhone or iPad.

For MacOS, see the Bash script and notes below.

In both cases, my recommendation is to look at my work and roll your own!

Example:

19/06/2020, 10:14 Paid Hadija school fees [xxx Road Berkhamsted - 14°C Mostly Cloudy hum 89 uv 2 aqi 1 (Low) NO2 - Nitrogen Dioxide: 8.8 μg/m³]
19/06/2020, 21:40 Worked on Woodlands with Mike [xxx Road Berkhamsted - 15°C Mostly Clear hum 81 uv 0 aqi 1 (Low) NO2 - Nitrogen Dioxide: 18.93 μg/m³]
22/06/2020, 23:25 John started working on Woodlands roof [xxx Road Berkhamsted - 15°C Clear hum 70 uv 0 aqi 1 (Low) NO2 - Nitrogen Dioxide: 12.62 μg/m³]
22/06/2020, 23:25 Went to wine club at Andrews again [xxx Road Berkhamsted - 15°C Clear hum 70 uv 0 aqi 1 (Low) NO2 - Nitrogen Dioxide: 12.62 μg/m³]
22/06/2020, 23:25 Paid for parallels on my new laptop [xxx Road Berkhamsted - 15°C Clear hum 70 uv 0 aqi 1 (Low) NO2 - Nitrogen Dioxide: 12.62 μg/m³]
23/06/2020, 16:44 ran 6 km [xxx Road Berkhamsted - 28°C Clear hum 39 uv 3 aqi 1 (Low) NO2 - Nitrogen Dioxide: 29.07 μg/m³]
23/06/2020, 21:48 Wrote a blog entry about today I [xxx Road Berkhamsted - 22°C Mostly Clear hum 58 uv 0 aqi 1 (Low) NO2 - Nitrogen Dioxide: 16.83 μg/m³]⏎                                                                             

Background:

I’ve long had a personal interest in tracking, personal logging and/or journalling. This was part of my reason for writing rTracker, but I’ve wanted something more general. The issue is that events happen which are notable on the day - “noticed a funny cough this morning” - but entirely random (thus outside of rTracker’s remit) and lost without some system of making a note for it. The real problem is that these details only become important later, and you can’t tell in advance what you should make a note of.

To approach this I started using Day One, then got fed up with it when they did a paid upgrade (and I didn’t want to pay after I missed the discount window), while at the same time something happened and I lost access to my journal. Their support sorted me out so I got my data back, but I concluded that this wasn’t where I wanted to be keeping the ongoing record of my life.

Later I found Journey, and was so pleased with it that I’m a fully paid up lifetime user for both the iOS and MacOS versions. I particularly liked their ‘open data’ thinking and that it could import my previous Day One entries, and I still use the iOS version preferentially because it adds location and weather data to my entries. Recently I’ve felt they are not interested in developing Journey further, but that’s based on poor responses to my feature requests and no doubt they have other things to do.

The problem with both of these is that they don’t actually target my use case. Really a journal for me - thanks to my High School English classes - is a little essay about something I’m feeling or thinking about at the moment, and I don’t actually have the time or energy to do this everyday. As a result I don’t end up logging the minutiae that goes by - like when we bought or finished that last 1/2 ton of firewood, or had the drains cleared of roots - and that means I can’t search for it later to understand and learn from my own history.

Doing it (MacOS command line utility):

So initially I thought up a short bash script that just takes everything after the executable name and appends it to a text file. The name is ‘todayi’:

#!/usr/local/bin/bash
FIL=~/iCloudW/todayi.txt
if [ $# -gt 0 ]
then
   DSTR="$(/bin/date "+%d/%m/%Y, %H:%M")"
   echo ${DSTR} $@ >>$FIL 
else
   tail $FIL
fi

Type it without any additional text and it prints out the last few lines for your pleasure. If you copy this for your own use, do note that my bash is in /usr/local/bin because I use the Homebrew installation, and ~/iCloudW is a link to the directory ~/Library/Mobile Documents/iCloud~is~workflow~my~workflows/Documents because nobody wants to type that out but it sure is nice to find the stuff. That directory link and the date format evolved out of what I later needed to do to have a matching solution on my iPhone.

Synchronising between iPhone and Mac is the easy part, as both have access to documents stored in iCloud. The next step was finding Kodex, a brilliant little text editor for iOS that immediately got a place on my first page of apps. This left getting the time/datestamp at least on to the clipboard, and that’s how I initially discovered iOS Shortcuts.

Doing it (iOS shortcuts):

I leave it as an exercise to the reader to follow down that rabbit hole on their own, and simply present my own answer here. I broke it into two parts when I found the weather API has all the annotations I wanted (time, location and weather) - so Local Info Strings is a ‘subroutine’, while the main app called todayi gets the text from Siri and appends it all to the file:

Local Info Strings:

Weather Get current weather at Current Location    
Weather Get Date from Weather Conditions
Weather Get Temperature from Weather Conditions
Weather Get Location from Weather Conditions
Weather Get Condition from Weather Conditions
Weather Get Humidity from Weather Conditions
Weather Get UV Index from Weather Conditions
Weather Get Air Quality Index from Weather Conditions
Weather Get Air Quality Category from Weather Conditions
Weather Get Air Pollutants from Weather Conditions
Location Get Street from Location
Location Get Town/City from Location
Text Date      
Variables Set variable Datestr to Text
Text Street Town/City      
Variables Set variable Locstr to Text
Text Temperature Condition hum Humidity uv UV Index aqi Air Quality Index (Air Quality Category) Air Pollutants      
Variables Set variable Wthrstr to Text
List Datestr      
  Locstr      
  Wthrstr      

todayi:

Documents Dictate text        
Shortcuts Run Local Info Strings      
Scripting Get First Item from Shortcut Result  
Scripting Get Last Item from Shortcut Result  
Scripting Get Item At Index 2 from Shortcut Result
Text Item from List Dictated Text [Item from List - Item From List]        
Documents Append Text iCloud Drive /todayi.txt Make New Line Yes

Usage and Conclusion:

To use, start Siri and say “Today I” and wait. Siri will ask ‘What text?’, then press the Siri button and say what you like.

I added the Air Quality and other weather data because I move around a lot, and our next posting will be more polluted than our current one. There’s still the problem that Siri dictated text may not always be perfect, but for that I just fix the entry with Kodex - the todayi.txt file is under Shortcuts in the iOS Files app and your iCloud folder, or you can check the note on the directory link above fore the Bash script to find it on your Mac.

Enjoy!