Hey there!
I just released the first version of a project I’ve been working on solves a very specific problem that perhaps only I have. I welcome any and all feedback, even if you just want to drop in to say that this is a hot piece of garbage!
I just released the first version of a project I’ve been working on solves a very specific problem that perhaps only I have. I welcome any and all feedback, even if you just want to drop in to say that this is a hot piece of garbage!
I wish that one day, someone from the development team would write an article about it.
[0] https://devlog.notespub.com/2022/08/site-generator-for-apple...
It looked like the other stuff came later and was somewhat orthogonal. (Although their ordered set construct was abusing topotext to represent ordered lists of ids.)
I don't know how much has changed since 2018. I think my table decoding may be broken now.
At some point, I also had some issues syncing notes between different iCloud accounts when the folder had 100s of notes, and that was probably the tipping point. As I was struggling to make it work, I kept thinking that if I just had a bunch of Markdown files I could move around, the whole process would have been easier.
I eventually realized I didn't need most features of Apple Notes, and moved to Obsidian[1]. It feels quite snappy too, and now I can easily publish some of my notes. It can also use iCloud Drive for syncing between Apple devices. It's missing some collaborative features, but I also didn't need those.
[0]: https://ricardoanderegg.com/posts/apple-notes-blog-cms/ [1]: https://ricardoanderegg.com/posts/apple-notes-to-obsidian/
I am sure that Apple won’t be making any substation breaking changes to a database structure unless they have to, there is a price to pay. Such changes will always be tied to a major macOS/iPhone release, and it doesn't happen very often.
That said, I had to put this project on the back burner, it was not immediately clear what is the ROI especially considering there is a long tail of databases to parse. It starts with Mountain Lion and then adds up quickly.
I need to release my source code to Github--ORM approach was worth exploring, it is a concise declaration that is relatively easy to update and manage.
I was planning on looking into support Samsung notes and Apple notes next. An open-source project like in the OP will help a lot here!
You can subscribe to a newsletter here if you're interested (in the top right of the page)
https://streamsoft.gumroad.com/l/remarkable-to-obsidian?layo...
I didn't actually know AppleScript before writing this tool... but it turned out ChatGPT knew it well enough to unblock me and provide me with exactly the code I needed to build the rest of the project! https://til.simonwillison.net/gpt3/chatgpt-applescript
Apple Notes Liberator creates a copy of the SQLite database and then runs queries against that directly to extract the data.
I chose not to do that (despite being all-in on SQLite for everything) because I worry about future changes to the software baking my script - I figured the AppleScript interface was less likely to have breaking changes in the future.
> I've been stubbornly refusing to learn AppleScript for nearly twenty years at this point. Thanks to ChatGPT I can continue not to learn it, but I can now use it to solve problems
The Apple scripting stuff can also use JavaScript. It might be better to continue not to learn in JavaScript instead of AppleScript, if ChatGPT is as adept at Apple scripting in JavaScript as it seems to be in AppleScript.
That way if you want to tweak what ChatGPT gives you it will probably be easier. With AppleScript both interacting with other things and control flow or computation can be weird and confusing. With JavaScript at least the control flow and computation will likely be more normal.
Added a section about this to my TIL: https://til.simonwillison.net/gpt3/chatgpt-applescript#user-...
https://gist.github.com/mcint/561f72e6baa3e5c68c2577b04dad78...
I've linked some of my scripts, bash calling applescript, that I use extensively to export tabs from browsers.
Recently I wanted to have something like that but for Safari Reading list. The main difference is I tried to find a solution not for one time liberation, but for continuous 2-way exchange with some web service. It appears you HAVE to run everything locally for that. I like "privacy", but I like having options even more.
By the way it was ChatGPT that helped me to remove this several month old item from my TODO list.
It is also based on Action Script commands. I haven't played with it much yet, but it's on my TODO list (to add automatic headings for every day + archive DONE tasks automatically).
Mail.app/Reminders.app/Notes.app can use IMAP, Cal.app with CalDAV, and Contacts.app with CardDAV [1].
It doesn't offer a lot of the features iCloud has like advanced formatting or collaboration, but is a useful for simple standards based syncing and portability.
I've done this with my iPhone/Macs and Fastmail for the last few years and it works great [2].
1. https://support.apple.com/guide/iphone/set-up-mail-contacts-...
2. https://www.fastmail.help/hc/en-us/articles/1500000279941
[0]: https://ricardoanderegg.com/posts/apple-notes-blog-cms/
Is note handling a standard part of the protocol or an extension?
A particularly interesting thing that I don't see mentioned anywhere is that Apple Notes uses CRDTs (conflict free replicated data types) to enable both shared notes and multiple concurrent edits. With the CRDTs resolving the conflicts.
It looks like the info on the page may be a good place to start looking to how that works: https://www.ciofecaforensics.com/2020/10/20/apple-notes-clou...
Compare it to Obsidian, which just stores data in a bunch of markdown files on disk.
Also, why did you select JSON as the output format?
A few years ago I tried to write my own exporter using AppleScript but got stuck by a showstopping bug in Notes AppleScript implementation. Or so it seemed. I hope that bug is fixed now. I just moved on to use your app instead.
I used AppleScript for the first two years of this app as well (Can't believe it's been 7 years since I started it). But it's hard to handle complex programs, and handing off data to Swift or Objective-C from AppleScript. So I switched to [ScriptingBridge](https://developer.apple.com/documentation/scriptingbridge). It provides better Objective-C APIs to handle Apple Events.
Deleted Comment
https://apps.apple.com/us/app/exporter/id1099120373?mt=12
(I haven't had a need yet, so I haven't tried it)
The UX of the Apple ecosystem is so nice but when it goes sideways you’re kind of out of luck, even if you have applecare.
I wish they had some sort of premium “fix my esoteric appleID account issues” service you could pay them for once a decade or so.
1) My iPhone has never properly synced screen time with my other devices (presently my other devices: 2x iPads, MBP) sync fine together. This has persisted across multiple iPhones and major releases of iOS.
2) Apple News has a permanently saved “story” of a specific magazine issue’s table of contents. No idea how it got saved, but since it isn’t actually a story (it’s a ToC instead) the UI option to “unsave” it is greyed out / unavailable. I reported it to a CSR about four years ago, he took down bug reports, I even sent a screen capture demonstrating the bug… it still persists and Apple provides no mechanism to manually clear all saved story data. I can remove it locally from the device from disabling iCloud sync for Apple News -> selecting yes when prompted to remove local data, but it will still persist in iCloud and there is no way to wipe it there… it’s back as soon as I reenable sync.
Now my lingering issue is with search: Calendar events and Reminders prior to the reinstall date do not appear in search results. This has been an issue for years on both macOS and iOS! Much Google searching was no help.
I wish that premium fix service included useful forums and…search.