AI generated Diary from daily Arc json files

Last year I mentioned that I wanted to see a way to show all the notes in a diary format. Well since then ChatGPT, Google Developer Studio, Claude etc have made it relatively easy to generate a diary using Arc’s daily json exports.

2 Likes

Very cool! It’s crazy what AI makes possible now eh. So much we can explore and try, that would’ve taken up far too much time and effort before.

This also plays into an approach I’ve been implicitly leaning into with Arc Editor but will make more intentional over time: that it’s better to make the data accessible to external AI, rather than try to build AI into the app itself.

Once you can access the data easily and efficiently from an AI agent, that agent can create all your ideas for you, without much fuss. So data access is really the important thing, and building AI features into the app itself is just sugar on top.

Have you published your timeline generator anywhere online? Or is it still just a personal project at this stage? Again, looks very cool!

1 Like

Have you published your timeline generator anywhere online?

Yes, please share!

Hi Matt,

Yes, thanks for exporting all those daily and monthly JSON files. Mine go all the way back to 2013 (I was using Moves in the first few years before Arc). I’ve always been too busy to write something to process them, but in the last few months it’s getting ridiculously easy to build these little apps.

I have subscriptions to ChatGPT+, Claude and Google’s Developer Studio. At the moment, Claude is my favourite for html/js apps. The big downside is the relatively short working time before it kicks you off for four hours! It’s possible to purchase extra time, but it burns through money faster than a poker machine!

At the moment this has been a personal project, but once I figure out how to use Github properly, I’ll post it there under an open source license. At the moment it’s a single html file weighing in at just 86 KB!

I also came up with an Arc Monthly Timeline Analyser for looking at long-term activity trends. (see example output attached)

Today’s project was a mapping system for Koalas using the GPS metadata stored in the photos. We located seven Koalas around Mt Gravatt this morning - a record for us! Creating this map is as easy as loading seven photos.

1 Like

Heh. I pay for Claude Max 5x or 20x, depending on what kind of hours I’m putting in each month. Claude (in Claude Code) is basically a full time employee for me at this point. I’m working collaboratively with it sometimes 6+ hours a day! The cost is high, but compared to an actual human employee it’s so low it almost feels morally wrong. And I’m getting more productive value out of it than I would a full time junior employee.

So for me, classifying it as a business expense is easy, and ends up feeling cheap! Though if I were purely using it in my personal time, not work related, I’d feel a bit silly paying as much as I am.

Oh I notice you say you’re using the JSON files. Do you have Arc Editor installed? If so, you can access the SQLite database file via Mac Finder (or the Windows equivalent). Claude can work much faster with the raw database, so it’ll prefer that if it can get its hands on it. Often I’m debugging more tricky problems Claude and I will grab the database file and start poking around with it directly, to test various theories.

I think both of these apps are awesome and something I’d love to explore more. Would you be willing to share some of the initial prompts you used? Thank you!

Here are some of the interactions with Claude Sonnet 4.5. Opus is better, but I don’t get much ‘Chat time’ with the more advanced model.

In the previous chat, we developed an app (see attached) to analyse monthly data files. The monthly JSON files contained summary activity data, but there are also daily files (see three consecutive daily files attached). Have a look at the daily files and describe what they contain.

I’m looking for the notes that can be added. I wrote this note “I saw the carpark attendant. He gave me an email address to write to about the possibility of getting my unused parking balance returned.” on the 15th December for example.

Yes, but be aware that there are almost 6,000 of these daily files going back to 20-NOV-2013! We have to plan what will can be used before embarking on this new update.

One of my long-term goals was to collect the notes and relevant associated data to create a formatted diary. Maybe we could use the Markdown format. I could use other markdown readers to do searches, so indexing wouldn’t be needed initially.

So after that was the first executable code created. And much later we were right down in the coding weeds discussing problems with the markdown viewer output with respect to handling bullet points.

There are two problems with the left margin

  1. New paragraphs within the same note fall back to the standard left margin
  2. Sometimes after the date, the timestamp inline heading is indented but not the bullet.

Fixing this last issue consumed about 60% of my chat time before reset! Sometimes I take the code to another AI and ask it to find out what’s wrong. If the other AI finds the problem, I then ask it to write an explanation for Claude to consider.

1 Like

Hi Matt,

Does the Arc Editor provide direct access to the SQLite database being used by Arc? Sounds dangerous! Also if you are changing the schema from time to time; that could be problematic. I think there was a change in the json structure a few years ago?

So far I’ve achieved quite a bit using the JSON files and I can’t mess up anything.

I would be happy to have a look at the Arc Editor though. I might run out of things to do in a few weeks. I’m having a great time developing all sorts of other utilities for myself. The Koala mapper is an example. I’m about to overlay the walking path from the associated Arc Daily file.

Hi-level:

  • Load daily file from the same day (point the app at the daily json folder; the app can work out which file to open)
  • select walking activity
  • set start and end times to avoid other walking activity elsewhere on the same day
  • optionally overlay the path walked on the map of Koala photo locations.
  • Export the map and maybe add to the diary for the day?

BTW: I asked in a new feature request yesterday what colours you are using in Arc Timeline for all the activities. It would be good to use the same ones in the diary app.

Regards
Gordon (Brisbane)

Heh. As long as no one edits the db file then puts it back in to the app bundle. Though that could go fine, if they know what they’re doing. But read only is all fine and safe at least. Access the SQLite db file from Finder (or Windows equivalent), copy it somewhere else, then work with it there for analysis.

The new JSON schema in Arc Editor is finally versioned. So breaking changes will come with schema version change. Here’s the docs for the current schema: LocoKit2/docs/export/FORMAT.md at main · sobri909/LocoKit2 · GitHub I think those are still up to date. Claude and I did a bunch of work on it while building out the new incremental backups system in Arc Editor the other week. It’s extremely solid now - much more efficient, reliable, safe than the system in old Arc Timeline app.

As a general rule, Arc Editor / LocoKit2 are much more robust and safe and clean in their data, both in the SQL db and in the JSON exports. I’ve put in a decade of learnings from all the mistakes and disasters that happened with Arc Timeline. so Arc Editor and LocoKit2 are very much the “doing it right this time” projects. Basically everything I could think of that ever did happen or could happen with the old db schema or JSON schema have been dealt with in the rewrites and redesigns.

1 Like
extension ShapeStyle where Self == Color {
    // MARK: - Branding Colours

    static var arcDarkPurple: Color { Color(0x2D2D73) }
    static var arcPurple: Color { Color(0x7A3CFC) }
    static var arcGreen: Color { Color(0x12A656) }
    static var arcDarkGreen: Color { Color(0x0E8444) }
    static var arcRed: Color { Color(0xE35641) }
    static var arcOrange: Color { Color(0xEB781B) }

    // MARK: - Extra Colours

    static var arcRuby: Color { Color(0xD85582) }
    static var arcByzantine: Color { Color(0x8B408C) }
    static var arcMagenta: Color { Color(0x8E1DD2) }
    static var arcJade: Color { Color(0x079260) }
    static var arcJungle: Color { Color(0x18A1B1) }
    static var arcYellow: Color { Color(0xEEA10A) }
    static var arcGold: Color { Color(0xAA9131) }
    static var arcBrown: Color { Color(0xB4831D) }
    static var arcDarkBlue: Color { Color(0x26398B) }
    static var arcBlue: Color { Color(0x3B71F6) }
    static var arcLightBlue: Color { Color(0x039FD4) }
    static var arcNavy: Color { Color(0x4056B5) }
    static var arcSapphire: Color { Color(0x4884AE) }
    static var arcAnchor: Color { Color(0x4E5268) }
    static var arcSpaniard: Color { Color(0x2D2F3E) }
}

And their use for activity types:

    var color: Color {
        switch self {
        case .unknown:
            return .gray
        case .bogus:
            return .arcBrown
        case .stationary:
            return .arcPurple
        case .walking, .golf, .wheelchair:
            return .arcGreen
        case .hiking:
            return .arcDarkGreen
        case .running:
            return .arcOrange
        case .cycling, .rowing, .swimming, .kayaking:
            return .arcLightBlue
        case .car, .taxi:
            return .arcAnchor
        case .bus:
            return .arcNavy
        case .motorcycle, .scooter:
            return .arcRed
        case .airplane, .hotAirBalloon:
            return .arcMagenta
        case .boat:
            return .arcBlue
        case .train, .metro, .tram, .cableCar, .funicular, .chairlift, .skiLift:
            return .arcGold
        case .tractor:
            return .arcSpaniard
        case .tuktuk, .songthaew:
            return .arcBrown
        case .skateboarding:
            return .arcJungle
        case .inlineSkating:
            return .arcRuby
        case .snowboarding:
            return .arcSapphire
        case .skiing:
            return .arcDarkBlue
        case .horseback:
            return .arcByzantine
        case .surfing:
            return .arcRuby
        }
    }
1 Like

Oh I just saw your request on the Changemap site! For the “one time titles”, those should be in there, I think as `customTitle` on the TimelineItem entities. If they’re not, let me know and I’ll note that to get it fixed. Though… they’re definitely there in the Arc Editor / LocoKit2 JSON. And I do recommend shifting focus to Arc Editor. At this point it’s already by far the better app, and better data. Everything will go smoother and better when using Arc Editor’s data rather than Arc Timeline’s.

Hi,

Here’s a good example of how good Claude (even Sonnet 4.5) is at dealing with ‘issues’. There is a current ‘anomaly’ in Arc where a note added to a location that spans midnight ends up being displayed on both days, since it is the same location. That’s OK in Arc, but not in a diary, especially if the note is large. Fortunately, all the notes have a Date/Time stamp.

All this in a few minutes, and I have the updated app. This is going to be a huge problem if you are a junior programmer! At 2:00am Claude is still ‘wide awake’ and writing heroic solutions to complex problems, although that can be it’s own problem. I occasionally have to intervene and tell it about a simpler approach.

Regards
Gordon

Hi Matt,

In that case, sign me up!

Gordon

1 Like

Hi Matt,

For now, I’ll delve deeper into the json and see what’s there.

Regards

Gordon

1 Like

Great! I’m guessing you already found it? If not: Join the Arc Timeline Editor beta - TestFlight - Apple

:slightly_frowning_face:

Oh wow, I didn’t realise! I’ll add some more capacity now…

Ok there’s more space now. You should be able to get in.

There’s also a new build coming later today, that adds the new AI powered search feature.

Fixed! Thanks for the info. I was originally extracting {place.name} only, so now I also look for and extract {item.customTitle} if it exists.

1 Like

Hi Matt,

Arc Editor is up and running …along with Arc Timeline and Arc Recorder.

Can you send me a link to the app notes please. At first glance it seems to be starting over with a clean timeline. I’m assuming there’s a way to add the existing database via export/import?

Gordon

Hi Matt,

It’s OK. Found it!

Gordon

1 Like